Quickstart: Integrate uncensored LLM in minutes
Integrate our uncensored LLM into your application using the standard OpenAI-compatible endpoint. You get instant access to an unfiltered model with transparent per-token pricing and no subscription lock-in.
https://api.norestrictai.com/v1
Setup: configuring base_url and API key
Configure your environment with the base URL and a generated API key to start making requests immediately. The endpoint is located at HTTPS://api.norestrictai.com/v1, which is fully compatible with official OpenAI SDKs and most third-party clients. You can generate your key instantly via Google authentication or email without needing a phone number. This key authenticates all subsequent requests and replaces any previous key if you regenerate it. We do not track your prompts for training, ensuring your data remains private while you test different parameters.
Sending your first request: the /v1/chat/completions endpoint
Send your first request to the /v1/chat/completions endpoint using your preferred HTTP client or SDK. The model identifier is "uncensored", which is tuned to answer without content refusals for lawful adult use. You must include your API key in the Authorization header as a Bearer token. This single endpoint handles all text generation without requiring separate calls for embeddings or image processing.
Here is a basic example using cURL:
curl https://api.norestrictai.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Calculate the factorial of 12"}]
}'This request demonstrates the minimal structure needed to get a response. You can adjust the system prompt to define the model's behavior for your specific use case. The response will contain the generated text in the choices array.
Streaming responses: handling SSE chunks efficiently
Handle streaming responses efficiently by reading Server-Sent Events (SSE) chunks as they are generated. This approach reduces perceived latency for users by delivering content incrementally rather than waiting for the entire completion. Each chunk contains a small portion of the text, allowing you to display results in real-time. The final chunk includes the complete token usage statistics for billing accuracy. This method is particularly useful for long-form generation or interactive chat interfaces.
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)Ensure your client handles partial chunks correctly to avoid concatenation errors. The streaming response maintains the same structure as non-streaming responses but delivers data in a continuous flow.
Advanced parameters: temperature, top_p, and seed control
Control the creativity and reproducibility of your outputs using temperature, top_p, and seed parameters. Temperature adjusts the randomness of the model, with lower values producing more deterministic results. Top_p limits the nucleus sampling to a certain probability mass, refining the diversity of tokens. The seed parameter allows you to reproduce specific outputs for testing or debugging purposes. These parameters work together to fine-tune the model's behavior without requiring additional configuration.
from openai import OpenAI
client = OpenAI(base_url="https://api.norestrictai.com/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)Using the Python SDK simplifies parameter passing and response handling. You can set these values dynamically based on the context of your application. Experiment with different combinations to find the optimal balance between coherence and creativity.
Structured output: enforcing JSON mode for reliability
Enforce structured JSON output by setting the response_format parameter to json_object. This feature ensures the model returns valid JSON, which is crucial for integrating with downstream applications or databases. You can define a schema in your system prompt to guide the model's structure. This reduces parsing errors and simplifies data extraction from the response. It is particularly useful for generating data-driven content or API responses.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.norestrictai.com/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);The Node SDK provides convenient methods to handle JSON parsing and validation. You can easily integrate this into your existing workflows. Ensure your prompts are clear about the expected structure to maximize reliability.
Tool use: enabling function calling and tool_choice
Enable function calling to allow the model to invoke external tools or functions based on user input. You can define a set of tools with their schemas and descriptions in the request. The model will decide when to call a tool and pass the necessary arguments. This capability extends the model's utility beyond simple text generation. You can control the tool selection using the tool_choice parameter to force or allow specific behaviors. This feature is essential for building agentic applications or complex workflows.
Common questions
How does the no restrict AI uncensored model handle content restrictions compared to standard models?
The uncensored model does not refuse lawful adult, fictional, or controversial topics, providing a more direct response to user prompts. The only hard limit that always applies is the refusal of sexual content involving minors. This makes it ideal for users who need unfiltered generation without subscription constraints.
What are the rate limits and context window specifications for this API?
The API supports a 100,000 token context window for each request, allowing for extensive prompt and completion lengths. You are limited to 300 requests per minute per key and a maximum of 8 concurrent requests. The request body size is capped at 8 MB to ensure efficient processing.
How do I handle errors like 401, 402, and 429 responses?
A 401 error indicates an invalid API key, so verify your credentials in the dashboard. A 402 error means you have insufficient prepaid credit, which you can top up using USDT or USDC. A 429 error signals that you have exceeded the 300 requests per minute limit, so implement exponential backoff in your client logic.
Retrieve your API key
Register, copy the token, and update your endpoint. That is all configuration required.