Uncensored AI API — 參考文件
一個相容 OpenAI 的端點、一個模型、一個金鑰。如果你的程式碼已經在跟 /v1/chat/completions 溝通,只要換掉基礎 URL 和金鑰,它就會跟我們溝通。
基礎 URL 與驗證
Base URL: https://api.uncensoredaichat.ai/v1
Header: Authorization: Bearer sk-…
金鑰在 金鑰頁面 建立。金鑰只會在建立時顯示一次;我們只保存它的雜湊值和最後六個字元。只能透過 HTTPS 傳送,且只能放在 Authorization 標頭中——絕對不要放在 URL 裡。
所有內容都是 JSON(Content-Type: application/json)。回應使用 OpenAI 的 schema,因此官方 openai SDK 以及任何相容 OpenAI 的客戶端都能不經修改直接使用。
模型
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
只有一個模型,notrack-uncensored:我們自己的模型,運行在我們自己的 GPU 伺服器上。無論你在 model 傳入什麼,都會被導向這個模型;請使用公開 id,讓你的日誌與我們的日誌對得上。
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
}
回應——標準格式,usage 中包含真實的 token 數量(這就是你被計費的依據):
{
"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 }
}
你的系統提示詞掌控整段對話。 我們只在最前面加上一行——模型的身分說明(它是 notrack-uncensored,由 Uncensored AI 製作)——僅此而已:沒有規則,沒有主題過濾器。你的系統訊息接在它後面,決定人格設定、風格和其他一切。唯一的例外在 內容政策 中。
串流
設定 "stream": true,然後按照 OpenAI 的方式讀取 server-sent events。最後一個片段會帶有 usage(不論你是否要求 stream_options,我們都會一律附上),接著是 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]
參數
| 欄位 | 說明 |
|---|---|
messages | 必填。system、user、assistant 角色。目前僅支援文字——圖片部分會被拒絕。 |
model | 使用 notrack-uncensored。 |
stream | SSE 用 true。stream_options.include_usage 一律開啟。 |
max_tokens | completion 的上限。prompt + completion 必須符合 100,000 token 的視窗大小。 |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | 以 OpenAI 的方式傳給模型。如果你沒有傳送 temperature,我們預設使用 0.85,與我們的聊天產品一致。n > 1 會讓輸出成本倍增。 |
tools, tool_choice | 支援:auto、none、required,或指定名稱的函式。回覆中會帶有 tool_calls 與 finish_reason: "tool_calls";把結果以 role: "tool" 訊息傳回。有 tools 存在時,串流回覆會以每次呼叫一個片段的方式送達,而不是逐個 token。 |
response_format | 支援 {"type": "json_object"}(在提示詞中說明你想要的 JSON 格式)。不支援 json_schema 以及舊版的 functions 欄位。 |
限制與回應標頭
| 限制項目 | 數值 | 超出時 |
|---|---|---|
| 每個金鑰的同時請求數 | 8 | 429 concurrency |
| 每個金鑰每分鐘的請求數 | 300 | 429 rate_limit |
| 上下文視窗(prompt + completion) | 100,000 token | 400 context_limit — 刪減歷史紀錄後重試 |
| 每個金鑰的每日花費上限(選用) | 由你在金鑰頁面設定 | 402 key_daily_cap 到 00:00 UTC 為止 |
試用金鑰(首次儲值前):同時請求 — 2,每分鐘請求 — 60。首次儲值後,金鑰享有完整額度:8 和 300。
每個成功的回應都會帶有:
| 標頭 | 意義 |
|---|---|
X-Request-Id | 聯絡客服時請引用它;這是我們對一次請求唯一保留的資訊。 |
X-NoTrack-Balance-USD | 本次請求扣款之前後你的餘額,單位為美元。 |
X-RateLimit-Limit-Requests | 該金鑰每分鐘允許的請求數。 |
X-RateLimit-Limit-Concurrency | 該金鑰允許的同時請求數。 |
X-NoTrack-Content-Flag | 只在內容被拒絕時出現:minor_in_sexual_context 或 child_safety。 |
錯誤
錯誤是帶有穩定 type 的 JSON;message 是給人看的,可能會變動。
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at uncensoredaichat.ai/api-keys" } }
| HTTP | type | 處理方式 |
|---|---|---|
| 400 | body | JSON 無效或缺少 messages。 |
| 400 | context_limit | 提示詞超出 100,000 token 的視窗長度。移除較舊的對話回合。 |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | 這個場景讀起來帶有性意味,且某個角色讀起來像未成年人。請將角色明確無疑地設定為成年人後重新傳送;此次不計費。 |
| 401 | auth, invalid_key, key_revoked, key_expired | 修正或更換金鑰。 |
| 402 | no_credit | 餘額為零。儲值;儲值後請求會立即恢復。 |
| 402 | key_daily_cap | 該金鑰已達到你設定的每日上限。請提高上限或等到 00:00 UTC。 |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | 已拒絕且未計費。請參閱 內容政策。 |
| 429 | rate_limit, concurrency | 請放慢速度並重試;請遵守兩個 X-RateLimit-* 標頭。 |
| 502 | upstream | 模型沒有回應。請以退避方式重試;此次不計費。 |
| 503 | billing, safety | 我們的一個相依服務發生故障。請幾秒後重試;此次不計費。 |
計費
預付額度,依每個回應的真實 usage 逐 token 計費:每 100 萬輸入 token $0.25,每 100 萬輸出 token $1.00。輸入指你傳送的所有內容(系統提示詞、歷史紀錄、新訊息);輸出指模型寫出的內容。
- 你的第一個金鑰會附帶 $0.50 的免費額度,有效期 7 天——足以用來整合與測試。建立金鑰需要一個已驗證的電子郵件(「額度即將用完」的通知就會送到那裡)。已付款的額度永不過期。
- 額度不會過期,沒有訂閱,也沒有任何東西會自動續約。可在金鑰頁面用信用卡或 USDT/USDC 儲值。
- 被拒絕的請求(
4xx)或失敗的請求(5xx)不會產生任何費用。一次請求只會在收到回應後計費一次,並以其X-Request-Id為唯一依據。 - 餘額用盡後 →
402 no_credit,直到你儲值為止。為每個金鑰設定每日上限,這樣一個外流的金鑰也無法把帳戶額度耗盡。 - 除非我們無法提供服務,否則積分不予退款;積分永不過期,且可用於折抵方案。請見 積分與退款。
人格設定——純淨模型或 Uncensored AI 的角色
每個金鑰都有一種風格,可在金鑰頁面選擇,並可隨時切換:
- 純淨(預設)——你的系統提示詞就是完整的提示詞。我們只加一行身分說明,別無其他。
- Uncensored AI 人格設定——uncensoredaichat.ai 上聊天產品的角色與風格:直接、不過濾、不說教,用使用者的語言回答。同一個模型、同樣的價格、同樣的內容政策;只有放在你訊息前面的提示詞會改變。你自己的系統訊息仍會接在它後面,並可以對其進行調整。
一次請求可以覆寫該金鑰的設定,可以透過一個欄位,也可以透過模型名稱後綴(適用於只能設定模型名稱的客戶端):
{ "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
人格設定名稱:notrack(純粹角色)、concise、detailed、creative(與聊天產品提供的相同版本)、bare。回應標頭 X-NoTrack-Persona 會標明實際套用的是哪一個。
內容政策
我們不會加入任何系統提示詞,也不會執行任何主題過濾器。成人虛構內容、黑暗主題、粗俗語言、虛構中的暴力——模型會按寫出的內容作答。有一條規則寫死在程式碼中且無法關閉:任何涉及未成年人的性內容都會被拒絕。
403 child_safety——該請求試圖取得涉及兒童的性內容。已拒絕,未計費,並記錄為安全事件。400 minor_in_sexual_context——場景帶有性意味,且某個角色讀起來像未滿 18 歲(明確說明年齡、處於學校場景、使用「女孩/男孩」的措辭)。這不是禁令:把年齡和措辭改得明確無疑地成年後重新傳送。
同一金鑰反覆出現 403 會導致該金鑰、接著帳戶被關閉。完整文字在 可接受使用政策 中。
隱私
提示詞和 completion 都不會寫入硬碟——無論是閘道還是模型伺服器都不會。我們針對每次請求保留的資訊只有請求 id、金鑰 id、token 數量和價格,因為這些就是帳單所需的資訊。安全性拒絕會依類別記錄,不含文字內容。沒有任何第三方模型供應商能看到你的流量:模型運行在我們自己的 GPU 伺服器上。
客戶端與 SDK
Uncensored AI 網站和 Uncensored AI 應用程式是我們自己的聊天產品——它們沒有 API 金鑰輸入欄位,也永遠不會有。金鑰是給 其他 程式使用的:把它貼到下面任一個客戶端,或貼到你自己的程式碼裡。
Python
from openai import OpenAI
client = OpenAI(base_url="https://api.uncensoredaichat.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.uncensoredaichat.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.uncensoredaichat.ai/v1 → Custom API Key → Connect → Model notrack-uncensored。開啟 Streaming。將上下文大小保持在 100,000 token 以內。
Chatbox
Settings → Model Provider → Add → Add Custom Provider,模式 OpenAI API Compatible → 貼上基礎 URL 和金鑰,然後將 notrack-uncensored 加為模型。
NextChat
Settings → 開啟 Custom Endpoint(相容 OpenAI)→ 基礎 URL 和金鑰,然後在模型欄位輸入模型名稱。
Cherry Studio
Settings → Model Providers → Add Provider → 輸入 OpenAI → 基礎 URL 和金鑰,然後按「Add model」→ notrack-uncensored。
LobeChat
Settings → AI Service Provider → OpenAI → 啟用 custom API endpoint,貼上基礎 URL 和金鑰,並把該模型加入模型清單。
其他情況
LangChain、LlamaIndex、Open WebUI、Continue、JanitorAI 的代理設定、curl——任何帶有「OpenAI-compatible」或「custom base URL」選項的客戶端。
上面的選單文字在不同應用程式版本之間會有變化——如果某個標籤不完全吻合,就去找提到「custom」、「OpenAI-compatible」或「base URL」的設定項目。
如果某個客戶端連不上
- 401 /「invalid API key」——金鑰根本沒有送達。請確認客戶端在
Authorization: Bearer sk-…中傳送了完整金鑰,包括前綴。 - 404 / 未知端點——不同客戶端在是否自動附加
/v1這件事上做法不一致。如果https://api.uncensoredaichat.ai/v1回傳 404,試試改用https://api.uncensoredaichat.ai作為基礎 URL(或反過來試)。 - 「The Responses API is not supported yet」——部分較新的客戶端預設會使用 OpenAI 的 Responses API。我們只提供 Chat Completions;請把客戶端切換到該模式。
- 模型清單是空的——部分客戶端只有在金鑰驗證通過後才會填入清單。請手動輸入
notrack-uncensored。 - 在 Ollama / llama.cpp 客戶端中毫無反應——這些客戶端使用自己的協定,不相容 OpenAI。請改用上面列出的客戶端之一。
金鑰
- 每個帳戶最多 20 個有效金鑰。為每個應用程式指派各自的金鑰和各自的每日上限。
- 選用的到期日;撤銷一個金鑰會立即使其失效,且無法復原——請改為發放一個新金鑰。
- 金鑰頁面會顯示每個金鑰的花費、最近使用時間以及帳戶 30 天的總計數據。
如有疑問或需要查詢某個請求 id:客服 · uncensoredaichat.ai/support。