त्वरित शुरुआत
कुछ मिनटों में अपना पहला निर्माण चलाएँ। सभी 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[] में हमारे स्टोरेज के URL हैं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[] में प्रकार, कंटेंट प्रकार और, जब ज्ञात हों, तो आयाम और अवधि के साथ सूचीबद्ध करता है।
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"
}
}
हर प्रकार और कोड Errors में सूचीबद्ध है।
मूल्य निर्धारण
कीमतें USD और API क्रेडिट में होती हैं और चलाने से पहले हर मॉडल पेज पर दिखाई जाती हैं। हर अनुरोध में cost के साथ credits, usd, charged और refunded होते हैं। अनुरोध स्वीकार होने पर रन का शुल्क लिया जाता है; failed और canceled अनुरोधों का अपने-आप रिफंड हो जाता है। कुछ मॉडल इनपुट के आधार पर सटीक कीमत लेते हैं, कुछ आपके द्वारा भेजी गई फ़ाइलों की लंबाई या आकार के आधार पर, और अन्य प्रति रन अनुमानित कीमत लेते हैं: किसी भी स्थिति में आप कोट में दी गई राशि ही चुकाते हैं। कुछ मॉडल (भाषा और विज़न मॉडल, वॉइस तथा प्रोसेसिंग-समय टूल) उपयोग के आधार पर शुल्क लेते हैं: कोट रन की अधिकतम लागत होती है, और रन द्वारा उपयोग न की गई राशि अपने-आप रिफंड कर दी जाती है। Pricing देखें।
MCP और AI एजेंट
किसी भी MCP क्लाइंट को उसी Bearer कुंजी के साथ 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 सर्वर से कनेक्ट करें।