দ্রুত শুরু
কয়েক মিনিটে আপনার প্রথম জেনারেশন চালান। সব ১,৪৯৬টি মডেল একই ধরনের রিকোয়েস্ট নেয় এবং ছবি, ভিডিও ও অডিওর জন্য একই রিকোয়েস্ট অবজেক্ট ফেরত দেয়: এখানে একবার শিখলেই হবে।
১. একটি API কী নিন
https://doitong.com/developers/dashboard#keys-এ একটি কী তৈরি করুন এবং সেটি একটি
এনভায়রনমেন্ট ভেরিয়েবলে রাখুন: এটি শুধু একবারই দেখানো হয়। প্রতিটি কী-তে নিজস্ব বাজেট থাকতে পারে, তাই পুরো
অ্যাকাউন্ট ঝুঁকিতে না ফেলে একটি এজেন্টকে কী দিতে পারেন। GET /account আপনার API ব্যালান্স ফেরত দেয়।
export DOITONG_API_KEY="doitong_..."
curl "https://api.doitong.com/v1/account" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const res = await fetch("https://api.doitong.com/v1/account", {
headers: { Authorization: `Bearer ${process.env.DOITONG_API_KEY}` },
});
console.log(await res.json());
import os
import requests
r = requests.get(
"https://api.doitong.com/v1/account",
headers={"Authorization": f"Bearer {os.environ['DOITONG_API_KEY']}"},
)
print(r.json())
রানগুলো আপনার অ্যাকাউন্টের API ব্যালান্স থেকে API ক্রেডিটে পরিশোধ করা হয়: ১,০০০ API ক্রেডিট = ১$, এবং প্রতিটি মডেলের খরচ তার নির্মাতার নির্ধারিত মূল্যের সমান। https://doitong.com/developers/dashboard#balance-এ টপ-আপ করুন।
২. কোট নিন, তারপর চালান
POST /quote/{model_id} ইনপুট JSON নেয় এবং সঠিক মূল্য ফেরত দেয়। এর জন্য কোনো API কী লাগে না এবং কোনো খরচও হয় না।
একই ইনপুট চালালে ঠিক ওই মূল্যই খরচ হয়: কোটই চার্জ। (ব্যবহার অনুযায়ী চার্জ হওয়া মডেল এর ব্যতিক্রম: এর
কোট হলো রানটির সর্বোচ্চ সম্ভাব্য খরচ, এবং অব্যবহৃত অংশ রান শেষ হওয়ার পর অর্থ ফেরত দেওয়া হয়।)
curl -X POST "https://api.doitong.com/v1/quote/kling-video/v3/pro/image-to-video" \
-H "Content-Type: application/json" \
-d '{"image": "https://example.com/fox.jpg", "duration": 5, "generate_audio": true}'
const res = await fetch("https://api.doitong.com/v1/quote/kling-video/v3/pro/image-to-video", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ image: "https://example.com/fox.jpg", duration: 5, generate_audio: true }),
});
const quote = await res.json();
console.log(quote.credits, quote.usd); // 840 "0.84"
import requests
r = requests.post(
"https://api.doitong.com/v1/quote/kling-video/v3/pro/image-to-video",
json={"image": "https://example.com/fox.jpg", "duration": 5, "generate_audio": True},
)
print(r.json()["credits"], r.json()["usd"]) # 840 0.84
{
"object": "quote",
"model": "kling-video/v3/pro/image-to-video",
"credits": 840,
"usd": "0.84",
"unit": "second",
"quantity": 5,
"unit_credits": 168,
"mode": "exact",
"breakdown": "5 s × 168 API credits"
}
এরপর একই বডি POST /run/{model_id}-এ পাঠান। সংযোগ সর্বোচ্চ 20 সেকেন্ড ধরে রাখতে ?wait=20 যোগ করুন: দ্রুত
মডেল একবারের রাউন্ড ট্রিপেই সম্পূর্ণ ফলাফল ফেরত দেয়। Idempotency-Key হেডার পাঠান, যাতে রিট্রাই হলে কখনোই
দুবার রান (বা চার্জ) না হয়।
curl -X POST "https://api.doitong.com/v1/run/flux/schnell?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: lighthouse-001" \
-d '{"prompt": "A lighthouse on a rocky coast at dusk, warm light in the window"}'
const res = await fetch("https://api.doitong.com/v1/run/flux/schnell?wait=20", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.DOITONG_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "lighthouse-001",
},
body: JSON.stringify({ prompt: "A lighthouse on a rocky coast at dusk, warm light in the window" }),
});
const request = await res.json();
console.log(request.status, request.outputs[0]?.url);
import os
import requests
r = requests.post(
"https://api.doitong.com/v1/run/flux/schnell",
params={"wait": 20},
headers={
"Authorization": f"Bearer {os.environ['DOITONG_API_KEY']}",
"Idempotency-Key": "lighthouse-001",
},
json={"prompt": "A lighthouse on a rocky coast at dusk, warm light in the window"},
)
request = r.json()
print(request["status"], request["outputs"][0]["url"] if request["outputs"] else None)
রেসপন্সটি একটি রিকোয়েস্ট অবজেক্ট:
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "flux/schnell",
"status": "succeeded",
"cost": { "credits": 3, "usd": "0.003", "charged": 3, "refunded": 0 },
"outputs": [
{ "type": "image", "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg", "width": 1024, "height": 768, "stored": true }
],
"error": null
}
৩. স্ট্যাটাস অনুসরণ করুন
অপেক্ষার সময় শেষ হলে মডেলটি এখনও কাজ করলে, আপনি রিকোয়েস্টের id এবং বর্তমান status-সহ 202 Accepted পাবেন।
প্রতিটি রিকোয়েস্ট একই জীবনচক্রের মধ্য দিয়ে যায়:
-
queuedগ্রহণ ও চার্জ করা হয়েছে, worker-এর জন্য অপেক্ষমাণ -
runningমডেল তৈরি করছে -
চূড়ান্ত স্ট্যাটাস:
succeededকোট করা মূল্য কেটে নেওয়া হয়েছে; outputs[]-এ আমাদের স্টোরেজের URL রয়েছেfailedস্বয়ংক্রিয়ভাবে ফেরত দেওয়া হয়েছে; কারণ error-এ বলা আছেcanceledফলাফল পাওয়ার আগে থামানো হয়েছে; অর্থ ফেরত দেওয়া হয়েছে
এর id ব্যবহার করে রিকোয়েস্টটি আবার পড়ুন। এখানেও ?wait=20 কাজ করে, তাই একটি সাধারণ লুপই যথেষ্ট:
curl "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const headers = { Authorization: `Bearer ${process.env.DOITONG_API_KEY}` };
let request = await (await fetch("https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20", { headers })).json();
while (request.status === "queued" || request.status === "running") {
const res = await fetch(`https://api.doitong.com/v1/requests/${request.id}?wait=20`, { headers });
request = await res.json();
}
console.log(request.status, request.outputs[0]?.url);
import os
import requests
headers = {"Authorization": f"Bearer {os.environ['DOITONG_API_KEY']}"}
request = {"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t", "status": "queued"}
while request["status"] in ("queued", "running"):
request = requests.get(
f"https://api.doitong.com/v1/requests/{request['id']}",
params={"wait": 20},
headers=headers,
).json()
print(request["status"], request["outputs"][0]["url"] if request["outputs"] else None)
status যখন succeeded, তখন outputs[].url-এ আমাদের স্টোরেজে থাকা ফাইলগুলোর লিংক থাকে। রিকোয়েস্ট failed বা
canceled হলে এর API ক্রেডিট স্বয়ংক্রিয়ভাবে ফেরত দেওয়া হয় এবং error-এ কারণটি লেখা থাকে। এখনও queued বা
running থাকা যেকোনো কিছু বাতিল করুন:
curl -X POST "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
-H "Authorization: Bearer $DOITONG_API_KEY"
দীর্ঘ ভিডিও জবের ক্ষেত্রে পোলিং বাদ দিয়ে পরিবর্তে একটি webhook_url পাঠাতে পারেন (দেখুন Webhooks)।
৪. ফাইল
ইনপুট হিসেবে যেকোনো পাবলিক URL পাঠান, অথবা আপলোড URL-এর জন্য POST /files-এ রিকোয়েস্ট করুন, সেখানে ফাইলটি
PUT করুন এবং ফেরত পাওয়া file_url ব্যবহার করুন (দেখুন Files)। সফল রিকোয়েস্টের
ফলাফল outputs[]-এ type, content type এবং জানা থাকলে dimensions ও duration-সহ তালিকাভুক্ত থাকে।
curl -X POST "https://api.doitong.com/v1/files" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename": "fox.jpg", "content_type": "image/jpeg", "size": 482113}'
ত্রুটি
প্রতিটি মডেল একইভাবে ব্যর্থ হয়: একটি এনভেলপে type, সঠিক code, সমস্যাসৃষ্টিকারী param এবং details-এ
প্রতিটি সমস্যা থাকে, যাতে কোনো এজেন্ট গদ্য না পড়েই রিকোয়েস্ট ঠিক করতে পারে। অবৈধ রিকোয়েস্টের জন্য কোনো চার্জ হয় না।
{
"error": {
"type": "invalid_request",
"code": "invalid_input",
"message": "duration must be one of 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.",
"param": "duration",
"details": [ { "param": "duration", "message": "duration must be one of 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15." } ],
"request_id": null,
"doc_url": "https://doitong.com/developers/docs/errors#invalid_input"
}
}
প্রতিটি type ও code Errors-এ তালিকাভুক্ত আছে।
মূল্য নির্ধারণ
মূল্য USD ও API ক্রেডিটে দেওয়া হয় এবং রান করার আগে প্রতিটি মডেল পেজে দেখানো হয়। প্রতিটি রিকোয়েস্টে cost-এর
সঙ্গে credits, usd, charged এবং refunded থাকে। রিকোয়েস্ট গ্রহণ করা হলে রানটির জন্য চার্জ হয়; failed ও
canceled রিকোয়েস্টের অর্থ স্বয়ংক্রিয়ভাবে ফেরত দেওয়া হয়। কিছু মডেলের মূল্য ইনপুট থেকেই নির্ধারিত হয়, কিছু
আপনার পাঠানো ফাইলের দৈর্ঘ্য বা আকার অনুযায়ী, আবার অন্যগুলো প্রতি রান আনুমানিক মূল্য হিসেবে চার্জ করে: যেভাবেই
হোক, কোটই আপনার পরিশোধযোগ্য মূল্য। কয়েকটি মডেল (ভাষা ও ভিশন মডেল, ভয়েস, প্রসেসিং-টাইম টুল) ব্যবহার অনুযায়ী
চার্জ হয়: কোট হলো রানটির সর্বোচ্চ সম্ভাব্য খরচ, এবং রানটি যে অংশ ব্যবহার করেনি তা স্বয়ংক্রিয়ভাবে ফেরত দেওয়া হয়।
দেখুন Pricing।
MCP ও AI এজেন্ট
একই Bearer কী ব্যবহার করে যেকোনো MCP ক্লায়েন্টকে https://api.doitong.com/v1/mcp-এ সংযুক্ত করুন। আপনার এজেন্ট ক্যাটালগ
সার্চ করতে, মডেলের কোট নিতে ও রান করতে এবং প্রতিটি ডকুমেন্টেশন পেজ Markdown হিসেবে পড়তে পারবে।
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
পরবর্তী ধাপ
- সব মডেল ব্রাউজ করুন। প্রতিটি পেজে একটি রিকোয়েস্ট বিল্ডার আছে, যা আপনার জন্য কোড লিখে দেয়।
- রিকোয়েস্টের জীবনচক্র জানুন: Requests।
- প্রতিটি মডেলে একই প্যারামিটারের নাম ব্যবহার করুন: Parameters।
- কোনো AI কোডিং এজেন্টের সঙ্গে কাজ করছেন? তাকে https://doitong.com/developers/llms.txt দিন অথবা MCP server-এর সঙ্গে সংযুক্ত করুন।