Hitelesítés
Minden olyan híváshoz, amely modellt futtat vagy beolvassa a kéréseidet, API-kulcs szükséges. A katalógus (GET /models, GET /categories), a POST /quote és az OpenAPI-dokumentum nyilvános.
API-kulcsok
Kulcsokat itt hozhatsz létre és vonhatsz vissza: https://doitong.com/developers/dashboard#keys. Egy kulcs a doitong_ előtagból és 64 hexadecimális karakterből áll, és csak egyszer jelenik meg, létrehozásakor. Küldd el az Authorization fejlécben:
curl https://api.doitong.com/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
Az X-API-Key: <key> is működik.
A kulcs nélküli kérés 401 választ kap missing_api_key kóddal; az ismeretlen, visszavont vagy lejárt kulcs szintén 401 választ kap.
Hatókörök
Minden kulcshoz hatókörök tartoznak. A modell API ezeket ellenőrzi:
| Művelet | Szükséges hatókör |
|---|---|
| Modell futtatása, kérés megszakítása, a kérés fájljainak törlése, a tárhelybeállítás módosítása | models:run (a régebbi images:create vagy videos:create hatókörrel rendelkező kulcsok is működnek) |
| Feltöltési URL létrehozása | models:run vagy media:upload |
| Kérések és fiók olvasása | models:read (a modelleket futtatni képes kulcsok olvasni is tudnak) |
Az új kulcsok alapértelmezés szerint models:read és models:run hatókört kapnak. A megfelelő hatókör nélküli hívás 403 választ kap insufficient_scope kóddal.
Kreditkeretek
Egy kulcshoz saját API-kreditkeret tartozhat (1000 API-jóváírás = 1 $), amelyet a fiók tulajdonosa állít be: teljes keret, napi keret (az elmúlt 24 órára), vagy mindkettő. Mielőtt egy futtatást kiszámláznánk, a költséget összevetjük azzal, amit a kulcs már elköltött ezen az API-n keresztül (a visszatérítésekkel korrigálva). A keretet túllépő futtatást elutasítjuk 402 budget_exceeded hibával, és nem számítunk fel díjat.
A keret nélküli kulcs legfeljebb az API-egyenleg erejéig költhet. Ettől függetlenül, ha az API-egyenleg nem fedezi a futtatást, 402 insufficient_credits választ kapsz egy top_up_url értékkel.
A GET https://api.doitong.com/v1/account megjeleníti az API-egyenleget és a kulcshoz fennmaradó keretet (mindkettőt API-kreditekben):
{
"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_..."
}
A budget_remaining értéke null, ha a kulcsnak nincs saját kerete.
Sebességkorlátok
Minden kulcs óránként 3600 kérést indíthat, kivéve, ha a korlátot ettől eltérően állították be. Minden hitelesített válasz tartalmazza az aktuális állapotot:
| Fejléc | Jelentés |
|---|---|
X-RateLimit-Limit |
Az aktuális időablakban engedélyezett kérések |
X-RateLimit-Remaining |
Az aktuális időablakban fennmaradó kérések |
X-RateLimit-Reset |
Az időablak alaphelyzetbe állításának Unix-ideje |
A korlát túllépésekor 429 választ kapsz egy Retry-After fejléccel (másodperc). A ?wait= paraméterrel végzett hosszú lekérdezés hívásonként egy kérésnek számít, ezért a várakozás olcsóbb, mint a gyakori lekérdezés.
Fiókonként emellett legfeljebb 10 folyamatban lévő kérés lehet (queued vagy running). Egy további indítása 429 too_many_inflight választ ad; indítsd újra, miután egy befejeződött.