अनुरोध
एक अनुरोध किसी एक मॉडल का एक कॉल होता है। इसमें एक id (req_…), एक स्थिति, API क्रेडिट में इसकी लागत (1000 = 1 USD), और सफल होने पर जनरेट की गई फ़ाइलें होती हैं। नीचे दिए गए हर एंडपॉइंट से, हर मॉडल के लिए यही ऑब्जेक्ट वापस आता है।
मॉडल ढूँढें
सभी 1,496 मॉडल का कैटलॉग सार्वजनिक JSON है (कुंजी की आवश्यकता नहीं):
curl "https://api.doitong.ru/v1/models?category=text-to-video&lab=Google&limit=20"
| क्वेरी पैरामीटर | अर्थ |
|---|---|
q |
नाम, id, निर्माता या टैग में मौजूद होने वाले सभी शब्द, जैसे kling 3। |
category |
एक श्रेणी id, जैसे text-to-video या upscale। GET https://api.doitong.ru/v1/categories सभी 21 श्रेणियों को उनकी संख्या के साथ सूचीबद्ध करता है। |
lab |
मॉडल का निर्माता, नाम या id से, जैसे Google या black-forest-labs। |
family |
पिछली पंक्ति से मिला family id: एक मॉडल के हर वैरिएंट (pro, fast, image-to-video, …)। |
mode |
exact (कीमत इनपुट से निर्धारित होती है), measured (इनपुट फ़ाइलों की लंबाई या आकार से), estimate (प्रति रन अनुमानित कीमत) या metered (वास्तविक उपयोग के अनुसार शुल्क, प्रति रन अधिकतम सीमा तक)। |
limit, cursor |
पेज का आकार (1 से 100, डिफ़ॉल्ट 50) और पिछले पेज का next_cursor। |
हर पंक्ति में id, name, lab, category, family, summary, tags, output_kind, docs_url और एक price ऑब्जेक्ट होता है (Pricing देखें)। GET https://api.doitong.ru/v1/models/{model_id} पूरा इनपुट और आउटपुट JSON Schema, मानक पैरामीटर नाम, कीमत के नियम और एक उदाहरण इनपुट जोड़ता है। अज्ञात category या mode के लिए 400 invalid_parameter मिलता है।
मॉडल चलाएँ
curl -X POST "https://api.doitong.ru/v1/run/{model_id}?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1842-cover" \
-d '{"prompt": "..."}'
- बॉडी मॉडल का इनपुट, यानी एक JSON ऑब्जेक्ट, होती है। हर मॉडल पेज इसके पैरामीटर सूचीबद्ध करता है।
- किसी भी शुल्क से पहले इनपुट की जाँच की जाती है। अमान्य इनपुट पर गलत
paramके साथ422 invalid_inputमिलता है और कोई शुल्क नहीं लगता। ?wait=N(अधिकतम 20 सेकंड) कॉल को तब तक रोकता है, जब तक अनुरोध पूरा न हो जाए या समय समाप्त न हो जाए।?webhook_url=https://…अनुरोध पूरा होने पर उस URL पर हस्ताक्षरित POST भेजता है (Webhooks देखें)।?storage=permanentया?storage=temporaryतय करता है कि आउटपुट फ़ाइलें कितने समय तक रखी जाएँ; इसके बिना खाते की सेटिंग लागू होती है (Where फ़ाइलें live देखें)।
अनुरोध के काम करने के दौरान प्रतिक्रिया 202 Accepted होती है और प्रतीक्षा के दौरान पूरा होने पर (या रीप्ले होने पर, नीचे देखें) 200 OK होती है। Location और Doitong-Request-Id हेडर अनुरोध का URL और id देते हैं।
स्थितियाँ
-
queuedस्वीकार और शुल्क लिया गया, वर्कर की प्रतीक्षा में -
runningमॉडल जनरेट कर रहा है -
अंतिम स्थितियाँ:
succeededकोटेशन का शुल्क लिया गया; outputs[] में हमारे स्टोरेज के URL हैंfailedअपने-आप रिफंड किया गया; एरर में कारण दिया गया हैcanceledपरिणाम से पहले रोका गया; रिफंड किया गया
| स्थिति | अर्थ | अंतिम |
|---|---|---|
queued |
स्वीकार किया गया और शुल्क लिया गया, वर्कर की प्रतीक्षा में। queue_position कतार में स्थान दिखा सकता है। |
नहीं |
running |
मॉडल जनरेट कर रहा है। | नहीं |
succeeded |
पूरा हुआ। outputs फ़ाइलों की सूची देता है। |
हाँ |
failed |
मॉडल या किसी सीमा ने इसे रोक दिया। error कारण बताता है। API क्रेडिट रिफंड किए जाते हैं। |
हाँ |
canceled |
परिणाम तैयार होने से पहले रद्द किया गया। API क्रेडिट रिफंड किए जाते हैं। | हाँ |
समय सीमा से अधिक चलने वाला अनुरोध timeout कोड के साथ विफल होता है और उसका रिफंड किया जाता है: इमेज के लिए 15 मिनट, वीडियो के लिए 60 मिनट, ऑडियो और बाकी सभी के लिए 30 मिनट।
अनुरोध ऑब्जेक्ट
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "flux/schnell",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:01Z",
"completed_at": "2026-10-20T12:00:02Z",
"queue_position": null,
"cost": { "credits": 3, "usd": "0.003", "charged": 3, "refunded": 0 },
"input": { "prompt": "..." },
"output": { "images": [ { "url": "https://content.doitong.com/dev-api/…/0-output.jpeg", "width": 1024, "height": 768 } ] },
"outputs": [
{ "type": "image", "url": "https://content.doitong.com/dev-api/…/0-output.jpeg", "content_type": "image/jpeg",
"width": 1024, "height": 768, "file_size": 183920, "stored": true }
],
"error": null,
"metrics": { "inference_seconds": 1.2 },
"storage": { "mode": "permanent", "bytes": 183920, "expires_at": null, "expired": false },
"urls": {
"self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
outputsहर मॉडल के लिए समान होता है: हर जनरेट की गई फ़ाइल के लिए एक एंट्री, जिसमेंtype(image,video,audio,fileया3d), हमारे स्टोरेज का एकurl,content_typeऔर ज्ञात होने परfile_size,width,height,durationहोते हैं।outputमॉडल का अपना परिणाम ऑब्जेक्ट होता है (इसके फ़ील्ड हर मॉडल पेज पर सूचीबद्ध हैं), जिसमें वही URLs होते हैं।storageबताता है कि फ़ाइलें कैसे रखी जाती हैं:mode(permanentयाtemporary), संग्रहीतbytes,expires_at(अस्थायी फ़ाइल हटाए जाने का समय, स्थायी फ़ाइलों के लिएnull) औरexpired(फ़ाइलें हट जाने के बादtrue)।cost.creditsAPI क्रेडिट में कॉल की कीमत (cost.usdUSD में),cost.chargedAPI शेष राशि से डेबिट की गई राशि औरcost.refundedवापस की गई राशि होती है।meteredमॉडल के लिएcost.creditsशुरुआत में रोकी गई अधिकतम राशि (cost.held) होती है; रन सफल होने परcost.settledउपयोग की राशि बताता है और अधिकतम राशि का शेषcost.refundedमें होता है (Charged by उपयोग देखें)।- अनुरोध विफल होने पर
error{ "type": …, "code": …, "message": … }होता है।
अनुरोध पढ़ें
curl "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
?wait=N(अधिकतम 20 सेकंड) लॉन्ग-पोल करता है: कॉल अनुरोध के अंतिम स्थिति में पहुँचते ही लौटता है, या N सेकंड बाद वर्तमान स्थिति के साथ लौटता है। परिणाम की प्रतीक्षा करने का यह सबसे सरल तरीका है।?logs=1मॉडल की प्रगति की लॉग पंक्तियाँ (अंतिम 50)logsके रूप में जोड़ता है।
आप केवल अपने खाते के अनुरोध पढ़ सकते हैं; किसी अन्य id के लिए 404 request_not_found मिलता है।
अनुरोधों की सूची बनाएँ
curl "https://api.doitong.ru/v1/requests?limit=20&status=succeeded&model=flux/schnell" \
-H "Authorization: Bearer $DOITONG_API_KEY"
नवीनतम पहले। limit 1 से 100 तक है (डिफ़ॉल्ट 20), status और model फ़िल्टर करते हैं। प्रतिक्रिया { "object": "list", "data": [ … ], "has_more": true, "next_cursor": "req_…" } होती है; अगले पेज के लिए cursor=<next_cursor> भेजें।
अनुरोध रद्द करें
curl -X POST "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
-H "Authorization: Bearer $DOITONG_API_KEY"
- मॉडल शुरू होने से पहले रद्द किया गया: स्थिति
canceledहो जाती है, API क्रेडिट रिफंड किए जाते हैं और आपको200मिलता है। - पहले से जनरेट हो रहा है: रद्द करने का अनुरोध आगे भेजा जाता है और आपको
"cancel_requested": trueके साथ202मिलता है। यदि मॉडल फिर भी पूरा हो जाता है, तो अनुरोध सामान्य रूप से सफल होता है और शुल्क लिया जाता है। - पहले से अंतिम स्थिति में है:
409 not_cancelable(पहले सेcanceledअनुरोध केवल200लौटाता है)।
अनुरोध की फ़ाइलें हटाएँ
curl -X DELETE "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/files" \
-H "Authorization: Bearer $DOITONG_API_KEY"
अनुरोध की आउटपुट फ़ाइलों की हमारी प्रतियाँ तुरंत हटाता है और उनका स्टोरेज शुल्क रोक देता है। प्रतिक्रिया storage.expired: true वाले अनुरोध ऑब्जेक्ट की होती है; इसके URLs रिकॉर्ड में बने रहते हैं, लेकिन अब काम नहीं करते। इसे फिर कॉल करने पर कुछ नहीं बदलता (200)। queued या running अनुरोध में अभी कोई फ़ाइल नहीं होती: 409 request_active। इसके लिए models:run आवश्यक है।
Idempotency: दो बार भुगतान किए बिना पुनः प्रयास
नेटवर्क विफल हो सकते हैं। रन को सुरक्षित रूप से दोबारा आज़माने के लिए Idempotency-Key हेडर भेजें (255 वर्णों तक की कोई भी स्ट्रिंग, प्रति ऑपरेशन अद्वितीय, जैसे आपका अपना ऑर्डर id):
- पहले जैसा ही key और body: आपको मूल अनुरोध वापस मिलता है (
200, हेडरIdempotent-Replayed: true) और दोबारा कोई शुल्क नहीं लिया जाता। - ऐसे रन के बाद वही key और body, जो मॉडल तक पहुँचने से पहले विफल हुआ था (
upstream_errorयाinternal_erroron submit,insufficient_credits,budget_exceeded,too_many_inflight): कुछ भी जनरेट नहीं हुआ और कोई शुल्क नहीं लिया गया, इसलिए विफलता लौटाने के बजाय पुनः प्रयास मॉडल को फिर चलाता है। - अलग body के साथ वही key:
409 idempotency_mismatch। - Keys उस API कुंजी तक सीमित होती हैं जिसने उन्हें भेजा है।
फ़ाइलें कहाँ रहती हैं
हर आउटपुट फ़ाइल अनुरोध को succeeded चिह्नित करने से पहले हमारे स्टोरेज में कॉपी की जाती है, इसलिए outputs में दिए गए URLs हमारे अपने होस्ट पर होते हैं और आप उनसे सीधे लिंक कर सकते हैं। वे कितने समय तक रहेंगी, यह आपकी पसंद है:
| मोड | अवधि | कीमत |
|---|---|---|
permanent (डिफ़ॉल्ट) |
जब तक आप उन्हें हटाएँ | प्रति GB प्रति माह 100 API क्रेडिट ($0.10), API शेष राशि से प्रतिदिन शुल्क |
temporary |
7 दिनों तक, फिर हटाई जाती हैं | निःशुल्क |
- खाता सेटिंग नए अनुरोधों के लिए तय करती है: डैशबोर्ड में "फ़ाइलें हमेशा के लिए रखें" स्विच, या
PATCH https://api.doitong.ru/v1/account/storageके साथ{"mode": "temporary"}।GET https://api.doitong.ru/v1/accountइसेstorageके अंतर्गत दिखाता है, साथ में आपके रखे गए bytes और मासिक अनुमान के साथ। - रन पर
?storage=permanent|temporary(MCPrunटूल काstorageआर्ग्युमेंट) उस रन के लिए इसे ओवरराइड करता है। - सेटिंग बदलने से आपके पास पहले से मौजूद फ़ाइलों पर कोई प्रभाव नहीं पड़ता; उन्हें
DELETE /requests/{id}/filesसे हटाएँ। - जब API शेष राशि स्टोरेज का भुगतान नहीं कर सकती, तो कोई शुल्क नहीं लिया जाता और आपको ईमेल मिलता है: 30 दिनों के भीतर टॉप-अप करें, अन्यथा रखी गई फ़ाइलें अस्थायी हो जाएँगी और 7 दिनों बाद हटा दी जाएँगी।
दुर्लभ स्थिति में जब हमारी कॉपी विफल हो जाती है, तो एंट्री में "stored": false होता है और URL मूल, कम समय तक उपलब्ध रहने वाला URL होता है: इसे जल्द डाउनलोड करें।