Preverjanje pristnosti
Vsak klic, ki zažene model ali prebere vaše zahteve, potrebuje ključ API. Katalog (GET /models,
GET /categories), POST /quote in dokument OpenAPI so javni.
Ključi API
Ključe ustvarjate in preklicujete na naslovu https://doitong.com/developers/dashboard#keys. Ključ je videti
kot doitong_, ki mu sledi 64 šestnajstiških znakov, in je prikazan samo enkrat, ko ga ustvarite. Pošljite ga v
glavi Authorization:
curl https://api.doitong.com/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
X-API-Key: <key> deluje prav tako.
Zahteva brez ključa prejme 401 s kodo missing_api_key; neznan, preklican ali potekel ključ prav tako prejme 401.
Obsegi
Vsak ključ ima obsege. API modelov preverja naslednje:
| Dejanje | Potreben obseg |
|---|---|
| Zagon modela, preklic zahteve, brisanje datotek zahteve, sprememba nastavitve shrambe | models:run (delujejo tudi ključi s starejšima obsegoma images:create ali videos:create) |
| Ustvarjanje URL-ja za nalaganje | models:run ali media:upload |
| Branje zahtev in računa | models:read (ključ, ki lahko zaganja modele, lahko tudi bere) |
Novi ključi privzeto dobijo models:read in models:run. Klic brez ustreznega obsega prejme 403 s kodo
insufficient_scope.
Proračuni kreditov
Ključ ima lahko lasten proračun v kreditih API (1000 API kreditov = 1 $), ki ga nastavi lastnik računa: skupni proračun,
dnevni proračun (zadnjih 24 ur) ali oboje. Pred zaračunavanjem izvedbe se strošek preveri glede na to, koliko je
ključ že porabil prek tega API-ja (brez upoštevanja vračil). Izvedba, ki bi presegla proračun, je zavrnjena z 402 budget_exceeded,
noben znesek pa ni zaračunan.
Ključ brez proračuna lahko
porabi največ toliko, kolikor znaša stanje API. Ločeno velja, da izvedba, ki je stanje API ne more pokriti, prejme 402 insufficient_credits
z top_up_url.
GET https://api.doitong.com/v1/account prikazuje stanje API in preostali proračun ključa (oboje v kreditih 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 je null, če ključ nima lastnega proračuna.
Omejitve hitrosti
Vsak ključ lahko izvede 3600 zahtev na uro, razen če je bila njegova omejitev nastavljena drugače. Vsak preverjeni odgovor vsebuje trenutno stanje:
| Glava | Pomen |
|---|---|
X-RateLimit-Limit |
Število dovoljenih zahtev v trenutnem obdobju |
X-RateLimit-Remaining |
Preostalo število zahtev v trenutnem obdobju |
X-RateLimit-Reset |
Unixov čas ponastavitve obdobja |
Ko presežete omejitev, prejmete 429 z glavo Retry-After (sekunde). Dolgo preverjanje z ?wait= šteje kot ena zahteva
na klic, zato je čakanje učinkovitejše od hitrega preverjanja.
Na račun velja tudi omejitev 10 zahtev v izvajanju (queued ali running). Zagon še ene vrne
429 too_many_inflight; znova jo zaženite, ko se ena od njih konča.