NoTrack 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, така че официалните 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 (върху него се начислява таксата):

{
  "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, направен от NoTrack) — и нищо друго: без правила, без филтър по тема. Вашето системно съобщение следва след него и определя персона, стил и всичко останало. Единственото изключение е в Политика за съдържание.

Поточно предаване

Задайте "stream": true и четете server-sent events, точно както при OpenAI. Последният откъс носи 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.
streamtrue за SSE. stream_options.include_usage е винаги включено.
max_tokensТаван за завършването. Промпт + завършване трябва да се вместят в прозорец от 100,000 токени.
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". При наличие на инструменти поточен отговор пристига като по един откъс за всяко извикване, а не токен по токен.
response_format{"type": "json_object"} се поддържа (кажете какъв JSON искате в промпта). json_schema и старото поле functions не се поддържат.

Лимити и заглавки на отговора

ЛимитСтойностПри превишаване
Едновременни заявки на ключ8429 concurrency
Заявки в минута на ключ300429 rate_limit
Контекстен прозорец (промпт + завършване)100,000 токени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.

Грешки

Грешките са JSON със стабилен type; message е за хора и може да се променя.

{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at notrack.ai/api-keys" } }
HTTPtypeКакво да направите
400bodyНевалиден JSON или няма messages.
400context_limitПромптът е твърде дълъг за прозореца от 100,000 токени. Премахнете по-стари реплики.
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 на всеки отговор: $0.15 на 1M входни токени, $0.50 на 1M изходни токени. Входът е всичко, което изпращате (системен промпт, история, новото съобщение); изходът е това, което пише моделът.

Персона — гол модел или персонажът на NoTrack

Всеки ключ има стил, избран на страницата с ключове и превключваем във всеки момент:

Заявка може да замести настройката на ключа, било с поле, било със суфикс към името на модела (за клиенти, които могат да задават само име на модел):

{ "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 на ключ водят до затваряне първо на ключа, после на сметката. Пълният текст е в Политика за допустимо използване.

Поверителност

Промптовете и завършванията не се записват на диск — нито от gateway, нито от серверите на модела. Това, което пазим за заявка, е id на заявката, id на ключа, брой токени и цена, защото това е сметката. Отказите по сигурност се регистрират по категория, без текста. Никой външен доставчик на модел не вижда трафика ви: моделът работи на наши собствени GPU сървъри.

Клиенти и SDK

Уебсайтът на NoTrack и приложението на NoTrack са нашият собствен чат — те нямат поле за 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 включено. Дръжте размера на контекста на 100,000 токени или по-малко.

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 proxy, curl — всеки клиент с опция "OpenAI-compatible" или "custom base URL".

Формулировките на менютата по-горе се различават между версиите на приложенията — ако етикетът не съвпада точно, търсете настройка, която споменава "custom", "OpenAI-compatible" или "base URL".

Ако клиентът не се свързва

Ключове

Въпроси или id на заявка за проверка: поддръжка · [email protected].