দুটো read-only endpoint আছে, যাতে script বা tool browser session ছাড়াই জানতে পারে "কোন model call করতে পারি?" আর "কতটা বাকি আছে?"। দুটোতেই inference-এর API key-ই চলে, আর কোনোটার জন্য বিল হয় না।
GET /v1/models দিয়ে model-এর list#
curl https://tokens.bd/v1/models \
-H "Authorization: Bearer $TOKENS_API_KEY"{
"object": "list",
"data": [
{
"id": "deepseek/deepseek-v4.1-flash",
"object": "model",
"created": 1788000000,
"owned_by": "tokens",
"permission": [],
"root": "deepseek/deepseek-v4.1-flash",
"parent": null
}
]
}| Field | মানে |
|---|---|
id | model হিসেবে ঠিক এই string-টাই পাঠাতে হবে। সবসময় provider/model form-এ। |
object | সবসময় "model"। |
created | Model catalog-এ যোগ হওয়ার Unix timestamp। |
owned_by | সবসময় "tokens", model যে lab-ই বানাক না কেন। |
root, parent, permission | OpenAI SDK-র সঙ্গে মেলানোর জন্য আছে; root আর id একই। |
Response-এ দাম বা context window থাকে না। সেগুলো পাবেন model catalog-এ, প্রতিটা model-এর আলাদা পেজে। Catalog-এ capability flag-ও নেই (vision, tool calling, reasoning): কোনো model কী support করে সেটা কীভাবে জানবেন, তা Model catalog পেজে আছে।
List-এ কোনো model না থাকলে কেন#
List-টা যে key দিয়ে call করছেন তার জন্য ছাঁটাই হয়। তাই একই অ্যাকাউন্টের দুটো key আলাদা list দেখতে পারে:
- Key allow-list। Key বানানোর সময় allowed-model list দিয়ে থাকলে শুধু সেই model-গুলোই আসে।
- Plan আর Wallet। প্রতিটা model নির্দিষ্ট কিছু plan tier-এ আর pay-as-you-go-তে চালু থাকে। আপনার active plan-এর tier-এ model-টা থাকলে, অথবা model-টার জন্য pay-as-you-go চালু থাকলে এবং Wallet-এর ব্যালান্স শূন্যের বেশি হলে, সেটা list-এ আসে।
- Catalog status। শুধু active catalog model-ই list-এ আসে।
data array খালি এলে সাধারণত বুঝবেন active plan আর Wallet ব্যালান্স কোনোটাই নেই। Billing-এ গিয়ে subscribe করুন বা টাকা যোগ করুন; বিস্তারিত plan ও Wallet পেজে।
GET /v1/tokens/usage দিয়ে কতটা বাকি দেখুন#
এই endpoint শুধু Tokens-এর নিজস্ব। এটা দেয় বর্তমান plan, plan-এর usage window, Wallet-এর ব্যালান্স আর যে key দিয়ে call করছেন তার limit। tokens.mjs usage CLI command এটাই পড়ে। Status bar-এ বা অনেকক্ষণ চলা কোনো agent-এর pre-flight check-এ এটা বেশ কাজে লাগে।
curl https://tokens.bd/v1/tokens/usage \
-H "Authorization: Bearer $TOKENS_API_KEY"{
"object": "tokens.usage",
"plan": {
"name": "Pro Monthly",
"tier": "monthly",
"periodEnd": "2026-11-02T08:15:00.000Z"
},
"windows": [
{
"type": "session_5h",
"label": "5-Hour Session",
"unit": "usd",
"limit": 5,
"used": 1.284,
"remaining": 3.716,
"percentUsed": 26,
"resetsAt": "2026-10-03T14:40:00.000Z"
}
],
"wallet": { "balanceUsd": 12.5 },
"key": {
"monthlySpendCapUsd": 20,
"allowedModels": null
}
}ওপরের plan-এর নাম আর সংখ্যাগুলো শুধু উদাহরণ; আপনারটা আপনার plan অনুযায়ী আলাদা হবে।
| Field | Type | মানে |
|---|---|---|
plan | object বা null | Active সাবস্ক্রিপশন; শুধু pay-as-you-go হলে null |
plan.tier | string | Plan tier, যেমন weekly বা monthly |
plan.periodEnd | ISO 8601 বা null | চলতি সাবস্ক্রিপশন period কখন শেষ হবে |
windows[] | array | যেসব plan usage window-এ চলতি period-এ usage হয়েছে |
windows[].type | string | session_5h (rolling 5 ঘণ্টা), weekly বা monthly |
windows[].unit | string | usd (credit, USD-তে প্রকাশ করা) বা requests |
windows[].limit, used, remaining | number | Window-র unit-এ |
windows[].percentUsed | integer | 0 থেকে 100 |
windows[].resetsAt | ISO 8601 | Window কখন reset হবে |
wallet | object বা null | balanceUsd: prepaid Wallet-এর ব্যালান্স USD-তে; Wallet না থাকলে null |
key.monthlySpendCapUsd | number বা null | যে key দিয়ে call করছেন তার monthly cap; cap না থাকলে null |
key.allowedModels | array বা null | Key-র allow-list; যেকোনো model চললে null |
Note
চলতি period-এ যে window এখনো ব্যবহার হয়নি, সেটা windows-এ থাকে না। তাই একদম নতুন plan-এ বা reset-এর ঠিক পরে array খালি আসাটা স্বাভাবিক।
কোনো window-র সীমা শেষ হয়ে গেলে resetsAt পর্যন্ত inference request-এ 429 window_exhausted আসে। কোনো window-র 50, 75, 90 আর 100 শতাংশ ব্যবহার হলে Dashboard আপনাকে notify-ও করতে পারে; দেখুন usage ও alert।
Response আসে Cache-Control: no-store সহ। মিনিটে একবার poll করাই যথেষ্ট; এটা আপনার বিলেও গোনা হয় না, আর প্রতি মিনিটের request limit-এও না।
Embeddings: POST /v1/embeddings#
Route-টা আছে এবং OpenAI-র embeddings format মেনে চলে, কিন্তু কাজ করে শুধু সেই catalog model-এ যেগুলো embedding model। Chat model-এ এটা fail করবে। এই endpoint-এর ওপর কিছু বানানোর আগে model catalog-এ embedding model আছে কিনা দেখে নিন; কিছু না থাকলে বুঝবেন আপনার অ্যাকাউন্টের জন্য এখনো কোনো embedding model নেই।
Legacy completions: POST /v1/completions#
পুরোনো ধাঁচের prompt-দিলে-text-পাওয়া completions endpoint-টা পাস করে দেওয়া হয়, যেসব tool এখনো এটা ব্যবহার করে তাদের জন্য। এটা চলে শুধু তখনই যখন model-এর পেছনের upstream এটা support করে, আর অনেক chat model করে না। নতুন কিছুর জন্য chat completions ব্যবহার করুন।
যেসব endpoint নেই#
/v1-এর নিচে অন্য যেকোনো path-এ 404 আসে, code unsupported_endpoint। এর মধ্যে আছে images, audio, files, batches, assistants, fine-tuning আর moderations। Code-এর পুরো list পাবেন errors পেজে।