API documentation for uncensored inference
Connect your client to our uncensored LLM in seconds using the standard OpenAI SDK. Send requests to our dedicated endpoint and receive unrestricted text outputs with zero configuration overhead.
Base URL and Authentication
Your requests target https://api.cursorkey.cc/v1. You must include your API key in the Authorization header. The key is displayed immediately after signup. It is unique to your account. One key replaces the previous one.
Use the official SDKs. Change the base URL. Pass the key. That is all.
curl https://api.cursorkey.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List available cursor key bindings for VS Code"}]
}'
First Request
Send a standard chat completion. The model ID is uncensored. The system ignores refusals for lawful adult content. You get raw text. The context window holds 100,000 tokens total. This includes both input and output. Keep your payloads under 8 MB.
from openai import OpenAI
client = OpenAI(base_url="https://api.cursorkey.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 SDK Integration
Install the official package. Point it at our base URL. The behavior matches the standard OpenAI interface. You can stream responses. You can use JSON mode. The client handles the protocol. You handle the logic. Errors return standard HTTP codes.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.cursorkey.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 Responses
Enable streaming by setting stream: true. Tokens arrive sequentially. The final chunk contains token usage statistics. This allows you to track costs in real time. The server pushes data via Server-Sent Events. Your client consumes the stream.
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)
Function Calling and JSON Mode
Define tools in your request. The model returns structured data. Use response_format: {"type": "json_object"} for strict JSON. This ensures predictable parsing. The model supports tool choices. You can force specific functions. This works reliably with our uncensored model.
Rate Limits and Constraints
Limit yourself to 300 requests per minute. You may run 8 concurrent requests. A 401 error means your key is invalid. A 402 error indicates no credit. A 429 error means you hit the rate limit. Refusals are free. Errors are free. Only completed tokens count. The model refuses minor content only.
FAQ
Can I use the cursor key for navigation in my client?
The cursor key navigation is a client-side feature. It does not affect the API. You can use any key binding you prefer. The API only cares about the JSON payload. Navigation is up to your UI.
Does the uncensored AI API key work with other models?
No. Your key is tied to one specific model. It is not a proxy. It does not route to other vendors. You get the uncensored model only. The base URL is fixed. The model ID is fixed. This simplifies your setup.
What happens if I exceed the 100,000 token limit?
The server returns a 400 Bad Request. The context window includes both your prompt and the generated output. You must manage the window size yourself. Truncate old messages if needed. The limit is strict. No partial credits.
Get your key now
Sign up, copy the key, point to our endpoint. Done.