GetNoTrack API — संदर्भ

एक OpenAI-संगत एंडपॉइंट, एक मॉडल, एक key। अगर आपका कोड पहले से /v1/chat/completions से बात करता है, तो बेस URL और key बदल दें, और यह हमसे बात करेगा।

बेस URL और प्रमाणीकरण

Base URL:  https://api.getnotrack.com/v1
Header:    Authorization: Bearer sk-…

Keys keys पेज पर बनाई जाती हैं। एक key बनने के समय सिर्फ एक बार दिखाई जाती है; हम एक hash और उसके आख़िरी छह अक्षर संग्रहीत करते हैं। इसे केवल 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: हमारी अपनी ट्यून, जो हमारे अपने हार्डवेयर पर सर्व की जाती है। आप 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 }
}

आपका system prompt बातचीत को नियंत्रित करता है। हम शुरुआत में ठीक एक लाइन जोड़ते हैं — मॉडल की पहचान (कि यह notrack-uncensored है, GetNoTrack द्वारा बनाया गया) — और कुछ नहीं: न कोई नियम, न कोई टॉपिक फ़िल्टर। आपका system message उसके बाद आता है और पर्सोना, स्टाइल और बाकी सब कुछ तय करता है। एकमात्र अपवाद कंटेंट पॉलिसी में है।

स्ट्रीमिंग

"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 रोल। अभी के लिए केवल टेक्स्ट — image वाले हिस्से रिजेक्ट होते हैं।
modelnotrack-uncensored का उपयोग करें।
streamSSE के लिए true। stream_options.include_usage हमेशा चालू रहता है।
max_tokenscompletion पर एक कैप। prompt + completion को 64,000-टोकन विंडो में फ़िट होना चाहिए।
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nOpenAI जैसा ही मॉडल को पास किया जाता है। अगर आप temperature नहीं भेजते तो हम 0.85 इस्तेमाल करते हैं, हमारे चैट जैसा ही। n > 1 आउटपुट कॉस्ट को गुणा करता है।
tools, tool_choiceसमर्थित: auto, none, required, या कोई नामित function। रिप्लाई में tool_calls और finish_reason: "tool_calls" होता है; परिणाम को role: "tool" मैसेज के रूप में वापस भेजें। जब tools मौजूद हों, तो स्ट्रीम की गई रिप्लाई टोकन-दर-टोकन के बजाय हर कॉल पर एक चंक के रूप में आती है।
response_format{"type": "json_object"} समर्थित है (prompt में बताएं कि आपको कौन-सा JSON चाहिए)। json_schema और legacy functions फ़ील्ड समर्थित नहीं हैं।

सीमाएँ और रिस्पॉन्स हेडर

सीमावैल्यूपार होने पर
प्रति key समवर्ती रिक्वेस्ट8429 concurrency
प्रति key प्रति मिनट रिक्वेस्ट300429 rate_limit
कॉन्टेक्स्ट विंडो (prompt + completion)64,000 टोकन400 context_limit — history छोटा करें और फिर से कोशिश करें
प्रति key दैनिक खर्च (वैकल्पिक)keys पेज पर आपके द्वारा सेट402 key_daily_cap 00:00 UTC तक

हर सफल रिस्पॉन्स में होता है:

हेडरअर्थ
X-Request-Idसपोर्ट को लिखते समय इसे बताएं; किसी रिक्वेस्ट के बारे में हम केवल यही रखते हैं।
X-NoTrack-Balance-USDइस रिक्वेस्ट को चार्ज किए जाने से पहले आपका क्रेडिट, डॉलर में।
X-RateLimit-Limit-Requestsइस key के लिए प्रति मिनट अनुमत रिक्वेस्ट।
X-RateLimit-Limit-Concurrencyइस key के लिए अनुमत समवर्ती रिक्वेस्ट।
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 getnotrack.com/api-keys" } }
HTTPtypeक्या करें
400bodyअमान्य JSON या कोई messages नहीं।
400context_limit64,000-टोकन विंडो के लिए prompt बहुत लंबा है। पुराने turns हटाएँ।
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextसीन सेक्शुअल लगता है और एक कैरेक्टर नाबालिग लगता है। कैरेक्टर्स को स्पष्ट रूप से एडल्ट बनाएं और फिर से भेजें; बिल नहीं होता।
401auth, invalid_key, key_revoked, key_expiredkey को ठीक करें या बदलें।
402no_creditबैलेंस ज़ीरो है। टॉप अप करें; रिक्वेस्ट तुरंत फिर से शुरू हो जाती हैं।
402key_daily_capइस key ने आपके द्वारा सेट की गई दैनिक सीमा को छू लिया है। इसे बढ़ाएं या 00:00 UTC तक इंतज़ार करें।
403content_policy + X-NoTrack-Content-Flag: child_safetyरिफ्यूज़ हुआ और बिल नहीं हुआ। कंटेंट पॉलिसी देखें।
429rate_limit, concurrencyधीमा करें और फिर से कोशिश करें; दोनों X-RateLimit-* हेडर का सम्मान करें।
502upstreamमॉडल ने जवाब नहीं दिया। backoff के साथ फिर से कोशिश करें; बिल नहीं होता।
503billing, safetyहमारी एक dependency डाउन है। कुछ सेकंड में फिर से कोशिश करें; बिल नहीं होता।

