אימות
כל קריאה שמריצה מודל או קוראת את הבקשות שלכם דורשת מפתח API. הקטלוג (GET /models, GET /categories), POST /quote ומסמך OpenAPI הם ציבוריים.
מפתחות API
צרו ובטלו מפתחות בכתובת https://doitong.com/developers/dashboard#keys. מפתח נראה כמו doitong_ ואחריו 64 תווים הקסדצימליים, והוא מוצג פעם אחת בלבד, בעת יצירתו. שלחו אותו בכותרת Authorization:
curl https://api.doitong.ru/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
גם X-API-Key: <key> פועל.
בקשה ללא מפתח מקבלת 401 עם הקוד missing_api_key; מפתח לא מוכר, שבוטל או שפג תוקפו מקבל גם הוא 401.
היקפים
כל מפתח כולל היקפים. ה-API של המודלים בודק את אלה:
| פעולה | היקף נדרש |
|---|---|
| הרצת מודל, ביטול בקשה, מחיקת קובצי בקשה, שינוי הגדרת האחסון | models:run (גם מפתחות עם images:create או videos:create הישנים פועלים) |
| יצירת URL להעלאה | models:run או media:upload |
| קריאת בקשות וחשבון | models:read (גם מפתח שיכול להריץ מודלים יכול לקרוא) |
מפתחות חדשים מקבלים models:read ו-models:run כברירת מחדל. קריאה ללא ההיקף המתאים מקבלת 403 עם הקוד insufficient_scope.
תקציבי קרדיטים
מפתח יכול לכלול תקציב משלו בקרדיטי API (1,000 קרדיטי API = 1 $), שנקבע על ידי בעל החשבון: תקציב כולל, תקציב יומי (24 השעות האחרונות), או שניהם. לפני חיוב הרצה, העלות נבדקת מול הסכום שהמפתח כבר הוציא דרך API זה (בניכוי החזרים). הרצה שתחרוג ממנו נדחית עם 402 budget_exceeded ולא מתבצע חיוב.
מפתח ללא תקציב יכול להוציא עד גובה יתרת ה-API. בנפרד, הרצה שיתרת ה-API אינה יכולה לכסות מקבלת 402 insufficient_credits עם top_up_url.
GET https://api.doitong.ru/v1/account מציג את יתרת ה-API ואת התקציב שנותר למפתח (שניהם בקרדיטי API):
{
"object": "account",
"credits": 125000,
"balance": { "credits": 125000, "usd": "125.00" },
"top_up_url": "https://doitong.ru/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 שבו החלון מתאפס |
חריגה מהמגבלה מחזירה 429 עם כותרת Retry-After (בשניות). תשאול ארוך עם ?wait= נספר כבקשה אחת בכל קריאה, ולכן המתנה זולה יותר מתשאול מהיר.
קיימת גם מגבלה של 10 בקשות בתהליך (queued או running) לכל חשבון. התחלה של בקשה נוספת מחזירה 429 too_many_inflight; התחילו אותה שוב לאחר שאחת מהן תסתיים.