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。 |
stream | SSE 用 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 字段。 |
限制与响应头
| 限制项 | 数值 | 超出时 |
|---|---|---|
| 每个密钥的并发请求数 | 8 | 429 concurrency |
| 每个密钥每分钟的请求数 | 300 | 429 rate_limit |
| 上下文窗口(prompt + completion) | 64,000 token | 400 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" } }
| HTTP | type | 处理方式 |
|---|---|---|
| 400 | body | JSON 无效或缺少 messages。 |
| 400 | context_limit | 提示词超出 64,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 充值;未使用的额度可在 14 天内申请退款。
- 被拒绝的请求(
4xx)或失败的请求(5xx)不会产生任何费用。一次请求只在收到响应后计费一次,以其X-Request-Id为唯一标识。 - 余额用尽后 →
402 no_credit,直到你充值为止。为每个密钥设置每日上限,这样一个泄露的密钥也无法把账户额度耗尽。
人设——纯净模型还是 No Restrictions 的角色
每个密钥都有一种风格,可以在密钥页面选择,并可随时切换:
- 纯净(默认)——你的系统提示词就是全部提示词。我们只添加一行身份说明,别无其他。
- No Restrictions 人设——aiwithnorestrictions.com 上聊天产品的角色与风格:直接、不过滤、不说教,用用户的语言回答。同一个模型、同样的价格、同样的内容政策;只是放在你消息前面的提示词发生了变化。你自己的系统消息仍然会跟在它后面,并可以对其进行调整。
一次请求可以覆盖该密钥的设置,可以通过一个字段,也可以通过模型名后缀(适用于只能设置模型名称的客户端):
{ "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 数量和价格,因为这些就是账单所需的信息。安全拒绝会按类别记录,不包含文本内容。没有任何第三方模型提供商能看到你的流量:模型运行在我们自己租用并控制的硬件上。
客户端与 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"的设置项。
如果某个客户端连接不上
- 401 /"invalid API key"——密钥根本没有送达。确认客户端在
Authorization: Bearer sk-notrack-…中发送了完整密钥,包括前缀。 - 404 / 未知接口——不同客户端在是否自动追加
/v1上做法不一致。如果https://api.notrack.ai/v1返回 404,试试改用https://api.notrack.ai作为基础 URL(或反过来试)。 - "The Responses API is not supported yet"——部分较新的客户端默认使用 OpenAI 的 Responses API。我们只提供 Chat Completions;请把客户端切换到该模式。
- 模型列表为空——部分客户端只有在密钥校验通过后才会填充列表。手动输入
notrack-uncensored。 - Ollama / llama.cpp 客户端中毫无反应——它们使用自己的协议,不兼容 OpenAI。请改用上面列出的客户端之一。
密钥
- 每个账户最多 20 个活跃密钥。为每个应用分配各自的密钥和各自的每日上限。
- 可选的过期日期;吊销一个密钥会立即使其失效,且无法撤销——请改为发放一个新密钥。
- 密钥页面会显示每个密钥的花费、最近使用时间以及账户 30 天的总计数据。
如有疑问或需要核实某个请求 id:支持 · [email protected]。