No Filter AI API — tài liệu tham khảo

Một endpoint tương thích OpenAI, một model, một key. Nếu code của bạn đã nói chuyện với /v1/chat/completions, chỉ cần đổi base URL và key, nó sẽ nói chuyện với chúng tôi.

Base URL & xác thực

Base URL:  https://api.nofilterai.ai/v1
Header:    Authorization: Bearer sk-…

Key được tạo tại trang key. Key chỉ hiển thị một lần, khi tạo; chúng tôi lưu hash của nó và sáu ký tự cuối. Chỉ gửi key qua HTTPS và chỉ trong header Authorization — không bao giờ đặt trong URL.

Mọi thứ đều là JSON (Content-Type: application/json). Phản hồi dùng schema của OpenAI, nên các SDK chính thức của openai và mọi client tương thích OpenAI hoạt động mà không cần thay đổi gì.

Model

GET /v1/models

{ "object": "list",
  "data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }

Chỉ có một model, notrack-uncensored: model riêng của chúng tôi, chạy trên máy chủ GPU riêng của chúng tôi. Bất kể bạn gửi gì làm model, nó đều được định tuyến đến model này; hãy dùng id công khai để log của bạn khớp với log của chúng tôi.

Chat completions

POST /v1/chat/completions

{
  "model": "notrack-uncensored",
  "messages": [
    { "role": "system",    "content": "You are Mira, a wry bartender in 1920s Berlin." },
    { "role": "user",      "content": "Evening. What's good tonight?" }
  ],
  "max_tokens": 400,
  "temperature": 0.9
}

Phản hồi — cấu trúc chuẩn, với số token thực trong usage (đây là thứ bạn bị tính tiền):

{
  "id": "chatcmpl-…", "object": "chat.completion", "model": "notrack-uncensored",
  "choices": [ { "index": 0, "finish_reason": "stop",
                 "message": { "role": "assistant", "content": "…" } } ],
  "usage": { "prompt_tokens": 41, "completion_tokens": 118, "total_tokens": 159 }
}

System prompt của bạn kiểm soát cuộc trò chuyện. Chúng tôi chỉ thêm đúng một dòng ở đầu — nhận diện model (rằng đó là notrack-uncensored, do No Filter AI tạo ra) — và không gì khác: không quy tắc, không bộ lọc chủ đề. System message của bạn theo sau nó và quyết định persona, phong cách và mọi thứ còn lại. Ngoại lệ duy nhất nằm ở Chính sách nội dung.

Streaming

Đặt "stream": true và đọc server-sent event, giống hệt như OpenAI. Đoạn cuối cùng mang usage (chúng tôi luôn kèm theo, bất kể bạn có yêu cầu stream_options hay không), sau đó là data: [DONE].

data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Ev"}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"ening"}}]}
…
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":41,"completion_tokens":118,"total_tokens":159}}
data: [DONE]

Tham số

TrườngGhi chú
messagesBắt buộc. Vai trò system, user, assistant. Hiện chỉ hỗ trợ văn bản — các phần hình ảnh sẽ bị từ chối.
modelDùng notrack-uncensored.
streamtrue cho SSE. stream_options.include_usage luôn được bật.
max_tokensGiới hạn cho completion. Prompt + completion phải nằm trong cửa sổ 100,000 token.
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nĐược chuyển đến model như trong OpenAI. Nếu bạn không gửi temperature, chúng tôi dùng 0.85, giống như chat của chúng tôi. n > 1 sẽ nhân chi phí đầu ra.
tools, tool_choiceHỗ trợ: auto, none, required, hoặc một hàm được đặt tên. Phản hồi mang tool_calls và finish_reason: "tool_calls"; gửi kết quả trở lại dưới dạng message role: "tool". Khi có tools, phản hồi dạng stream sẽ đến thành một đoạn cho mỗi lần gọi, không phải từng token.
response_format{"type": "json_object"} được hỗ trợ (nói rõ JSON bạn muốn trong prompt). json_schema và trường cũ functions không được hỗ trợ.

Giới hạn & header phản hồi

Giới hạnGiá trịKhi vượt quá
Số request đồng thời mỗi key8429 concurrency
Số request mỗi phút mỗi key300429 rate_limit
Context window (prompt + completion)100,000 token400 context_limit — cắt lịch sử và thử lại
Chi tiêu hàng ngày mỗi key (tùy chọn)do bạn đặt trên trang key402 key_daily_cap đến 00:00 UTC

Khóa dùng thử (trước lần nạp đầu tiên): yêu cầu đồng thời — 2, yêu cầu mỗi phút — 60. Sau lần nạp đầu tiên, khóa được nhận giới hạn đầy đủ: 8 và 300.

Mỗi phản hồi thành công mang theo:

HeaderÝ nghĩa
X-Request-IdTrích dẫn khi liên hệ hỗ trợ; đây là thứ duy nhất chúng tôi lưu về một request.
X-NoTrack-Balance-USDSố dư của bạn trước khi request này bị trừ tiền, tính bằng đô la.
X-RateLimit-Limit-RequestsSố request mỗi phút được phép cho key này.
X-RateLimit-Limit-ConcurrencySố request song song được phép cho key này.
X-NoTrack-Content-FlagChỉ khi bị từ chối nội dung: minor_in_sexual_context hoặc child_safety.

Lỗi

Lỗi là JSON với type cố định; message dành cho con người và có thể thay đổi.

{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at nofilterai.ai/api-keys" } }
HTTPtypeViệc cần làm
400bodyJSON không hợp lệ hoặc thiếu messages.
400context_limitPrompt quá dài cho cửa sổ 100,000 token. Bỏ các lượt hội thoại cũ hơn.
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextCảnh này đọc như mang tính khiêu dâm và một nhân vật đọc như là trẻ vị thành niên. Hãy làm cho các nhân vật rõ ràng là người trưởng thành không mập mờ và gửi lại; không bị tính tiền.
401auth, invalid_key, key_revoked, key_expiredSửa hoặc thay key.
402no_creditSố dư bằng không. Nạp tiền; request sẽ tiếp tục ngay lập tức.
402key_daily_capKey này đã đạt trần chi tiêu hàng ngày mà bạn đặt. Tăng trần hoặc chờ đến 00:00 UTC.
403content_policy + X-NoTrack-Content-Flag: child_safetyBị từ chối và không bị tính tiền. Xem Chính sách nội dung.
429rate_limit, concurrencyGiảm tốc và thử lại; tuân theo cả hai header X-RateLimit-*.
502upstreamModel không trả lời. Thử lại với backoff; không bị tính tiền.
503billing, safetyMột dịch vụ phụ thuộc của chúng tôi đang gặp sự cố. Thử lại sau vài giây; không bị tính tiền.

Thanh toán

Tín dụng trả trước, được tính theo token dựa trên usage thực của mỗi phản hồi: $0.15 cho mỗi 1 triệu token đầu vào, $0.50 cho mỗi 1 triệu token đầu ra. Đầu vào là mọi thứ bạn gửi (system prompt, lịch sử, message mới); đầu ra là những gì model viết ra.

Persona — model thuần hoặc nhân vật của No Filter AI

Mỗi key có một phong cách, được chọn trên trang key và có thể chuyển đổi bất cứ lúc nào:

Một request có thể ghi đè cài đặt của key, bằng một trường hoặc bằng hậu tố tên model (cho các client chỉ có thể đặt tên model):

{ "model": "notrack-uncensored", "notrack": { "persona": "notrack" }, "messages": [ … ] }

{ "model": "notrack-uncensored:notrack", "messages": [ … ] }      // same thing, by model name
{ "model": "notrack-uncensored:bare",    "messages": [ … ] }      // force the bare model on a persona key

Tên persona: notrack (nhân vật đơn giản), concise, detailed, creative (các biến thể giống như chat cung cấp), bare. Header phản hồi X-NoTrack-Persona cho biết loại nào đã được áp dụng.

Chính sách nội dung

Chúng tôi không thêm system prompt nào và không chạy bộ lọc chủ đề nào. Tiểu thuyết dành cho người lớn, chủ đề đen tối, ngôn ngữ mạnh, bạo lực trong hư cấu — model trả lời đúng như được viết. Có một quy tắc được thực thi trong code và không thể tắt: mọi nội dung khiêu dâm liên quan đến trẻ vị thành niên đều bị từ chối.

Việc lặp lại 403 trên một key sẽ dẫn đến việc khóa key đó, rồi khóa tài khoản. Toàn văn nằm trong Chính sách Sử dụng Được phép.

Quyền riêng tư

Prompt và completion không được ghi vào đĩa — không phải bởi gateway, không phải bởi các máy chủ model. Những gì chúng tôi lưu cho mỗi request là request id, key id, số lượng token và giá, vì đó là hóa đơn. Các lần từ chối vì lý do an toàn được ghi lại theo danh mục, không kèm văn bản. Không nhà cung cấp model bên thứ ba nào từng thấy lưu lượng của bạn: model chạy trên các máy chủ GPU của chính chúng tôi.

Client & SDK

Website No Filter AI và app No Filter AI là chat riêng của chúng tôi — chúng không có trường nhập API key và sẽ không bao giờ có. Key dành cho các chương trình khác: dán nó vào một trong các client dưới đây, hoặc vào code của riêng bạn.

Python

from openai import OpenAI
client = OpenAI(base_url="https://api.nofilterai.ai/v1", api_key="sk-…")
stream = client.chat.completions.create(model="notrack-uncensored",
    messages=[{"role": "user", "content": "Hello"}], stream=True)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Node.js

import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nofilterai.ai/v1", apiKey: process.env.API_KEY });
const r = await client.chat.completions.create({ model: "notrack-uncensored",
  messages: [{ role: "user", content: "Hello" }] });
console.log(r.choices[0].message.content);

SillyTavern

API Connections → API: Chat Completion → Source: Custom (OpenAI-compatible) → Custom Endpoint https://api.nofilterai.ai/v1 → Custom API Key → Connect → Model notrack-uncensored. Bật Streaming. Giữ kích thước context ở mức bằng hoặc thấp hơn 100,000 token.

Chatbox

Settings → Model Provider → Add → Add Custom Provider, mode OpenAI API Compatible → dán base URL và key, sau đó thêm notrack-uncensored làm model.

NextChat

Settings → bật Custom Endpoint (tương thích OpenAI) → base URL và key, sau đó gõ tên model vào trường model.

Cherry Studio

Settings → Model Providers → Add Provider → gõ OpenAI → base URL và key, sau đó "Add model" → notrack-uncensored.

LobeChat

Settings → AI Service Provider → OpenAI → bật custom API endpoint, dán base URL và key, và thêm model vào danh sách model.

Thứ khác

LangChain, LlamaIndex, Open WebUI, Continue, cài đặt proxy của JanitorAI, curl — bất kỳ client nào có tùy chọn "OpenAI-compatible" hoặc "custom base URL".

Cách diễn đạt menu ở trên thay đổi giữa các phiên bản app — nếu một nhãn không khớp chính xác, hãy tìm cài đặt nào đề cập đến "custom", "OpenAI-compatible", hoặc "base URL".

Nếu một client không kết nối được

Key

Câu hỏi hoặc request id cần xem xét: hỗ trợ · nofilterai.ai/support.