NoTrack API — রেফারেন্স

একটি OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট, একটি মডেল, একটি key। আপনার কোড যদি ইতিমধ্যে /v1/chat/completions-এর সাথে কথা বলে, base URL এবং key বদলে দিন — সেটা আমাদের সাথে কথা বলবে।

Base URL ও প্রমাণীকরণ

Base URL:  https://api.notrack.ai/v1
Header:    Authorization: Bearer sk-notrack-…

Key তৈরি হয় 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: আমাদের নিজস্ব মডেল, আমাদের নিজস্ব 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-এ প্রকৃত token গণনা সহ (এর উপরেই বিল হয়):

{
  "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, NoTrack দ্বারা তৈরি) — আর কিছুই নয়: কোনো নিয়ম নয়, কোনো টপিক ফিল্টার নয়। আপনার system message এর পরে আসে এবং পার্সোনা, স্টাইল ও বাকি সবকিছু নির্ধারণ করে। একমাত্র ব্যতিক্রম কন্টেন্ট পলিসি-এ।

স্ট্রিমিং

"stream": true সেট করুন এবং server-sent events পড়ুন, ঠিক OpenAI-এর মতো। সবশেষ chunk-এ 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 অবশ্যই 100,000-token উইন্ডোতে ফিট হতে হবে।
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nOpenAI-এর মতোই মডেলে পাস করা হয়। temperature না পাঠালে আমরা 0.85 ব্যবহার করি, যা আমাদের চ্যাটেও একই। n > 1 হলে output খরচ গুণিত হয়।
tools, tool_choiceসমর্থিত: auto, none, required, বা একটি নামযুক্ত function। রিপ্লাইতে tool_calls এবং finish_reason: "tool_calls" থাকে; ফলাফল role: "tool" মেসেজ হিসেবে ফিরিয়ে পাঠান। tools থাকলে স্ট্রিমড রিপ্লাই টোকেন-বাই-টোকেনের বদলে প্রতি কলে এক chunk আসে।
response_format{"type": "json_object"} সমর্থিত (prompt-এ কী JSON চান তা বলুন)। json_schema এবং লিগ্যাসি functions ফিল্ড সমর্থিত নয়।

সীমা ও রেসপন্স হেডার

সীমামানঅতিক্রম করলে
প্রতি key সমসাময়িক রিকোয়েস্ট8429 concurrency
প্রতি key প্রতি মিনিট রিকোয়েস্ট300429 rate_limit
কনটেক্সট উইন্ডো (prompt + completion)100,000 token400 context_limit — history ছোট করে আবার চেষ্টা করুন
প্রতি key দৈনিক খরচ (ঐচ্ছিক)keys পেজে আপনার সেট করা402 key_daily_cap 00:00 UTC পর্যন্ত

ট্রায়াল কী (প্রথম টপ-আপের আগে): একসাথে অনুরোধ — 2, প্রতি মিনিটে অনুরোধ — 60। প্রথম টপ-আপের পরে কী পুরো সীমা পায়: 8 ও 300।

প্রতিটি সফল রেসপন্সে থাকে:

হেডারঅর্থ
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 notrack.ai/api-keys" } }
HTTPtypeকী করবেন
400bodyঅবৈধ JSON বা messages নেই।
400context_limit100,000-token উইন্ডোর জন্য prompt অনেক লম্বা। পুরনো turn বাদ দিন।
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 থেকে প্রতি token চার্জ করা হয়: প্রতি 1M input token-এ $0.15, প্রতি 1M output token-এ $0.50। Input হলো আপনি যা পাঠান তার সবকিছু (system prompt, history, নতুন মেসেজ); output হলো মডেল যা লেখে।

পার্সোনা — খালি মডেল বা NoTrack-এর চরিত্র

প্রতিটি key-এর একটি স্টাইল আছে, keys পেজে নির্বাচিত এবং যেকোনো সময় পাল্টানো যায়:

একটি রিকোয়েস্ট key-এর সেটিং ওভাররাইড করতে পারে, একটি ফিল্ড দিয়ে বা মডেল suffix দিয়ে (যে ক্লায়েন্টগুলো কেবল 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

পার্সোনার নাম: notrack (সাধারণ চরিত্র), concise, detailed, creative (চ্যাট যেসব ভ্যারিয়েন্ট দেয় ঠিক সেগুলোই), bare। X-NoTrack-Persona রেসপন্স হেডার জানায় কোনটি প্রয়োগ হয়েছে।

কন্টেন্ট পলিসি

আমরা কোনো system prompt যুক্ত করি না এবং কোনো টপিক ফিল্টার চালাই না। প্রাপ্তবয়স্কদের কল্পকাহিনী, অন্ধকার থিম, কড়া ভাষা, কল্পকাহিনীতে সহিংসতা — মডেল যেমন লেখা তেমনই উত্তর দেয়। একটি নিয়ম কোডে বলবৎ এবং বন্ধ করা যায় না: নাবালকের সাথে সম্পর্কিত যৌন কিছুই প্রত্যাখ্যাত হয়।

একটি key-এ পুনরাবৃত্ত 403 ঘটলে key, তারপর অ্যাকাউন্ট বন্ধ হয়ে যায়। সম্পূর্ণ টেক্সট Acceptable Use পলিসি-এ আছে।

প্রাইভেসি

Prompt ও completion ডিস্কে লেখা হয় না — gateway দ্বারাও না, মডেল সার্ভার দ্বারাও না। প্রতি রিকোয়েস্টে আমরা যা রাখি তা হলো request id, key id, token গণনা এবং দাম, কারণ এটাই বিল। নিরাপত্তা প্রত্যাখ্যান বিভাগ অনুযায়ী লগ হয়, টেক্সট ছাড়া। কোনো তৃতীয়-পক্ষ মডেল প্রোভাইডার কখনও আপনার ট্র্যাফিক দেখে না: মডেল আমাদের নিজস্ব GPU সার্ভারে চলে।

ক্লায়েন্ট ও SDK

NoTrack ওয়েবসাইট এবং NoTrack অ্যাপ আমাদের নিজস্ব চ্যাট — এগুলোতে API key-এর জন্য কোনো ফিল্ড নেই এবং কখনও থাকবে না। একটি key অন্য প্রোগ্রামের জন্য: এটি নিচের ক্লায়েন্টগুলোর একটিতে, বা আপনার নিজের কোডে পেস্ট করুন।

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 token বা এর কম রাখুন।

Chatbox

Settings → Model Provider → Add → Add Custom Provider, mode OpenAI API Compatible → base URL ও key পেস্ট করুন, তারপর মডেল হিসেবে notrack-uncensored যুক্ত করুন।

NextChat

Settings → Custom Endpoint চালু করুন (OpenAI-সামঞ্জস্যপূর্ণ) → base URL ও key, তারপর মডেল ফিল্ডে মডেলের নাম টাইপ করুন।

Cherry Studio

Settings → Model Providers → Add Provider → OpenAI টাইপ করুন → base URL ও key, তারপর "Add model" → notrack-uncensored।

LobeChat

Settings → AI Service Provider → OpenAI → custom API endpoint চালু করুন, base URL ও key পেস্ট করুন, এবং মডেল লিস্টে মডেল যুক্ত করুন।

আরও অন্য কিছু

LangChain, LlamaIndex, Open WebUI, Continue, JanitorAI proxy সেটিংস, curl — "OpenAI-compatible" বা "custom base URL" অপশনসহ যেকোনো ক্লায়েন্ট।

উপরের মেনু শব্দগুলো অ্যাপ ভার্সনের মধ্যে পাল্টায় — লেবেল ঠিক না মিললে, যে সেটিং "custom", "OpenAI-compatible", বা "base URL" উল্লেখ করে তা খুঁজুন।

ক্লায়েন্ট কানেক্ট না হলে

Keys

প্রশ্ন বা দেখার জন্য একটি request id: সাপোর্ট · [email protected]।