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 পার্ট প্রত্যাখ্যাত হয়। |
model | notrack-uncensored ব্যবহার করুন। |
stream | SSE-এর জন্য true। stream_options.include_usage সর্বদা চালু থাকে। |
max_tokens | completion-এর সীমা। Prompt + completion অবশ্যই 100,000-token উইন্ডোতে ফিট হতে হবে। |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | OpenAI-এর মতোই মডেলে পাস করা হয়। 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 সমসাময়িক রিকোয়েস্ট | 8 | 429 concurrency |
| প্রতি key প্রতি মিনিট রিকোয়েস্ট | 300 | 429 rate_limit |
| কনটেক্সট উইন্ডো (prompt + completion) | 100,000 token | 400 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" } }
| HTTP | type | কী করবেন |
|---|---|---|
| 400 | body | অবৈধ JSON বা messages নেই। |
| 400 | context_limit | 100,000-token উইন্ডোর জন্য prompt অনেক লম্বা। পুরনো turn বাদ দিন। |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | দৃশ্যটি যৌন মনে হয় এবং একটি চরিত্র নাবালক মনে হয়। চরিত্রগুলোকে অসন্দেহাতীতভাবে প্রাপ্তবয়স্ক করে পুনরায় পাঠান; বিল করা হয় না। |
| 401 | auth, invalid_key, key_revoked, key_expired | key ঠিক করুন বা প্রতিস্থাপন করুন। |
| 402 | no_credit | ব্যালেন্স শূন্য। টপ আপ করুন; রিকোয়েস্ট অবিলম্বে পুনরায় শুরু হয়। |
| 402 | key_daily_cap | এই key আপনার সেট করা দৈনিক সীমায় পৌঁছেছে। এটি বাড়ান বা 00:00 UTC পর্যন্ত অপেক্ষা করুন। |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | প্রত্যাখ্যাত এবং বিল করা হয়নি। দেখুন কন্টেন্ট পলিসি। |
| 429 | rate_limit, concurrency | থামুন এবং আবার চেষ্টা করুন; দুটি X-RateLimit-* হেডার মেনে চলুন। |
| 502 | upstream | মডেল উত্তর দেয়নি। backoff দিয়ে পুনরায় চেষ্টা করুন; বিল করা হয় না। |
| 503 | billing, safety | আমাদের একটি dependency ডাউন আছে। কয়েক সেকেন্ডে পুনরায় চেষ্টা করুন; বিল করা হয় না। |
বিলিং
প্রিপেইড ক্রেডিট, প্রতিটি রেসপন্সের প্রকৃত usage থেকে প্রতি token চার্জ করা হয়: প্রতি 1M input token-এ $0.15, প্রতি 1M output token-এ $0.50। Input হলো আপনি যা পাঠান তার সবকিছু (system prompt, history, নতুন মেসেজ); output হলো মডেল যা লেখে।
- আপনার প্রথম key $0.50 ফ্রি ক্রেডিট সহ আসে, 7 দিনের জন্য বৈধ — ইন্টিগ্রেট ও টেস্ট করার জন্য যথেষ্ট। key-এর জন্য একটি নিশ্চিত ই-মেইল প্রয়োজন ("ক্রেডিট শেষ হয়ে যাচ্ছে" বার্তা সেখানে যায়)। পেইড ক্রেডিট কখনও মেয়াদোত্তীর্ণ হয় না।
- ক্রেডিট মেয়াদোত্তীর্ণ হয় না, কোনো সাবস্ক্রিপশন নেই এবং কিছুই নিজে থেকে রিনিউ হয় না। keys পেজে card বা USDT/USDC-এ টপ আপ করুন।
- প্রত্যাখ্যাত রিকোয়েস্টের (
4xx) বা ব্যর্থ রিকোয়েস্টের (5xx) জন্য কোনো চার্জ নেওয়া হয় না। একটি রিকোয়েস্ট একবারই চার্জ করা হয়, রেসপন্সের পর, এরX-Request-Idঅনুযায়ী। - ব্যালেন্স শেষ হলে → আপনি টপ আপ না করা পর্যন্ত
402 no_credit। ফাঁস হওয়া key যাতে অ্যাকাউন্ট খালি করতে না পারে সেজন্য প্রতিটি key-এ দৈনিক সীমা নির্ধারণ করুন। - ক্রেডিট ফেরতযোগ্য নয় যদি না আমরা আমাদের সেবা প্রদান করতে পারি; এদের মেয়াদ কখনো শেষ হয় না এবং এগুলো একটি প্ল্যানে প্রয়োগ করা যেতে পারে। ক্রেডিট ও রিফান্ড দেখুন।
পার্সোনা — খালি মডেল বা NoTrack-এর চরিত্র
প্রতিটি key-এর একটি স্টাইল আছে, keys পেজে নির্বাচিত এবং যেকোনো সময় পাল্টানো যায়:
- খালি (ডিফল্ট) — আপনার system prompt-ই সম্পূর্ণ prompt। আমরা পরিচয়ের একটি লাইন যুক্ত করি, আর কিছুই না।
- NoTrack পার্সোনা — notrack.ai-এর চ্যাটের চরিত্র ও স্টাইল: সরাসরি, আনফিল্টার্ড, নীতিকথা নয়, ব্যবহারকারীর ভাষায় উত্তর দেয়। একই মডেল, একই দাম, একই কন্টেন্ট পলিসি; শুধু আপনার মেসেজের সামনের prompt-টি বদলায়। আপনার নিজের system message এখনও এর পরে আসে এবং এটি সামঞ্জস্য করতে পারে।
একটি রিকোয়েস্ট 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 যুক্ত করি না এবং কোনো টপিক ফিল্টার চালাই না। প্রাপ্তবয়স্কদের কল্পকাহিনী, অন্ধকার থিম, কড়া ভাষা, কল্পকাহিনীতে সহিংসতা — মডেল যেমন লেখা তেমনই উত্তর দেয়। একটি নিয়ম কোডে বলবৎ এবং বন্ধ করা যায় না: নাবালকের সাথে সম্পর্কিত যৌন কিছুই প্রত্যাখ্যাত হয়।
403 child_safety— রিকোয়েস্টটি একটি শিশুর সাথে সম্পর্কিত যৌন কন্টেন্ট খুঁজছিল। প্রত্যাখ্যাত, বিল করা হয়নি, নিরাপত্তা ঘটনা হিসেবে লগ করা হয়েছে।400 minor_in_sexual_context— দৃশ্যটি যৌন এবং একটি চরিত্র 18 বছরের কম বয়সী মনে হয় (বয়স উল্লিখিত, স্কুলের পরিবেশ, "girl/boy" ফ্রেমিং)। এটি নিষেধাজ্ঞা নয়: বয়স ও ফ্রেমিং অসন্দেহাতীতভাবে প্রাপ্তবয়স্ক করে পুনরায় পাঠান।
একটি 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" উল্লেখ করে তা খুঁজুন।
ক্লায়েন্ট কানেক্ট না হলে
- 401 / "invalid API key" — key কখনও পৌঁছায়নি। নিশ্চিত করুন ক্লায়েন্ট সম্পূর্ণ key, prefix সহ,
Authorization: Bearer sk-notrack-…-এ পাঠায়। - 404 / অজানা endpoint — ক্লায়েন্টগুলো নিজেরাই
/v1যুক্ত করবে কিনা তা নিয়ে একমত নয়।https://api.notrack.ai/v1404 দিলে, এর বদলে base URL হিসেবেhttps://api.notrack.aiচেষ্টা করুন (বা বিপরীতভাবে)। - "The Responses API is not supported yet" — কিছু নতুন ক্লায়েন্ট ডিফল্টভাবে OpenAI-এর Responses API ব্যবহার করে। আমরা কেবল Chat Completions সার্ভ করি; ক্লায়েন্টকে সেই মোডে পাল্টান।
- খালি মডেল লিস্ট — কিছু ক্লায়েন্ট একটি বৈধ key চেক হওয়ার পরই এটি পূরণ করে।
notrack-uncensoredহাতে টাইপ করুন। - Ollama / llama.cpp ক্লায়েন্টে কিছুই হয় না — এগুলো তাদের নিজস্ব প্রোটোকলে কথা বলে, OpenAI-সামঞ্জস্যপূর্ণ নয়। এর বদলে উপরের ক্লায়েন্টগুলোর একটি ব্যবহার করুন।
Keys
- প্রতি অ্যাকাউন্টে সর্বোচ্চ 20টি সক্রিয় key। প্রতিটি অ্যাপকে তার নিজস্ব key ও নিজস্ব দৈনিক সীমা দিন।
- ঐচ্ছিক মেয়াদ শেষের তারিখ; একটি key প্রত্যাহার করলে তা অবিলম্বে থেমে যায় এবং তা পূর্বাবস্থায় ফেরানো যায় না — পরিবর্তে একটি নতুন ইস্যু করুন।
- keys পেজ প্রতি-key খরচ, শেষ ব্যবহার এবং অ্যাকাউন্টের 30-দিনের মোট দেখায়।
প্রশ্ন বা দেখার জন্য একটি request id: সাপোর্ট · [email protected]।