Autentisering
Varje anrop som kör en modell eller läser dina begäranden behöver en API-nyckel. Katalogen (GET /models, GET /categories), POST /quote och OpenAPI-dokumentet är offentliga.
API-nycklar
Skapa och återkalla nycklar på https://doitong.com/developers/dashboard#keys. En nyckel ser ut som doitong_ följt av 64 hexadecimala tecken och visas bara en gång när du skapar den. Skicka den i Authorization-headern:
curl https://api.doitong.ru/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
X-API-Key: <key> fungerar också.
En begäran utan nyckel får 401 med koden missing_api_key; en okänd, återkallad eller utgången nyckel får också 401.
Omfattningar
Varje nyckel har omfattningar. Modell-API:t kontrollerar dessa:
| Åtgärd | Krävd omfattning |
|---|---|
| Köra en modell, avbryta en begäran, ta bort en begärans filer, ändra lagringsinställningen | models:run (nycklar med de äldre images:create eller videos:create fungerar också) |
| Skapa en uppladdnings-URL | models:run eller media:upload |
| Läsa begäranden, konto | models:read (en nyckel som får köra modeller får också läsa) |
Nya nycklar får models:read och models:run som standard. Ett anrop utan rätt omfattning får 403 med koden insufficient_scope.
Kreditbudgetar
En nyckel kan ha en egen budget i API-krediter (1 000 API-krediter = 1 $), som kontoägaren anger: en total budget, en daglig budget (senaste 24 timmarna) eller båda. Innan en körning debiteras kontrolleras kostnaden mot vad nyckeln redan har spenderat via detta API (netto efter återbetalningar). En körning som skulle överskrida gränsen nekas med 402 budget_exceeded och inget debiteras.
En nyckel utan budget kan spendera upp till API-saldot. Separat får en körning som API-saldot inte kan täcka 402 insufficient_credits med en top_up_url.
GET https://api.doitong.ru/v1/account visar API-saldot och nyckelns återstående budget (båda i API-krediter):
{
"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 är null när nyckeln inte har en egen budget.
Hastighetsbegränsningar
Varje nyckel får göra 3600 begäranden per timme om inte gränsen har ställts in annorlunda. Varje autentiserat svar innehåller det aktuella tillståndet:
| Header | Betydelse |
|---|---|
X-RateLimit-Limit |
Antal begäranden som tillåts i det aktuella fönstret |
X-RateLimit-Remaining |
Antal begäranden som återstår i det aktuella fönstret |
X-RateLimit-Reset |
Unix-tid då fönstret återställs |
Över gränsen får du 429 med en Retry-After-header (sekunder). Lång polling med ?wait= räknas som en begäran per anrop, så det är billigare att vänta än att polla ofta.
Det finns också en gräns på 10 pågående begäranden (queued eller running) per konto. Om du startar ytterligare en returneras 429 too_many_inflight; starta den igen när en annan är klar.