No Restrictions API — 参考文档

一个兼容 OpenAI 的接口,一个模型,一个密钥。如果你的代码已经在和 /v1/chat/completions 通信,只需更换基础 URL 和密钥,就能与我们通信。

基础 URL 与鉴权

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

密钥在 密钥页面 创建。密钥只在创建时显示一次;我们只保存它的哈希值和最后六位字符。只能通过 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:我们自己的伴侣模型,运行在我们自己的硬件上。无论你在 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,由 No Restrictions 制作)——仅此而已:没有规则,没有主题过滤器。你的系统消息紧随其后,决定人设、风格和其他一切。唯一的例外在 内容政策 中。

流式传输

设置 "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。
streamSSE 用 true。stream_options.include_usage 始终开启。
max_tokens对 completion 的上限。prompt + completion 必须适配 64,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 字段。

限制与响应头

限制项数值超出时
每个密钥的并发请求数8429 concurrency
每个密钥每分钟的请求数300429 rate_limit
上下文窗口(prompt + completion)64,000 token400 context_limit — 裁剪历史记录后重试
每个密钥的每日消费上限(可选)由你在密钥页面设置402 key_daily_cap 到 00:00 UTC 为止

每个成功的响应都会携带:

响应头含义
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 aiwithnorestrictions.com/api-keys" } }
HTTPtype处理方式
400bodyJSON 无效或缺少 messages。
400context_limit提示词超出 64,000 token 的窗口长度。删除较早的对话轮次。
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context该场景读起来带有性意味,且某个角色读起来像未成年人。请将角色明确无歧义地设为成年人后重新发送;此次不计费。
401auth, invalid_key, key_revoked, key_expired修复或更换密钥。
402no_credit余额为零。充值;充值后请求会立即恢复。
402key_daily_cap该密钥已达到你设置的每日上限。请提高上限或等到 00:00 UTC。
403content_policy + X-NoTrack-Content-Flag: child_safety已拒绝且未计费。参见 内容政策。
429rate_limit, concurrency请放慢速度并重试;遵守两个 X-RateLimit-* 响应头。
502upstream模型未作出回应。请以退避方式重试;此次不计费。
503billing, safety我们的一个依赖服务出现故障。请几秒后重试;此次不计费。

计费

预付费余额,按每个响应的真实 usage 逐 token 计费:每 100 万输入 token $0.25,每 100 万输出 token $1.00。输入指你发送的所有内容(系统提示词、历史记录、新消息);输出指模型写出的内容。

人设——纯净模型还是 No Restrictions 的角色

每个密钥都有一种风格,可以在密钥页面选择,并可随时切换:

一次请求可以覆盖该密钥的设置,可以通过一个字段,也可以通过模型名后缀(适用于只能设置模型名称的客户端):

{ "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 会导致该密钥、随后账户被关闭。完整文本在 可接受使用政策 中。

隐私

提示词和 completion 都不会写入磁盘——无论是网关还是模型服务器都不会。我们为每次请求保留的信息只有请求 id、密钥 id、token 数量和价格,因为这些就是账单所需的信息。安全拒绝会按类别记录,不包含文本内容。没有任何第三方模型提供商能看到你的流量:模型运行在我们自己租用并控制的硬件上。

客户端与 SDK

No Restrictions 网站和 No Restrictions 应用是我们自己的聊天产品——它们没有 API 密钥输入框,也永远不会有。密钥是给 其他 程序使用的:将它粘贴到下面任意一个客户端中,或粘贴到你自己的代码里。

Python

from openai import OpenAI
client = OpenAI(base_url="https://api.notrack.ai/v1", api_key="sk-notrack-…")
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.notrack.ai/v1", apiKey: process.env.NOTRACK_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.notrack.ai/v1 → Custom API Key → Connect → Model notrack-uncensored。开启 Streaming。将上下文大小保持在 64,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"的设置项。

如果某个客户端连接不上

密钥

如有疑问或需要核实某个请求 id:支持 · [email protected]。