tr ▾

No Filter: Step-by-Step Integration Guide

Integrating a no filter API lets your application generate text without content refusals, using the exact same SDK tools you already know. This guide walks you through configuring your client, sending requests, and handling streaming, all while keeping costs transparent and predictable.

Last updated

Summary

  • Use the standard OpenAI SDK with a simple base_url change to access the uncensored model.
  • Streaming via SSE provides real-time tokens and accurate usage tracking in the final chunk.
  • JSON mode and function calling work identically to standard OpenAI endpoints for structured data.
  • Pricing is strictly prepaid crypto credit at $0.15 per 1M input tokens and $0.50 per 1M output tokens.

Why switch to a no filter API?

Switching to an uncensored model removes the friction of unexpected refusals during generation. Standard providers often block content based on subjective policies, which disrupts workflows for creative writing, roleplay, or sensitive research. By using an API designed for unrestricted output, you gain predictable behavior for lawful adult topics. Our model handles these requests without arbitrary cuts, ensuring your application delivers the full response.

Cost efficiency also drives many developers to this shift. You pay only for what you use, with no monthly subscription baggage. Errors and refusals do not consume your credits, so you only spend on actual text generated. This transparent model means you can predict your exact spend per request.

When to stay with standard models

Standard APIs still offer better safety for general consumer apps. If your users expect strict brand safety, an uncensored model might feel too raw. However, for developers who control the context or target niche audiences, the freedom is essential.

Prerequisites: Setting up your environment

Start by ensuring your development environment supports Python, Node.js, or any language with an OpenAI-compatible client. You need a stable internet connection and a valid API key from your account dashboard.

  • Install your preferred language runtime (Python 3.8+ or Node.js 16+).
  • Create a new directory for your project.
  • Generate an API key via the Get API key page using Google or email.

The key appears immediately after signup. Keep it secure, as it grants access to your prepaid credit. No phone number is required, keeping your setup fast and private.

Step 1: Install the OpenAI SDK

Install the official SDK for your chosen language to handle HTTP requests automatically. This library manages retries, headers, and serialization, saving you from writing boilerplate code.

For Python, use pip to install the package. For Node.js, use npm. This ensures compatibility with the standard parameters like temperature and top_p.

from openai import OpenAI

client = OpenAI(base_url="https://api.notfilter.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)
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.notfilter.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);

These libraries abstract the underlying REST calls, letting you focus on prompt design rather than network details.

Step 2: Configure the Base URL

Point your SDK client to our base URL to route requests to our uncensored servers. This single change directs traffic away from standard providers.

curl https://api.notfilter.cc/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "what is the capital of france"}]
  }'

The endpoint is https://api.notfilter.cc/v1. Pass your API key in the Authorization header. The model ID is uncensored. This ID is specific to our open-weight model, tuned for unrestricted output. It is not GPT or Claude.

Verify connectivity by calling GET /v1/models. This returns a list of available models, confirming your key works. If you get a 200 OK, your environment is ready.

Step 3: Send your first uncensored request

Construct a standard chat completion request with your system and user messages. The model processes these tokens and returns text without content filters.

from openai import OpenAI

client = OpenAI(base_url="https://api.notfilter.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)

Set the model to uncensored. Define your prompt in the messages array. The response contains the generated text in choices[0].message.content. This text is ready for display or further processing.

Remember the context window is 100,000 tokens total. Max output is 16,000 tokens. If you exceed this, the response truncates. Adjust your input length accordingly to avoid wasting credits on partial responses.

Step 4: Enable streaming for real-time responses

Enable streaming to receive tokens as they are generated. This improves perceived latency for end-users. You get partial text immediately.

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)

Set stream=true in your request. The SDK yields chunks as they arrive. Token usage data appears in the final chunk. This allows accurate billing tracking without waiting for the full response.

Streaming handles network interruptions gracefully. If a connection drops, you can resume or retry. This is crucial for long-form content generation where responses might take seconds.

Step 5: Handle JSON mode for structured data

Use JSON mode to force the model to output valid JSON. This is essential for integrating with other software systems. You set response_format to {"type": "json_object"}.

The model adheres to this constraint, returning parseable data. You can then parse this string into objects in your code. This eliminates the need for post-processing regex hacks.

from openai import OpenAI

client = OpenAI(base_url="https://api.notfilter.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)

Ensure your prompt clearly describes the JSON schema. The model follows instructions closely when guided properly. This feature works alongside function calling for complex workflows.

Step 6: Implement function calling

Define tools in your request to let the model call specific functions. Pass a list of tool definitions in the tools parameter.

The model decides when to call a tool based on the context. It returns tool calls with arguments. You execute these functions and send the results back to the model. This enables dynamic, interactive applications.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.notfilter.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);

Use tool_choice to force a specific function or let the model decide. This flexibility allows you to build agents that can retrieve data, calculate values, or trigger external APIs. Our model supports this standard OpenAI format.

Step 7: Monitor usage and costs

Track your credit balance and token usage via the dashboard. Prices are $0.15 per 1M input tokens and $0.50 per 1M output tokens.

Prepaid credit never expires. You can top up with USDT (TRC20) or USDC (Base) at any time. Minimum top-up is $20. Bonuses apply for larger amounts.

  • $50 top-up gets +5% bonus.
  • $100 top-up gets +10% bonus.
  • $200 top-up gets +15% bonus.

Error responses do not consume credits. This protects your budget from failed requests. Check the usage tab to see exact token counts per key. Adjust your application logic if costs spike unexpectedly.

Frequently asked questions

Which payment methods do you accept?

Crypto only: USDT on TRC20 or USDC on Base, any whole amount from $20 to $500. Bonus credit applies from $50.

Does this API support streaming for real-time responses?

Yes, enable streaming by setting <code>stream=true</code>. You receive tokens as they generate, with usage data in the final chunk. This reduces perceived latency for users and allows immediate display of partial text.

What payment methods are accepted for top-ups?

We accept crypto only: USDT (TRC20) or USDC (Base). Top-ups range from $20 to $500. Bonus credit is added for larger amounts, with up to +15% extra on $200 top-ups.

Is the uncensored model free for unlimited use?

No, it uses a prepaid credit model. You pay $0.15 per 1M input tokens and $0.50 per 1M output tokens. Credits never expire, and errors are free. There is no monthly subscription fee.

Obtain your key now

Register, copy the key, and update the endpoint. That is all.