API de NoTrack — referència
Un endpoint compatible amb OpenAI, un model, una clau. Si el teu codi ja parla amb /v1/chat/completions, canvia l'URL base i la clau, i parlarà amb nosaltres.
URL base i autenticació
Base URL: https://api.notrack.ai/v1
Header: Authorization: Bearer sk-notrack-…
Les claus es creen a la pàgina de claus. Una clau es mostra només una vegada, en crear-se; nosaltres desem un hash i els seus últims sis caràcters. Envia-la només per HTTPS i només a la capçalera Authorization — mai en un URL.
Tot és JSON (Content-Type: application/json). Les respostes utilitzen l'esquema d'OpenAI, de manera que els SDK oficials de openai i qualsevol client compatible amb OpenAI funcionen sense canvis.
Models
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
Hi ha un únic model, notrack-uncensored: el nostre propi model, servit en els nostres propis servidors GPU. El que passis com a model s'hi encamina; utilitza l'id públic perquè els teus registres coincideixin amb els nostres.
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
}
Resposta — la forma estàndard, amb comptes reals de tokens a usage (és el que es factura):
{
"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 }
}
El teu system prompt governa la conversa. Afegim exactament una línia al davant — la identitat del model (que és notrack-uncensored, fet per NoTrack) — i res més: sense regles, sense filtre de temes. El teu missatge de sistema el segueix i decideix la persona, l'estil i tota la resta. L'única excepció és a Política de contingut.
Streaming
Defineix "stream": true i llegeix server-sent events, exactament com amb OpenAI. El fragment final porta usage (sempre l'incloem, tant si demanes stream_options com si no), i després 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]
Paràmetres
| Camp | Notes |
|---|---|
messages | Obligatori. Rols system, user, assistant. Només text per ara — les parts d'imatge es rebutgen. |
model | Utilitza notrack-uncensored. |
stream | true per a SSE. stream_options.include_usage sempre està activat. |
max_tokens | Límit de la completion. Prompt + completion han de cabre a la finestra de 100,000 tokens. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | Es passa al model igual que a OpenAI. Si no envies temperature utilitzem 0,85, el mateix que al nostre xat. n > 1 multiplica el cost de la sortida. |
tools, tool_choice | Compatible: auto, none, required, o una funció amb nom. La resposta porta tool_calls i finish_reason: "tool_calls"; envia el resultat de tornada com a missatge role: "tool". Amb eines presents, una resposta en streaming arriba com un fragment per crida, no token a token. |
response_format | {"type": "json_object"} és compatible (indica quin JSON vols al prompt). json_schema i el camp obsolet functions no ho són. |
Límits i capçaleres de resposta
| Límit | Valor | En superar-lo |
|---|---|---|
| Sol·licituds concurrents per clau | 8 | 429 concurrency |
| Sol·licituds per minut per clau | 300 | 429 rate_limit |
| Finestra de context (prompt + completion) | 100,000 tokens | 400 context_limit — retalla l'historial i torna-ho a provar |
| Despesa diària per clau (opcional) | definit per tu a la pàgina de claus | 402 key_daily_cap fins a les 00:00 UTC |
Claus de prova (abans de la primera recàrrega): sol·licituds simultànies — 2, sol·licituds per minut — 60. Després de la primera recàrrega, la clau obté els límits complets: 8 i 300.
Cada resposta correcta porta:
| Capçalera | Significat |
|---|---|
X-Request-Id | Cita-la quan escriguis al suport; és l'única cosa que conservem d'una sol·licitud. |
X-NoTrack-Balance-USD | El teu crèdit abans que aquesta sol·licitud es va cobrar, en dòlars. |
X-RateLimit-Limit-Requests | Sol·licituds per minut permeses per a aquesta clau. |
X-RateLimit-Limit-Concurrency | Sol·licituds paral·leles permeses per a aquesta clau. |
X-NoTrack-Content-Flag | Només en un rebuig de contingut: minor_in_sexual_context o child_safety. |
Errors
Els errors són JSON amb un type estable; el message és per a humans i pot canviar.
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at notrack.ai/api-keys" } }
| HTTP | type | Què fer |
|---|---|---|
| 400 | body | JSON no vàlid o sense messages. |
| 400 | context_limit | El prompt és massa llarg per a la finestra de 100,000 tokens. Elimina torns més antics. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | L'escena es llegeix com a sexual i un personatge es llegeix com a menor. Fes que els personatges siguin inequívocament adults i torna a enviar; no es factura. |
| 401 | auth, invalid_key, key_revoked, key_expired | Corregeix o substitueix la clau. |
| 402 | no_credit | El saldo és zero. Recarrega; les sol·licituds es reprenen immediatament. |
| 402 | key_daily_cap | Aquesta clau ha arribat al límit diari que has fixat. Augmenta'l o espera fins a les 00:00 UTC. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Rebutjat i no facturat. Consulta Política de contingut. |
| 429 | rate_limit, concurrency | Redueix el ritme i torna-ho a provar; respecta les dues capçaleres X-RateLimit-*. |
| 502 | upstream | El model no ha respost. Torna-ho a provar amb backoff; no es factura. |
| 503 | billing, safety | Una de les nostres dependències està caiguda. Torna-ho a provar en uns segons; no es factura. |
Facturació
Crèdit prepagat, cobrat per token a partir de la usage real de cada resposta: $0.15 per 1M de tokens d'entrada, $0.50 per 1M de tokens de sortida. L'entrada és tot el que envies (system prompt, historial, el missatge nou); la sortida és el que escriu el model.
- La teva primera clau ve amb $0.50 de crèdit gratuït, vàlid durant 7 dies — suficient per integrar i provar. Cal un correu confirmat per a una clau (és on va "el crèdit s'està acabant"). El crèdit de pagament no caduca mai.
- El crèdit no caduca, no hi ha subscripció i res es renova sol. Recarrega amb targeta o en USDT/USDC a la pàgina de claus.
- No es cobra res per les sol·licituds rebutjades (
4xx) ni per les fallides (5xx). Una sol·licitud es cobra una única vegada, després de la resposta, segons el seuX-Request-Id. - El saldo s'esgota →
402 no_creditfins que recarreguis. Fixa un límit diari a cada clau perquè una clau filtrada no pugui buidar el compte. - Els crèdits no són reemborsables llevat que no puguem prestar el nostre servei; mai no caduquen i es poden aplicar a un pla. Vegeu Crèdits i devolucions.
Persona — model pur o el personatge de NoTrack
Cada clau té un estil, triat a la pàgina de claus i intercanviable en qualsevol moment:
- Pur (per defecte) — el teu system prompt és tot el prompt. Afegim una línia d'identitat i res més.
- Persona de NoTrack — el personatge i l'estil del xat a notrack.ai: directe, sense filtres, sense moralitzar, respon en la llengua de l'usuari. Mateix model, mateix preu, mateixa política de contingut; només canvia el prompt davant dels teus missatges. El teu propi missatge de sistema el segueix igualment i pot ajustar-lo.
Una sol·licitud pot substituir la configuració de la clau, ja sigui amb un camp o amb un sufix al nom del model (per a clients que només poden fixar un nom de 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
Noms de persona: notrack (el personatge senzill), concise, detailed, creative (les mateixes variants que ofereix el xat), bare. La capçalera de resposta X-NoTrack-Persona indica quina s'ha aplicat.
Política de contingut
No afegim cap system prompt ni executem cap filtre de temes. Ficció per a adults, temes foscos, llenguatge fort, violència en la ficció — el model respon tal com està escrit. Una regla s'aplica al codi i no es pot desactivar: qualsevol contingut sexual que impliqui un menor es rebutja.
403 child_safety— la sol·licitud buscava contingut sexual que implicava un infant. Rebutjada, no facturada, registrada com a incident de seguretat.400 minor_in_sexual_context— l'escena és sexual i un personatge es llegeix com a menor de 18 anys (edat indicada, entorn escolar, plantejament "nena/nen"). No és una prohibició: fes que les edats i el plantejament siguin inequívocament adults i torna a enviar.
403 repetides en una clau porten al tancament de la clau, i després del compte. El text complet és a la Política d'ús acceptable.
Privadesa
Els prompts i les completions no s'escriuen a disc — ni pel gateway, ni pels servidors del model. Per a cada sol·licitud conservem l'id de sol·licitud, l'id de la clau, els comptes de tokens i el preu, perquè això és la factura. Els rebutjos de seguretat es registren per categoria, sense el text. Cap proveïdor de model extern veu mai el teu trànsit: el model funciona en els nostres propis servidors GPU.
Clients i SDK
El web de NoTrack i l'app de NoTrack són el nostre propi xat — no tenen cap camp per a una clau d'API i no en tindran mai. Una clau és per a programes altres: enganxa-la en un dels clients de sota, o en el teu propi codi.
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 activat. Mantén la mida del context a 100,000 tokens o menys.
Chatbox
Settings → Model Provider → Add → Add Custom Provider, mode OpenAI API Compatible → enganxa l'URL base i la clau, i després afegeix notrack-uncensored com a model.
NextChat
Settings → activa Custom Endpoint (compatible amb OpenAI) → URL base i clau, i després escriu el nom del model al camp de model.
Cherry Studio
Settings → Model Providers → Add Provider → escriu OpenAI → URL base i clau, i després "Add model" → notrack-uncensored.
LobeChat
Settings → AI Service Provider → OpenAI → activa custom API endpoint, enganxa l'URL base i la clau, i afegeix el model a la llista de models.
Qualsevol altra cosa
LangChain, LlamaIndex, Open WebUI, Continue, configuració de proxy de JanitorAI, curl — qualsevol client amb una opció "OpenAI-compatible" o "custom base URL".
El text dels menús anteriors canvia entre versions de l'app — si una etiqueta no coincideix exactament, busca la configuració que esmenti "custom", "OpenAI-compatible" o "base URL".
Si un client no es connecta
- 401 / "invalid API key" — la clau mai ha arribat. Confirma que el client envia
Authorization: Bearer sk-notrack-…amb la clau completa, prefix inclòs. - 404 / endpoint desconegut — els clients no es posen d'acord sobre si afegeixen
/v1ells mateixos. Sihttps://api.notrack.ai/v1dona 404, provahttps://api.notrack.aicom a URL base en el seu lloc (o al contrari). - "The Responses API is not supported yet" — alguns clients més nous utilitzen per defecte la Responses API d'OpenAI. Nosaltres només servim Chat Completions; canvia el client a aquest mode.
- Llista de models buida — alguns clients només l'omplen després d'una comprovació de clau vàlida. Escriu
notrack-uncensoreda mà. - No passa res en un client Ollama / llama.cpp — aquests parlen el seu propi protocol, no compatible amb OpenAI. Utilitza un dels clients anteriors en el seu lloc.
Claus
- Fins a 20 claus actives per compte. Dona a cada app la seva pròpia clau i el seu propi límit diari.
- Data de caducitat opcional; revocar una clau l'atura immediatament i no es pot desfer — emet-ne una nova en el seu lloc.
- La pàgina de claus mostra la despesa per clau, l'últim ús i els totals de 30 dies del compte.
Preguntes o un id de sol·licitud a revisar: suport · [email protected].