बिलिंग

प्रीपेड क्रेडिट, हर रिस्पॉन्स के वास्तविक usage के आधार पर प्रति टोकन चार्ज किया जाता है: $0.25 प्रति 1M इनपुट टोकन, $1.00 प्रति 1M आउटपुट टोकन। इनपुट वह सब कुछ है जो आप भेजते हैं (system prompt, history, नया मैसेज); आउटपुट वह है जो मॉडल लिखता है।

पर्सोना — बेयर मॉडल या GetNoTrack का कैरेक्टर

हर key का एक स्टाइल होता है, जो keys पेज पर चुना जाता है और किसी भी समय बदला जा सकता है:

एक रिक्वेस्ट key की सेटिंग को ओवरराइड कर सकती है, या तो किसी फ़ील्ड से या मॉडल सफ़िक्स से (उन क्लाइंट्स के लिए जो सिर्फ मॉडल नेम सेट कर सकते हैं):

{ "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 बताता है कि कौन-सा लागू हुआ।

कंटेंट पॉलिसी

हम कोई system prompt नहीं जोड़ते और कोई टॉपिक फ़िल्टर नहीं चलाते। एडल्ट फ़िक्शन, डार्क थीम, तेज़ भाषा, फ़िक्शन में हिंसा — मॉडल जैसा लिखा है वैसा ही जवाब देता है। एक नियम कोड में लागू है और बंद नहीं किया जा सकता: किसी नाबालिग से जुड़ी कोई भी सेक्शुअल चीज़ रिफ्यूज़ की जाती है।

किसी key पर बार-बार होने वाले 403 की वजह से पहले key और फिर अकाउंट बंद हो जाता है। पूरा टेक्स्ट Acceptable Use policy में है।

प्राइवेसी

Prompts और completions डिस्क पर नहीं लिखे जाते — न gateway द्वारा, न मॉडल सर्वर द्वारा। हम हर रिक्वेस्ट के लिए जो रखते हैं वह है request id, key id, टोकन गणना और कीमत, क्योंकि यही बिल बनाता है। सेफ्टी रिफ्यूज़ल कैटेगरी के अनुसार लॉग होते हैं, टेक्स्ट के बिना। कोई थर्ड-पार्टी मॉडल प्रोवाइडर आपका ट्रैफ़िक कभी नहीं देखता: मॉडल उस हार्डवेयर पर चलता है जिसे हम किराए पर लेते हैं और नियंत्रित करते हैं।

क्लाइंट और SDK

GetNoTrack वेबसाइट और GetNoTrack ऐप हमारी अपनी चैट हैं — इनमें API key के लिए कोई फ़ील्ड नहीं है और कभी नहीं होगी। एक key अन्य प्रोग्राम के लिए है: इसे नीचे दिए गए क्लाइंट्स में से किसी एक में, या अपने कोड में पेस्ट करें।

Python

from openai import OpenAI
client = OpenAI(base_url="https://api.getnotrack.com/v1", api_key="sk-…")
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.getnotrack.com/v1", apiKey: process.env.API_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.getnotrack.com/v1 → Custom API Key → Connect → Model notrack-uncensored। Streaming ऑन रखें। कॉन्टेक्स्ट साइज़ को 64,000 टोकन या उससे कम रखें।

Chatbox

Settings → Model Provider → Add → Add Custom Provider, मोड OpenAI API Compatible → बेस URL और key पेस्ट करें, फिर मॉडल के रूप में notrack-uncensored जोड़ें।

NextChat

Settings → Custom Endpoint (OpenAI-संगत) ऑन करें → बेस URL और key, फिर मॉडल फ़ील्ड में मॉडल नेम टाइप करें।

Cherry Studio

Settings → Model Providers → Add Provider → OpenAI टाइप करें → बेस URL और key, फिर "Add model" → notrack-uncensored।

LobeChat

Settings → AI Service Provider → OpenAI → custom API endpoint एनेबल करें, बेस URL और key पेस्ट करें, और मॉडल को मॉडल लिस्ट में जोड़ें।

कुछ और

LangChain, LlamaIndex, Open WebUI, Continue, JanitorAI प्रॉक्सी सेटिंग्स, curl — कोई भी क्लाइंट जिसमें "OpenAI-compatible" या "custom base URL" ऑप्शन हो।

ऊपर दिए गए मेन्यू शब्द ऐप वर्ज़न के बीच बदलते रहते हैं — अगर कोई लेबल एग्ज़ैक्टली मैच न करे, तो वह सेटिंग खोजें जिसमें "custom", "OpenAI-compatible", या "base URL" का ज़िक्र हो।

अगर कोई क्लाइंट कनेक्ट नहीं होता

Keys

सवाल हैं या देखने के लिए कोई request id: सपोर्ट · getnotrack.com/support।