NoTrack API — referenca
Jedan endpoint kompatibilan sa OpenAI, jedan model, jedan ključ. Ako vaš kod već komunicira sa /v1/chat/completions, promenite osnovni URL i ključ i komuniciraće sa nama.
Osnovni URL i autentikacija
Base URL: https://api.notrack.ai/v1
Header: Authorization: Bearer sk-notrack-…
Ključevi se kreiraju na stranici ključeva. Ključ se prikazuje samo jednom, prilikom kreiranja; čuvamo njegov heš i poslednjih šest karaktera. Šaljite ga samo preko HTTPS i samo u zaglavlju Authorization — nikada u URL-u.
Sve je u JSON formatu (Content-Type: application/json). Odgovori koriste OpenAI šemu, tako da zvanični openai SDK-ovi i svaki klijent kompatibilan sa OpenAI radi bez izmena.
Modeli
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
Postoji jedan model, notrack-uncensored: naš sopstveni model, koji radi na našim sopstvenim GPU serverima. Sve što prosledite kao model se usmerava ka njemu; koristite javni id da se vaši logovi poklapaju sa našim.
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
}
Odgovor — standardni oblik, sa stvarnim brojem tokena u usage (to je osnova za naplatu):
{
"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 }
}
Vaš sistemski prompt upravlja razgovorom. Na početak dodajemo tačno jednu liniju — identitet modela (da je to notrack-uncensored, koji je napravio NoTrack) — i ništa drugo: nikakva pravila, nikakav filter tema. Vaša sistemska poruka je nastavlja i odlučuje o personi, stilu i svemu ostalom. Jedini izuzetak je u Politika sadržaja.
Striming
Postavite "stream": true i čitajte server-sent events, potpuno kao kod OpenAI. Poslednji deo nosi usage (uvek ga uključujemo, bez obzira da li tražite stream_options), pa zatim 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]
Parametri
| Polje | Napomene |
|---|---|
messages | Obavezno. Uloge system, user, assistant. Za sada samo tekst — delovi sa slikom se odbijaju. |
model | Koristite notrack-uncensored. |
stream | true za SSE. stream_options.include_usage je uvek uključeno. |
max_tokens | Ograničenje za completion. Prompt + completion moraju stati u prozor od 100,000 tokena. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | Prosleđuje se modelu kao u OpenAI. Ako ne pošaljete temperature, koristimo 0.85, isto kao naš chat. n > 1 multiplicira cenu output-a. |
tools, tool_choice | Podržano: auto, none, required, ili imenovana funkcija. Odgovor nosi tool_calls i finish_reason: "tool_calls"; rezultat pošaljite nazad kao poruku role: "tool". Kada su prisutni alati, striming odgovor stiže kao jedan deo po pozivu, a ne token po token. |
response_format | {"type": "json_object"} je podržano (u promptu navedite kakav JSON želite). json_schema i zastareo functions nisu. |
Ograničenja i zaglavlja odgovora
| Ograničenje | Vrednost | Kada se premaši |
|---|---|---|
| Istovremeni zahtevi po ključu | 8 | 429 concurrency |
| Zahtevi po minuti po ključu | 300 | 429 rate_limit |
| Kontekstni prozor (prompt + completion) | 100,000 tokena | 400 context_limit — smanjite istoriju i pokušajte ponovo |
| Dnevna potrošnja po ključu (opcionalno) | podešava se od vas na stranici ključeva | 402 key_daily_cap do 00:00 UTC |
Probni ključevi (pre prve uplate): istovremenih zahteva — 2, zahteva u minuti — 60. Posle prve uplate ključ dobija pune limite: 8 i 300.
Svaki uspešan odgovor nosi:
| Zaglavlje | Značenje |
|---|---|
X-Request-Id | Navedite ga kada pišete podršci; to je jedino što čuvamo o zahtevu. |
X-NoTrack-Balance-USD | Vaš kredit pre je ovaj zahtev naplaćen, u dolarima. |
X-RateLimit-Limit-Requests | Broj zahteva po minuti dozvoljen za ovaj ključ. |
X-RateLimit-Limit-Concurrency | Broj paralelnih zahteva dozvoljen za ovaj ključ. |
X-NoTrack-Content-Flag | Samo pri odbijanju sadržaja: minor_in_sexual_context ili child_safety. |
Greške
Greške su u JSON formatu sa stabilnim type; message je za ljude i može se menjati.
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at notrack.ai/api-keys" } }
| HTTP | type | Šta uraditi |
|---|---|---|
| 400 | body | Nevažeći JSON ili nedostaje messages. |
| 400 | context_limit | Prompt je previše dugačak za prozor od 100,000 tokena. Uklonite starije poteze. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | Scena se čita kao seksualna, a lik se čita kao maloletan. Učinite likove jednoznačno punoletnim i ponovo pošaljite; se ne naplaćuje. |
| 401 | auth, invalid_key, key_revoked, key_expired | Popravite ili zamenite ključ. |
| 402 | no_credit | Stanje je nula. Dopunite; zahtevi se odmah nastavljaju. |
| 402 | key_daily_cap | Ovaj ključ je dostigao dnevni limit koji ste postavili. Povećajte ga ili sačekajte do 00:00 UTC. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Odbijeno i nenaplaćeno. Pogledajte Politika sadržaja. |
| 429 | rate_limit, concurrency | Smanjite tempo i pokušajte ponovo; poštujte oba zaglavlja X-RateLimit-*. |
| 502 | upstream | Model nije odgovorio. Pokušajte ponovo sa odlaganjem; se ne naplaćuje. |
| 503 | billing, safety | Jedna od naših zavisnosti ne radi. Pokušajte ponovo za nekoliko sekundi; se ne naplaćuje. |
Naplata
Unapred plaćen kredit, naplaćuje se po tokenu na osnovu stvarnog usage svakog odgovora: $0.15 po 1M ulaznih tokena, $0.50 po 1M izlaznih tokena. Input je sve što pošaljete (sistemski prompt, istorija, nova poruka); output je ono što napiše model.
- Vaš prvi ključ dolazi sa $0.50 besplatnog kredita, koji važi 7 dana — dovoljno za integraciju i testiranje. Potreban je potvrđen e-mail za ključ (tu stiže obaveštenje „kredit se troši“). Plaćeni kredit nikada ne ističe.
- Kredit ne ističe, nema pretplate i ništa se ne obnavlja samo od sebe. Dopunite karticom ili u USDT/USDC na stranici ključeva.
- Ne naplaćuje se ništa za odbijene zahteve (
4xx) ili neuspele (5xx). Zahtev se naplaćuje jednom, nakon odgovora, na osnovu njegovogX-Request-Id. - Stanje se potroši →
402 no_creditdok ne dopunite. Postavite dnevni limit na svakom ključu, tako da procureli ključ ne može isprazniti nalog. - Krediti se ne vraćaju osim ako ne možemo da pružimo našu uslugu; nikad ne ističu i mogu se primeniti na pretplatu. Pogledajte Krediti i vraćanje novca.
Persona — čist model ili NoTrack karakter
Svaki ključ ima stil, koji se bira na stranici ključeva i može se promeniti u bilo kom trenutku:
- Čist (podrazumevano) — vaš sistemski prompt je ceo prompt. Dodajemo jednu liniju identiteta i ništa više.
- NoTrack persona — karakter i stil čata na notrack.ai: direktan, nefiltriran, bez moralisanja, odgovara na jeziku korisnika. Isti model, ista cena, ista politika sadržaja; menja se samo prompt ispred vaših poruka. Vaša sopstvena sistemska poruka i dalje ga sledi i može ga podesiti.
Zahtev može prepisati podešavanje ključa, bilo poljem ili sufiksom naziva modela (za klijente koji mogu podesiti samo naziv modela):
{ "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
Nazivi persona: notrack (jednostavan karakter), concise, detailed, creative (iste varijante koje nudi chat), bare. Zaglavlje odgovora X-NoTrack-Persona govori koja je primenjena.
Politika sadržaja
Ne dodajemo nikakav sistemski prompt i ne pokrećemo nikakav filter tema. Fikcija za odrasle, mračne teme, snažan jezik, nasilje u fikciji — model odgovara tačno kako je napisano. Jedno pravilo je sprovedeno u kodu i ne može se isključiti: sve seksualno sa učešćem maloletnika se odbija.
403 child_safety— zahtev je tražio seksualni sadržaj sa učešćem deteta. Odbijeno, nenaplaćeno, zabeleženo kao bezbednosni incident.400 minor_in_sexual_context— scena je seksualna i lik se čita kao mlađi od 18 godina (naveden uzrast, školsko okruženje, okvir „devojčica/dečak“). Nije zabrana: učinite uzrast i okvir jednoznačno punoletnim i ponovo pošaljite.
Ponovljeni 403 na ključu vode do zatvaranja ključa, a zatim naloga. Kompletan tekst je u Politici prihvatljivog korišćenja.
Privatnost
Promptovi i odgovori se ne upisuju na disk — ni od strane gateway-a, ni od strane servera modela. Ono što čuvamo po zahtevu je id zahteva, id ključa, broj tokena i cena, jer to čini račun. Bezbednosna odbijanja se zapisuju po kategoriji, bez teksta. Nijedan treći dobavljač modela nikada ne vidi vaš saobraćaj: model radi na našim sopstvenim GPU serverima.
Klijenti i SDK-ovi
NoTrack sajt i NoTrack aplikacija su naš sopstveni chat — nemaju polje za API ključ i nikada neće imati. Ključ je namenjen drugih programima: nalepite ga u jedan od klijenata ispod, ili u sopstveni kod.
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. Striming uključen. Održavajte veličinu konteksta na ili ispod 100,000 tokena.
Chatbox
Settings → Model Provider → Add → Add Custom Provider, režim OpenAI API Compatible → nalepite osnovni URL i ključ, zatim dodajte notrack-uncensored kao model.
NextChat
Settings → uključite Custom Endpoint (kompatibilno sa OpenAI) → osnovni URL i ključ, zatim upišite naziv modela u polje za model.
Cherry Studio
Settings → Model Providers → Add Provider → upišite OpenAI → osnovni URL i ključ, zatim „Add model“ → notrack-uncensored.
LobeChat
Settings → AI Service Provider → OpenAI → uključite custom API endpoint, nalepite osnovni URL i ključ, i dodajte model na listu modela.
Nešto drugo
LangChain, LlamaIndex, Open WebUI, Continue, podešavanja proxy-ja za JanitorAI, curl — svaki klijent sa opcijom „OpenAI-compatible“ ili „custom base URL“.
Formulacije menija iznad se razlikuju između verzija aplikacije — ako se oznaka ne poklapa tačno, potražite podešavanje koje pominje „custom“, „OpenAI-compatible“ ili „base URL“.
Ako se klijent ne povezuje
- 401 / „invalid API key“ — ključ nikada nije stigao. Potvrdite da klijent šalje
Authorization: Bearer sk-notrack-…sa celim ključem, uključujući prefiks. - 404 / nepoznat endpoint — klijenti se razlikuju po tome da li sami dodaju
/v1. Akohttps://api.notrack.ai/v1vraća 404, probajtehttps://api.notrack.aikao osnovni URL (ili obrnuto). - „The Responses API is not supported yet“ — neki novi klijenti podrazumevano koriste OpenAI Responses API. Mi podržavamo samo Chat Completions; prebacite klijenta na taj režim.
- Prazna lista modela — neki klijenti je popunjavaju samo nakon uspešne provere ključa. Upišite
notrack-uncensoredručno. - Ništa se ne dešava u Ollama / llama.cpp klijentu — oni govore svoj sopstveni protokol, nekompatibilan sa OpenAI. Umesto toga koristite jedan od klijenata iznad.
Ključevi
- Do 20 aktivnih ključeva po nalogu. Dajte svakoj aplikaciji njen sopstveni ključ i njen sopstveni dnevni limit.
- Opcioni datum isticanja; opoziv ključa ga odmah zaustavlja i ne može se poništiti — izdajte novi umesto toga.
- Stranica ključeva prikazuje potrošnju po ključu, poslednju upotrebu i 30-dnevne zbirove naloga.
Pitanja ili id zahteva za pregled: podrška · [email protected].