Quickstart for Kimicode users
Get your API key and make your first uncensored request in under two minutes using standard OpenAI-compatible SDKs.
Prerequisites
Before writing code, create an account at kimicode.cc using Google or email. You will receive a single API key immediately. There is no phone verification and no credit card required. Your account starts with $0.50 in trial credit valid for seven days. If you need more capacity, top up via crypto (USDT on TRC20 or USDC on Base) starting at $10. Credit never expires, and errors or refusals do not consume tokens.
Ensure your development environment has Node.js (v18+) or Python 3.8+. This API strictly follows the openai client specification, meaning you can swap in our endpoint without changing your library logic. We serve one uncensored model under the ID uncensored.
Install SDK
Install the official OpenAI SDK for your preferred language. This ensures compatibility with our streaming, function calling, and JSON mode features.
For Python, use pip to install the standard library:
pip install openai
For Node.js, install the npm package:
npm install openai
These libraries handle the HTTP formatting automatically. You do not need a vendor-specific client. The kimicode API accepts standard parameters like temperature, top_p, and max_tokens.
Initialize Client
Configure your client object with the kimicode base URL and your API key. The base URL is https://api.kimicode.cc/v1. Set the api_key to the value you received upon signup. This configuration replaces the default api.openai.com endpoint.
- Base URL:
https://api.kimicode.cc/v1 - Model:
uncensored - Auth: Bearer token via
api_key
Do not mix this key with other vendors. It works exclusively with the kimicode endpoint. The client will verify the key on the first request. If the key is invalid, you will receive a 401 error immediately.
Make a Request
Send a standard chat completion request. The model ID must be uncensored. You can adjust max_tokens up to 16,000. If omitted, the default is 2,048. The context window is 64,000 tokens total for prompt and completion combined.
- Input: Text messages in the
messagesarray. - Output: Text response in
choices[0].message.content.
This endpoint supports JSON mode via response_format: {"type": "json_object"}. It does not support embeddings, images, or audio. Focus on high-quality text generation without content refusals for lawful adult topics.
Streaming Responses
Enable streaming by setting stream: true. The API returns Server-Sent Events (SSE). Each chunk contains partial text. Token usage statistics are included in the final chunk of the stream. This allows real-time display of output without waiting for the full response.
- Stream flag: Set to
truein the request body. - Event type:
chat.completion.chunk - Data: Contains
delta.contentfor text parts.
Streaming does not change pricing. You pay for total tokens processed. Errors during streaming are handled gracefully. If the connection drops, you can restart the request. The uncensored model maintains coherence even over long streams within the 64k limit.
Limits, Errors, and Context
Monitor your usage limits: 300 requests per minute per key, 8 concurrent requests, and an 8 MB request body. If you exceed the rate limit, you receive a 429 error. If your prepaid credit is exhausted, you receive a 402 error; top up via crypto to resume. A 401 error indicates an invalid or missing API key. Note that failed requests and refusals do not consume tokens. The hard content limit blocks sexual content involving minors. All other lawful adult content is permitted.
Function Calling
Define tools in the tools parameter. The model returns tool calls in the response. Use tool_choice to enforce specific behavior. This feature works identically to the OpenAI standard. Parse the tool calls in your code and execute them. Send the results back in subsequent messages. The kimicode API handles tool definitions efficiently. Ensure your JSON schema is valid. Function calling does not require additional credits beyond token usage. It is ideal for building agents or structured data extraction workflows.
cURL
curl https://api.kimicode.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.kimicode.cc/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.kimicode.cc/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Streaming
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)What the API supports
The numbers below are the real limits of this API, not marketing. Compare them with what your app needs.
| Parameter | Details |
|---|---|
| Protocol | OpenAI Chat Completions schema; official openai SDKs work unchanged |
| Base URL | https://api.kimicode.cc/v1 |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Model | uncensored |
| Authentication | Authorization: Bearer YOUR_KEY |
| Context window | 64,000 tokens (prompt + completion together) |
| Tools / tool calls | Yes — tools, tool_choice; replies carry tool_calls, also when streaming; send results back as role: tool |
| SSE streaming | Supported (stream: true), usage included at the end |
| Sampling parameters | temperature, top_p, stop, seed and the two penalties are passed through |
| Structured output | response_format: {"type": "json_object"} |
| Max output | 16,000 tokens max; 2,048 if max_tokens is not set |
| Request size | up to 8 MB per request |
| Concurrency | up to 8 in parallel per key |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Rate limit | 300/min per key |
| Trial credit | $0.50 for 7 days, no card |
| Billing | prepaid credit, charged by real token usage; errors and refusals are free |
| Top-up | USDT (TRC20) or USDC (Base), any whole amount from $10 to $500 |
| Subscription | paid credit never expires, no subscription |
| Bonus credit | +5% from $50, +10% from $100 |
| Token prices | input $0.25 / 1M tokens, output $1.00 / 1M tokens |
| Content | uncensored for adults; the only hard rule: no sexual content involving minors |
| Account | Google or e-mail and password |
| Keys | one key per account, regenerate any time (the old one stops working) |
When a request fails
Errors come back as JSON with a stable type; failed and refused requests are not billed.
| Code | Type | Meaning |
|---|---|---|
400 | bad_request | malformed request or too long for the context window |
401 | missing_key · invalid_key · key_revoked | no key, wrong key, or a key replaced by a newer one |
402 | no_credit | balance is empty — top up, requests resume at once |
403 | content_blocked | sexual content involving minors — refused, not billed |
404 | not_found | unknown endpoint |
413 | request_too_large | body over 8 MB |
429 | rate_limited · concurrency | over 300/min or 8 parallel — back off and retry |
503 | upstream_busy | temporary overload, retry shortly |
Questions and answers
What happens if I make a request that is refused?
Refused requests do not consume your prepaid credit. You can retry immediately without losing tokens. The only hard refusal is for sexual content involving minors, which is always blocked.
Can I use the same API key for multiple projects?
Yes, one account equals one active API key. You can use this single key across multiple applications or services. If you need a separate key, generating a new one replaces the previous active key.
How do I top up my credit?
Top up using USDT (TRC20) or USDC (Base). Minimum top-up is $10. Amounts of $50 or more receive bonus credit. Payments are processed via the crypto gateway on the pricing page. No credit cards or PayPal are accepted.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.
Get API key