key ঠিকমতো কাজ করছে কি না দেখতে আর Tokens API ঠিক কী ফেরত দেয় তা দেখতে cURL-ই সবচেয়ে দ্রুত উপায়। মাঝখানে কোনো SDK থাকে না। নিচের প্রতিটি উদাহরণ আপনার key TOKENS_API_KEY থেকে পড়ে, তাই আগে এটা set করে নিন।
export TOKENS_API_KEY="tok_live_your_key"Windows PowerShell-এ $env:TOKENS_API_KEY = "tok_live_your_key" লিখুন, আর curl-এর বদলে curl.exe চালান। কারণ Windows PowerShell 5.1-এ curl আসলে Invoke-WebRequest-এর alias, আর সেটার flag আলাদা। নিচের command-এ \ দিয়ে যে লাইন ভাঙা হয়েছে, সেটা bash আর zsh-এর জন্য। PowerShell-এ পুরো command এক লাইনে লিখুন, অথবা backtick ব্যবহার করুন।
cURL দিয়ে chat completion পাঠান#
OpenAI-compatible base URL হলো https://tokens.bd/v1। পরিচয় দিতে Authorization: Bearer header ব্যবহার করুন।
curl https://tokens.bd/v1/chat/completions \
-H "Authorization: Bearer $TOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4.1-flash",
"messages": [
{"role": "system", "content": "You are a terse code reviewer."},
{"role": "user", "content": "What does `set -euo pipefail` do?"}
],
"max_tokens": 300
}'Response একটা সাধারণ chat completion object। উত্তর থাকে choices[0].message.content-এ, আর token-এর হিসাব থাকে usage-এ। প্রতিটি field-এর বিস্তারিত পাবেন Chat Completions পেজে।
model দেওয়া বাধ্যতামূলক। Request body সর্বোচ্চ 10 MB হতে পারে, এর বেশি হলে 413 আসবে।
-N দিয়ে token stream করুন#
Body-তে "stream": true দিন আর command-এ -N (--no-buffer) যোগ করুন। তাহলে পুরো response শেষ হওয়ার অপেক্ষা না করে প্রতিটি server-sent event আসামাত্র cURL সেটা print করবে।
curl -N https://tokens.bd/v1/chat/completions \
-H "Authorization: Bearer $TOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "Count from 1 to 10, one number per line."}],
"stream": true,
"stream_options": {"include_usage": true}
}'Output-এ প্রথমে data: {...} লাইনগুলো আসবে, যেগুলোতে choices[0].delta.content থাকে। শেষে আসবে data: [DONE]। Usage chunk-টা (এর choices array ফাঁকা) শুধু তখনই আসে যখন request-এ stream_options.include_usage দেওয়া থাকে। এটা বাদ দিলে stream-এ কোনো token count থাকবে না। Event-এর format নিয়ে আরও জানতে দেখুন Streaming।
Anthropic Messages API চালান#
একই key Anthropic-compatible endpoint-এও চলে। এবার key পাঠান x-api-key header-এ। Authorization: Bearer দিলেও চলবে, দুটোই নেওয়া হয়।
curl https://tokens.bd/v1/messages \
-H "x-api-key: $TOKENS_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4.1-flash",
"max_tokens": 300,
"messages": [{"role": "user", "content": "Explain a git rebase in two sentences."}]
}'Model-কে Anthropic-এর হতেই হবে এমন কোনো কথা নেই। আপনি যে model-এর নাম দেবেন, gateway সেটা যে provider চালায় তার জন্য request-টা নিজে বদলে নেয়। Anthropic-style event stream করতে "stream": true আর -N যোগ করুন। বিস্তারিত Messages পেজে।
Note
Anthropic-এর জন্য বানানো SDK ও tool সাধারণত base URL চায় /v1 ছাড়া (https://tokens.bd), কারণ ওরা নিজেরাই শেষে /v1/messages জুড়ে নেয়। সরাসরি cURL চালালে আপনাকে পুরো path নিজে লিখতে হবে।
আপনার key দিয়ে কোন কোন model চলবে দেখুন#
curl https://tokens.bd/v1/models \
-H "Authorization: Bearer $TOKENS_API_KEY"এটা এই মুহূর্তে এই key-এর জন্য যে model-গুলো পাওয়া যাচ্ছে তার তালিকা দেয়। হিসাবে ধরা হয় আপনার plan, Wallet-এর ব্যালান্স আর key-এর allowed-models list। Model ID মুখস্থ থেকে না লিখে এখান থেকে copy করুন। দামসহ পুরো catalog আছে /models পেজে।
শুধু ID-গুলো বের করতে চাইলে jq ব্যবহার করুন:
curl -s https://tokens.bd/v1/models \
-H "Authorization: Bearer $TOKENS_API_KEY" | jq -r '.data[].id'Plan usage আর Wallet-এর ব্যালান্স দেখুন#
GET /v1/tokens/usage শুধু Tokens-এ আছে। এটা আপনার plan, চালু usage window, Wallet-এর ব্যালান্স আর এই key-এর সীমাগুলো দেখায়। এটা শুধু পড়ার call, এর জন্য কোনো টাকা কাটে না।
curl -s https://tokens.bd/v1/tokens/usage \
-H "Authorization: Bearer $TOKENS_API_KEY" | jqResponse-এর উপরের স্তরে এই field-গুলো থাকে:
| Field | কী থাকে |
|---|---|
plan | Plan-এর নাম, tier আর periodEnd। চালু plan না থাকলে null |
windows | চালু usage window (session_5h, weekly, monthly), প্রতিটিতে unit, limit, used, remaining, percentUsed, resetsAt |
wallet | balanceUsd, অথবা null |
key | আপনি যে key দিয়ে call করেছেন তার monthlySpendCapUsd আর allowedModels |
কোনো request 429 window_exhausted দিয়ে ব্যর্থ হলে আর window কখন reset হবে জানতে চাইলে এই call-টাই করুন।
-i আর x-tokens-request-id দিয়ে error debug করুন#
Body-র সাথে response header-ও দেখতে -i দিন। প্রতিটি response-এ x-tokens-request-id থাকে। Support প্রথমেই এটা চাইবে।
curl -i https://tokens.bd/v1/chat/completions \
-H "Authorization: Bearer $TOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "not-a-real/model", "messages": [{"role": "user", "content": "hi"}]}'HTTP/2 404
content-type: application/json
x-tokens-request-id: 7f3c...
x-request-id: ...
{"error":{"message":"...","type":"...","code":"model_not_found","param":null,"request_id":"7f3c..."}}শুধু HTTP status দেখে থেমে যাবেন না, error.code-টা পড়ুন। 403-এর মানে হতে পারে key inactive, model-টা key-এর allow-list-এ নেই, অথবা spend cap ছুঁয়ে গেছে। তিনটার সমাধান তিন রকম। 429 এলে Retry-After header দেখুন। Tokens X-RateLimit-* header পাঠায় না।
Script-এ এক লাইনে status যাচাই করতে চাইলে -w দিয়ে শুধু code print করুন:
curl -s -o /dev/null -w "%{http_code}\n" https://tokens.bd/v1/models \
-H "Authorization: Bearer $TOKENS_API_KEY"200 এলে key ঠিক আছে। 401 এলে key নেই অথবা ভুল। সব code-এর তালিকা আর কোনটায় কী করবেন তা আছে Errors আর Troubleshooting পেজে।
কোন কোন endpoint নেই#
Gateway এই endpoint-গুলো চালায়: /v1/chat/completions, /v1/completions (পুরোনো), /v1/messages, /v1/responses, /v1/embeddings (শুধু embedding model-এর জন্য), /v1/models আর /v1/tokens/usage। Image generation, audio, file, batch, assistant, fine-tuning আর moderation endpoint-এ গেলে 404 unsupported_endpoint আসবে। তবে chat request-এর ভেতরে model-কে ছবি পাঠানো চলে: দেখুন Image input।