Tokens API-তে প্রতিটা request-এর সঙ্গে একটা platform key header-এ পাঠাতে হয়। এই পেজে আছে base URL, কোন কোন header চলে, key-এর format কেমন, আর authentication error-এর প্রতিটার মানে কী।
Base URL#
একই host-এ Tokens দুটো surface দেয়। কোনটা নেবেন সেটা ঠিক হয় client দেখে, model দেখে না।
| Client-এর ধরন | Base URL | সাধারণত যেসব tool |
|---|---|---|
| OpenAI-compatible | https://tokens.bd/v1 | OpenAI SDKs, Cursor, Cline, Aider, OpenCode, Codex CLI |
| Anthropic-compatible | https://tokens.bd | Anthropic SDKs, Claude Code (এরা নিজেই শেষে /v1/messages জুড়ে নেয়) |
কোনো tool "API base" বা "base URL" চাইলে আর সেটা OpenAI-ধাঁচের হলে /v1 সহ দিন। Anthropic-ধাঁচের হলে /v1 বাদ দিন, কারণ SDK নিজেই ওটা জুড়ে দেয়। প্রথম request-এই 404 আসার সবচেয়ে বড় কারণ এখানে ভুল করা।
কোনো tool নিজে থেকে endpoint খুঁজে নিতে চাইলে একটা public config endpoint আছে। এতে authentication লাগে না:
curl https://tokens.bd/api/gateway/config{
"openaiBaseUrl": "https://tokens.bd/v1",
"anthropicBaseUrl": "https://tokens.bd"
}API key header-এ পাঠান#
Key দুটো header-এর যেকোনো একটায় দিলেই চলে। আপনার client যেটা default-এ পাঠায়, সেটাই ব্যবহার করুন।
| Header | Format | কারা পাঠায় |
|---|---|---|
Authorization | Bearer tok_live_your_key | OpenAI SDKs, ANTHROPIC_AUTH_TOKEN দিয়ে Claude Code, বেশির ভাগ tool |
x-api-key | tok_live_your_key | Anthropic SDKs |
দুটো header একসাথে এলে Authorization: Bearer header-টাই ধরা হয়। Authorization header-এ Bearer ছাড়া অন্য কোনো scheme থাকলে সেটা বাদ যায়, তখন gateway x-api-key খোঁজে।
curl https://tokens.bd/v1/models \
-H "Authorization: Bearer $TOKENS_API_KEY"curl https://tokens.bd/v1/models \
-H "x-api-key: $TOKENS_API_KEY"Key-এর format#
Key দেখতে tok_live_ দিয়ে শুরু হয়, তারপর 48টা hexadecimal character। Dashboard-এ key তৈরির সময় পুরো secret একবারই দেখানো হয়। আমরা শুধু hash রাখি, তাই হারিয়ে গেলে key ফেরত আনা যায় না; নতুন একটা তৈরি করে নিন। Key তৈরি, spend cap, allowed-model list আর rotation নিয়ে বিস্তারিত আছে API keys পেজে।
Key রাখুন environment variable-এ#
Docs-এর সব উদাহরণে key পড়া হয় TOKENS_API_KEY থেকে:
export TOKENS_API_KEY="tok_live_your_key"Windows PowerShell-এ:
$env:TOKENS_API_KEY = "tok_live_your_key"তারপর code-এ key সরাসরি না লিখে এভাবে পড়ে নিন:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://tokens.bd/v1",
api_key=os.environ["TOKENS_API_KEY"],
)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://tokens.bd/v1",
apiKey: process.env.TOKENS_API_KEY,
});Key commit করবেন না
Commit করা .env, config file বা notebook-এ key থাকা মানে key leak হয়ে যাওয়া। এই file-গুলো .gitignore-এ রাখুন। Key leak হয়ে গেলে Dashboard থেকে rotate করুন; পুরোনো secret সঙ্গে সঙ্গে কাজ করা বন্ধ করে দেয়।
শুধু server-side: browser থেকে call নয়#
API-র response-এ CORS header থাকে না। তাই key ঠিক থাকলেও web page থেকে fetch করলে browser-এ সেটা fail করবে। এটা ইচ্ছা করেই করা: browser-এ key পাঠালে যে কেউ dev tools খুলে সেটা পড়ে ফেলতে পারে। Tokens-কে call করুন আপনার backend, serverless function, CLI বা coding agent থেকে, আর frontend সেই backend-এর সঙ্গে কথা বলুক।
401 আর 403-এর মানে#
Authentication fail করলে standard error body আসে, সঙ্গে machine-readable একটা code:
{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null,
"request_id": "8f0c7a4e-2b1d-4c55-9a51-3f7e2d9b6c10"
}
}| Status | Code | মানে | যা করবেন |
|---|---|---|---|
| 401 | missing_api_key | Authorization: Bearer বা x-api-key কোনো header-ই আসেনি | যে shell-এ tool চালাচ্ছেন সেখানে env var set আছে কিনা দেখুন |
| 401 | invalid_api_key | Key-টা আমাদের দেওয়া কোনো key-র সঙ্গে মেলে না | key কাটা পড়েছে কিনা বা বাড়তি quote আছে কিনা দেখুন; key আবার copy করুন, নয়তো নতুন বানান |
| 403 | key_inactive | Key revoke বা rotate করা হয়েছে | এখনকার secret ব্যবহার করুন, নয়তো নতুন key বানান |
| 403 | key_expired | Key-র expiry date পেরিয়ে গেছে | নতুন key বানান |
| 403 | account_suspended | অ্যাকাউন্ট suspend করা আছে | Support-এর সঙ্গে যোগাযোগ করুন |
| 403 | model_not_allowed_on_key | Key-তে allowed-model list আছে, আর তাতে এই model নেই | list-এর কোনো model নিন, নয়তো অন্য key ব্যবহার করুন |
| 403 | monthly_spend_cap_exceeded | Key-টা তার monthly spend cap-এ পৌঁছে গেছে | পরের মাস পর্যন্ত অপেক্ষা করুন, নয়তো অন্য key নিন |
| 403 | tier_permission_denied | আপনার plan-এ এই model নেই, আর Wallet-এ ব্যালান্সও নেই | plan ও Wallet পেজ দেখুন |
upstream_auth_error code-সহ 401 বা 403 আলাদা ব্যাপার। এর মানে upstream provider-এর কাছে gateway-র নিজের credential ফিরিয়ে দেওয়া হয়েছে, আপনারটা নয়। আপনার key ঠিকই আছে; একটু পরে আবার চেষ্টা করুন বা অন্য model নিন, আর Support-এ জানালে request id-টা সঙ্গে দিন।
Billing আর rate-limit error-সহ সব code-এর পুরো list আছে errors পেজে। Key শুরু থেকে শেষ পর্যন্ত কাজ করছে কিনা যাচাই করতে quickstart-এ এক লাইনের একটা test request আছে।