فوری آغاز
چند منٹ میں اپنی پہلی تخلیق چلائیں۔ تمام 1,496 ماڈل ایک ہی قسم کی درخواست لیتے ہیں اور تصویر، ویڈیو اور آڈیو کے لیے ایک ہی درخواست آبجیکٹ واپس کرتے ہیں: اسے یہاں ایک بار سیکھیں۔
1. 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 کریڈٹس میں ہوتی ہے: 1,000 API کریڈٹس = $1، اور ہر ماڈل کی قیمت اس کے بنانے والے کی مقررہ قیمت کے عین مطابق ہوتی ہے۔ https://doitong.com/developers/dashboard#balance پر ٹاپ اَپ کریں۔
2. قیمت معلوم کریں، پھر چلائیں
POST /quote/{model_id} ان پٹ JSON لیتا ہے اور عین قیمت واپس کرتا ہے۔ اسے کلید کی ضرورت نہیں اور اس کی کوئی قیمت نہیں۔
اسی ان پٹ کو چلانے کی لاگت بھی یہی ہوتی ہے: کوٹ ہی چارج ہے۔ (استعمال کے حساب سے چارج ہونے والا ماڈل مستثنیٰ ہے:
اس کا کوٹ زیادہ سے زیادہ ممکنہ لاگت ہوتا ہے، اور غیر استعمال شدہ حصہ چلنے کے بعد واپس کر دیا جاتا ہے۔)
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
}
3. اسٹیٹس دیکھیں
اگر انتظار ختم ہونے پر ماڈل ابھی کام کر رہا ہو تو آپ کو درخواست کی id اور موجودہ status کے ساتھ 202 Accepted ملتا ہے۔
ہر درخواست ایک ہی لائف سائیکل سے گزرتی ہے:
-
queuedقبول اور چارج کر دی گئی، ورکر کا انتظار ہے -
runningماڈل تخلیق کر رہا ہے -
حتمی اسٹیٹس:
succeededکوٹ کی رقم چارج کر دی گئی؛ outputs[] میں ہمارے اسٹوریج کے URLs موجود ہیںfailedخودکار طور پر رقم واپس کر دی گئی؛ خرابی کی وجہ درج ہے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 دیکھیں)۔
4. فائلیں
کسی بھی عوامی 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}'
خرابیاں
ہر ماڈل ایک ہی طرح ناکام ہوتا ہے: ایک envelope میں 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 سے جوڑیں۔