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

CampNotes
messagesObligatori. Rols system, user, assistant. Només text per ara — les parts d'imatge es rebutgen.
modelUtilitza notrack-uncensored.
streamtrue per a SSE. stream_options.include_usage sempre està activat.
max_tokensLí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, nEs 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_choiceCompatible: 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ímitValorEn superar-lo
Sol·licituds concurrents per clau8429 concurrency
Sol·licituds per minut per clau300429 rate_limit
Finestra de context (prompt + completion)100,000 tokens400 context_limit — retalla l'historial i torna-ho a provar
Despesa diària per clau (opcional)definit per tu a la pàgina de claus402 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çaleraSignificat
X-Request-IdCita-la quan escriguis al suport; és l'única cosa que conservem d'una sol·licitud.
X-NoTrack-Balance-USDEl teu crèdit abans que aquesta sol·licitud es va cobrar, en dòlars.
X-RateLimit-Limit-RequestsSol·licituds per minut permeses per a aquesta clau.
X-RateLimit-Limit-ConcurrencySol·licituds paral·leles permeses per a aquesta clau.
X-NoTrack-Content-FlagNomé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" } }
HTTPtypeQuè fer
400bodyJSON no vàlid o sense messages.
400context_limitEl prompt és massa llarg per a la finestra de 100,000 tokens. Elimina torns més antics.
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextL'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.
401auth, invalid_key, key_revoked, key_expiredCorregeix o substitueix la clau.
402no_creditEl saldo és zero. Recarrega; les sol·licituds es reprenen immediatament.
402key_daily_capAquesta clau ha arribat al límit diari que has fixat. Augmenta'l o espera fins a les 00:00 UTC.
403content_policy + X-NoTrack-Content-Flag: child_safetyRebutjat i no facturat. Consulta Política de contingut.
429rate_limit, concurrencyRedueix el ritme i torna-ho a provar; respecta les dues capçaleres X-RateLimit-*.
502upstreamEl model no ha respost. Torna-ho a provar amb backoff; no es factura.
503billing, safetyUna 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.

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:

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 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

Claus

Preguntes o un id de sol·licitud a revisar: suport · [email protected].