Klaidos ir limitai
MarkdownAtsakymų kodai, jų reikšmė ir ką daryti. Visos klaidos — JSON formatu ir su Request ID.
Visas vadovas
Klaidos formatas
Klaida pateikiama iškviesto API formatu: objektas error OpenAI atveju, {"type": "error", "error": {...}} Anthropic atveju ir error su laukais status ir details Gemini atveju. Todėl SDK jas atpažįsta kaip įprastas API klaidas.
error.codeirerror.reason— klaidos klasė iš toliau pateiktos lentelės; jie sutampa.error.type— standartinė formato reikšmė (pavyzdžiui,invalid_request_errorarbaserver_error).error.request_id(Anthropic atveju —request_idaukščiausiame lygyje), antraštėX-Request-IDir pranešimo teksto pabaiga — užklausos identifikatorius.- Gemini atveju klasė yra lauke
error.details:ErrorInfo.reason— tas pats kodas didžiosiomis raidėmis (pavyzdžiui,MODEL_OVERLOADED),domain—ailoot.ai; užklausos identifikatorius — laukeRequestInfo.requestId. - Gemini formatu 5xx klaida, kurios negalima automatiškai kartoti, ir
result_pending_checkpateikiamos su būsena 409 irstatusABORTED: taip Gemini SDK ir CLI patys jų nekartoja. Klaidos klasė — laukeErrorInfo.reason(pavyzdžiui,MODEL_TIMEOUTarbaRESULT_PENDING_CHECK). - OpenAI formato atsakyme taip pat yra aukščiausio lygio laukai
codeirmessage— senesniems klientams.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}{
"type": "error",
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"reason": "invalid_api_key",
"message": "… Nothing was charged. … Request ID: 94ed3e31-4373-41ce-bf8a-0d1ed3f7235e."
},
"request_id": "94ed3e31-4373-41ce-bf8a-0d1ed3f7235e"
}{
"error": {
"code": 401,
"status": "UNAUTHENTICATED",
"message": "The API key is not valid. Nothing was charged. … Request ID: e7aa743b-9d0d-4064-b206-2562609f545b.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "INVALID_API_KEY",
"domain": "ailoot.ai",
"metadata": {
"code": "invalid_api_key",
"reason": "invalid_api_key",
"request_id": "e7aa743b-9d0d-4064-b206-2562609f545b"
}
},
{
"@type": "type.googleapis.com/google.rpc.RequestInfo",
"requestId": "e7aa743b-9d0d-4064-b206-2562609f545b"
}
]
}
}Klaidų kodai
| HTTP | Klasė (reason) | Kas nutiko | Ką daryti |
|---|---|---|---|
| 400 | invalid_request | Užklausa netaisyklinga: netinkamas turinys ar parametras; modelis nepalaiko užklausos lauko, priedo ar įrankio; raktas perduotas adrese | Pataisykite užklausą pagal klaidos tekstą: pašalinkite nepalaikomą lauką, priedą ar įrankį; raktą perduokite antraštėje. Atmetimas dėl nepalaikomo lauko, priedo ar įrankio įvyksta prieš rezervuojant lėšas — nieko nenurašyta |
| 400 | context_length_exceeded | Užklausa ilgesnė už modelio kontekstą | Sutrumpinkite istoriją arba pasirinkite didesnio konteksto modelį |
| 400 | content_policy_violation | Užklausa atmesta pagal modelio taisykles | Performuluokite užklausą |
| 401 | invalid_api_key | Rakto nėra arba jis neteisingas | Patikrinkite, ar perduotas visas raktas |
| 401 | api_key_disabled | Raktas išjungtas | Įjunkite arba sukurkite naują raktą |
| 402 | insufficient_balance, insufficient_quota | Nepakanka laisvo balanso net minimaliam rezervui (insufficient_quota — tas pats atvejis OpenAI SDK įprasta forma) | Papildykite balansą arba sumažinkite max_tokens |
| 402 | api_key_quota_exhausted | Išnaudotas bendras rakto išlaidų limitas | Padidinkite rakto limitą paskyroje |
| 402 | payment_disputed | Paskyroje yra skola dėl ginčijamo mokėjimo | Naujos užklausos sustabdytos, kol skola padengiama — rašykite pagalbos tarnybai |
| 403 | api_key_expired | Rakto galiojimo laikas baigėsi | Sukurkite naują raktą |
| 403 | account_inactive | Jūsų paskyra išjungta | Rašykite pagalbos tarnybai |
| 403 | permission_denied | Ši užklausa raktui draudžiama (pavyzdžiui, pagal IP) | Patikrinkite rakto apribojimus |
| 404 | model_not_found | Tokio modelio nėra | Patikrinkite ID pagal /v1/models |
| 404 | unsupported_endpoint | Modelis neveikia šiuo formatu | Pasirinkite kitą formatą arba modelį |
| 404 | not_found | Tokio kelio ar objekto nėra (pavyzdžiui, užduoties) | Patikrinkite adresą ir identifikatorių |
| 409 | duplicate_request | Operacija su tuo pačiu idempotentiškumo raktu jau priimta ir galbūt užbaigta | Patikrinkite pirmos operacijos rezultatą, naujos nesiųskite |
| 409 | not_ready, video_not_ready | Vaizdo įrašas ar kita užduotis dar neparuošta | Būseną patikrinkite vėliau |
| 409, 503 | result_pending_check | Tiksliname užklausos rezultatą. Vaizdo užduoties atveju tai žyma result_pending_check: true būsenos atsakyme, pati užduotis lieka in_progress | Nesiųskite užklausos pakartotinai — būsena atsiras istorijoje (GET https://ailoot.ai/api/v1/usage). Vaizdo užduoties nekurkite iš naujo: patikrinkite ją vėliau per GET /v1/videos/{id} |
| 410 | model_retired | Modelis nebeteikiamas | Pasirinkite naują versiją per GET /v1/models |
| 413 | request_too_large | Užklausos turinys per didelis | Sumažinkite failus arba istoriją |
| 429 | rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_full | Per daug užklausų arba vienalaikių užklausų iš jūsų paskyros | Palaukite (antraštė Retry-After, paprastai 10 s) ir bandykite dar kartą |
| 429 | usage_limit_reached | Išnaudotas rakto išlaidų langas (5 valandos, 1 diena arba 7 dienos) | Palaukite, kol langas atsinaujins, arba padidinkite rakto limitą |
| 500 | internal_error | Ailoot klaida | Rašykite pagalbos tarnybai, nurodydami Request ID |
| 502 | invalid_model_response, empty_response, incomplete_response | Modelis grąžino netaisyklingą, tuščią arba nepilną atsakymą | Raskite Request ID paskyros istorijoje. Jei ten yra rezultatas ar nurašymas, pakartojimas sukurs antrą mokamą užklausą. Įrašo nebuvimas nepatvirtina, kad užklausa nebuvo išsiųsta arba nebuvo įvykdyta: nekartokite siuntimo, kurio būsena nežinoma; kreipkitės į pagalbos tarnybą nurodydami Request ID. |
| 502 | result_not_delivered | Rezultatas nepristatytas dėl Ailoot kaltės, rezervas arba nurašytos lėšos grąžinti | Užklausą galima siųsti iš naujo |
| 503 | model_overloaded | Modelis laikinai perkrautas | Jei X-Should-Retry: true — bandykite dar kartą po Retry-After nurodyto sekundžių skaičiaus; jei false — pirmiausia patikrinkite Request ID istorijoje |
| 503 | model_unavailable | Modelis laikinai neprieinamas | Pasirinkite kitą modelį. Jei X-Should-Retry: true — bandykite dar kartą po Retry-After nurodyto sekundžių skaičiaus; jei false — pirmiausia patikrinkite Request ID istorijoje |
| 503 | service_unavailable | Laikinas sutrikimas Ailoot pusėje | Jei X-Should-Retry: true — bandykite dar kartą po Retry-After nurodyto sekundžių skaičiaus; jei false — pirmiausia patikrinkite Request ID istorijoje |
| 503 | charge_not_confirmed | Atsakymas nepateiktas: nepavyko patvirtinti nurašymo; rezervas grąžintas, lėšos nenurašytos | Jei X-Should-Retry: true — bandykite dar kartą po Retry-After nurodyto sekundžių skaičiaus; jei false — pirmiausia patikrinkite Request ID istorijoje |
| 504 | model_timeout | Modelis laiku neatsakė, rezultatas dar gali atsirasti | Nesiųskite užklausos iš naujo, kol nepatikrinsite Request ID istorijoje |
Modelio atsakymų ir rezultato patikros kodai (502, 503 ir 504) dabar įvardija modelį arba užklausą: model_unavailable, model_timeout, invalid_model_response, incomplete_response, charge_not_confirmed ir result_pending_check. Jei jūsų kodas lygina error.code su ankstesnėmis reikšmėmis, pakeiskite jas lentelės kodais; ankstesnių ir naujų kodų atitikmenis nurodys pagalbos tarnyba.
Kada kartoti užklausą
- Pirmiausia pažiūrėkite į X-Should-Retry: kai
false,result_pending_checkarbamodel_timeoutnekartokite automatiškai. Raskite Request ID paskyros istorijoje: ten matomas rezultatas ir nurašymas. - Kartoti saugu gavus X-Should-Retry: true: palaukite
Retry-Aftersekundžių. 5xx atveju vien kodo nepakanka: rezultatas jau galėjo atsirasti. Pirmiausia patikrinkite paskyros istoriją arba rašykite pagalbos tarnybai, nurodydami Request ID. Tai ypač svarbu vaizdams, vaizdo įrašams, muzikai ir ilgiems agentų žingsniams. - Pakartojimas nepadės: 400, 401, 402, 403, 404 — pirmiausia pataisykite užklausą, raktą arba balansą.
Limitai
Dažnis ir vienalaikių užklausų skaičius ribojami visai jūsų paskyrai, o ne atskiram raktui. Viršijus grąžinama 429 rate_limit_exceeded su antrašte Retry-After: 10. Jei perkrautas pats modelis — 503 model_overloaded su Retry-After: 30. Jei reikia didesnės apkrovos, kreipkitės į pagalbos tarnybą.
Išlaidų limitai nustatomi raktui: bendras limitas — 402 api_key_quota_exhausted, 5 valandų, 1 dienos ir 7 dienų langai — 429 usage_limit_reached. Plačiau — Raktai ir API adresas.
NVIDIA modeliai: eilė
Modelių sąrašo galima prašyti ir esant nuliniam balansui; generavimui reikia lėšų rezervui. NVIDIA modeliai (Nemotron ir kiti) veikia per bendrą eilę: esant didelei apkrovai atsakymas gali vėluoti arba bus grąžinta klaida „modelis laikinai perkrautas“ su Retry-After antrašte — kartokite praėjus nurodytam laikui. Kainos pateiktos kataloge, nurašymas vyksta kaip kitų modelių.
Dydžio limitus nustato modelis: kontekstą (kiek žetonų galima siųsti) ir didžiausią atsakymo ilgį. Jie nurodyti kataloge.
Istorija ir išlaidos
Istorija ir išlaidos · GET https://ailoot.ai/api/v1/usage · JWT · Authorization: Bearer $TOKEN
JWT ≠ sk-… · Prisijungimas ir seansai