प्रमाणीकरण
हर वह कॉल जो किसी मॉडल को चलाती है या आपके अनुरोध पढ़ती है, उसके लिए API कुंजी आवश्यक है। कैटलॉग (GET /models,
GET /categories), POST /quote और OpenAPI दस्तावेज़ सार्वजनिक हैं।
API कुंजियाँ
https://doitong.com/developers/dashboard#keys पर कुंजियाँ बनाएँ और रद्द करें। कुंजी doitong_ के बाद आने वाले
64 हेक्स वर्णों जैसी दिखती है और इसे बनाने के समय केवल एक बार दिखाया जाता है। इसे
Authorization हेडर में भेजें:
curl https://api.doitong.com/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
X-API-Key: <key> भी काम करता है।
बिना कुंजी वाले अनुरोध कोड missing_api_key के साथ 401 प्राप्त करते हैं; अज्ञात, रद्द की गई या समाप्त हो चुकी कुंजी को भी 401 मिलता है।
स्कोप
हर कुंजी में स्कोप होते हैं। मॉडल API इनकी जाँच करता है:
| कार्रवाई | आवश्यक स्कोप |
|---|---|
| मॉडल चलाना, अनुरोध रद्द करना, अनुरोध की फ़ाइलें हटाना, स्टोरेज सेटिंग बदलना | models:run (पुराने images:create या videos:create वाली कुंजियाँ भी काम करती हैं) |
| अपलोड URL बनाना | models:run या media:upload |
| अनुरोध और खाता पढ़ना | models:read (मॉडल चलाने वाली कुंजी इन्हें भी पढ़ सकती है) |
नई कुंजियों को डिफ़ॉल्ट रूप से models:read और models:run मिलते हैं। सही स्कोप के बिना कॉल कोड
insufficient_scope के साथ 403 प्राप्त करती है।
क्रेडिट बजट
खाता स्वामी द्वारा API क्रेडिट (1,000 API क्रेडिट = $1) में किसी कुंजी का अपना बजट सेट किया जा सकता है: कुल बजट, दैनिक बजट (पिछले 24 घंटे), या दोनों। किसी रन के लिए शुल्क लेने से पहले, इस API के माध्यम से कुंजी द्वारा पहले ही खर्च की गई राशि (रिफंड घटाने के बाद) के विरुद्ध लागत की जाँच की जाती है। जो रन इस सीमा से अधिक हो जाता, उसे 402 budget_exceeded के साथ अस्वीकार कर दिया जाता है और कोई शुल्क नहीं लिया जाता।
बिना बजट वाली कुंजी API शेष राशि तक खर्च कर सकती है। अलग से, जिस रन की लागत API शेष राशि से पूरी नहीं हो सकती, उसे 402 insufficient_credits के साथ top_up_url मिलता है।
GET https://api.doitong.com/v1/account API शेष राशि और कुंजी का शेष बजट (दोनों API क्रेडिट में) दिखाता है:
{
"object": "account",
"credits": 125000,
"balance": { "credits": 125000, "usd": "125.00" },
"top_up_url": "https://doitong.com/developers/dashboard#balance",
"key": {
"name": "Production server",
"prefix": "doitong_3fa9c1e...",
"scopes": ["models:read", "models:run"],
"budget_remaining": 50000,
"rate_limit": 3600,
"rate_limit_remaining": 3571
},
"webhook_signing_secret": "whsec_..."
}
जब कुंजी का अपना कोई बजट नहीं होता, तब budget_remaining का मान null होता है।
रेट सीमाएँ
हर कुंजी प्रति घंटे 3600 अनुरोध कर सकती है, जब तक कि उसकी सीमा अलग तरीके से सेट न की गई हो। हर प्रमाणीकृत प्रतिक्रिया में वर्तमान स्थिति होती है:
| हेडर | अर्थ |
|---|---|
X-RateLimit-Limit |
वर्तमान विंडो में अनुमत अनुरोध |
X-RateLimit-Remaining |
वर्तमान विंडो में बचे अनुरोध |
X-RateLimit-Reset |
विंडो रीसेट होने का Unix समय |
सीमा पार करने पर आपको Retry-After हेडर (सेकंड) के साथ 429 मिलता है। ?wait= के साथ लंबे पोलिंग में प्रति कॉल एक अनुरोध गिना जाता है, इसलिए तेज़ी से पोलिंग करने की तुलना में प्रतीक्षा करना सस्ता है।
प्रति खाते प्रगति में (queued या running) 10 अनुरोधों की एक सीमा भी है। एक और शुरू करने पर 429 too_many_inflight मिलता है; किसी एक के पूरा होने के बाद इसे फिर शुरू करें।