Pogreške
Grananje radite po kodu pogreške, nikad po poruci. Tablica nastaje iz OpenAPI dokumenta.
Greške
| Status | Kod | Značenje |
|---|---|---|
| 400 | invalid_request | Greška sheme. details.path pokazuje na problematično polje. |
| 401 | unauthorized | API ključ nedostaje ili je nepoznat. |
| 402 | quota_exceededRetry-After | Mjesečna kvota dosegnuta. Retry-After daje broj sekundi do prijelaza mjeseca. |
| 403 | key_revoked | Ključ postoji, ali se ne smije koristiti: opozvan je ili pretplata računa na Engine API više nije aktivna. Polje message govori o kojem se slučaju radi. |
| 404 | not_found | Takva ruta ne postoji — isto dobivate za ispravnu putanju s pogrešnom metodom. |
| 409 | idempotency_conflictRetry-After | Samo uz zaglavlje Idempotency-Key: ključ je već upotrijebljen za drugi zahtjev (idempotency_conflict — upotrijebite novi ključ) ili prvi zahtjev s njim još traje (idempotency_in_progress — ponovite nakon Retry-After i dobit ćete njegov odgovor). Nikad se ne naplaćuje. |
| 409 | idempotency_in_progressRetry-After | Samo uz zaglavlje Idempotency-Key: ključ je već upotrijebljen za drugi zahtjev (idempotency_conflict — upotrijebite novi ključ) ili prvi zahtjev s njim još traje (idempotency_in_progress — ponovite nakon Retry-After i dobit ćete njegov odgovor). Nikad se ne naplaćuje. |
| 413 | too_large | Ulaz iznad ograničenja (vidi Ograničenja). |
| 429 | busyRetry-After | Trenutačno na granici kapaciteta ili je — na bilo kojoj putanji s ključem — vaša adresa u minuti poslala previše nepoznatih API ključeva. Retry-After u sekundama; to se nikada ne broji u vašu kvotu. |
| 500 | internal | Neočekivana greška ili auth pozadina nije dostupna (zahtjevi se odbijaju — fail closed). |
| 503 | service_unavailable | Traženi motor trenutačno se ne može poslužiti — motor za nesting ili asinkroni max motor. Za max postoje dva uzroka, a polje message govori koji: sloj nije ugrađen u ovaj deployment, ili jest ugrađen ali worker koji rješava poslove ne odgovara. Fail-closed prije nego što se poziv rezervira, pa nikad ništa ne košta. |
| 504 | solve_timeout | Izračun je premašio svoju čvrstu vremensku granicu. Na pravokutnim rutama nameće je proxy; na /v1/optimize/nest motor nameće vlastiti, kraći proračun i odgovara kodom solve_timeout u uobičajenoj omotnici. Poziv od kojeg je proxy odustao ne naplaćuje se. |
Tijelo greške
Svaka greška koju sam motor proizvede koristi istu omotnicu. Grananje radite prema error, koji je stabilan kod; nikada prema message, čiji se tekst može promijeniti između izdanja. details je prisutan kod invalid_request, gdje path imenuje problematično polje, i kod too_large, gdje max i got daju ograničenje i ono što ste poslali.
Iznimka je tijelo zahtjeva iznad ograničenja veličine: ono umjesto toga nosi maxBytes. Nepoznati engine dodaje available, ID-jeve enginea koje ova instalacija prihvaća.
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
{
"error": "invalid_request",
"message": "parts[0].h: must be greater than 0",
"details": { "path": "parts[0].h" }
}HTTP/1.1 402 Payment Required
Retry-After: 41400
Content-Type: application/json; charset=utf-8
{ "error": "quota_exceeded", "message": "monthly quota exhausted" }- 402 i 429 oboje nose Retry-After zaglavlje u sekundama. Kod 402 odbrojava do resetiranja kvote u 00:00 UTC prvog dana sljedećeg mjeseca; kod 429 riječ je o kratkom odgađanju, a 429 nikada ne troši kvotu — rezervirani poziv se vraća.
- Odbijanja javnog demo ključa koriste istu omotnicu: izvan njegova opsega (nesting, max engine, usage, jobs, import, posao iznad njegovih ograničenja veličine) 403 key_revoked s details.reason "demo_scope"; na njegovu ograničenju brzine 429 busy s details.reason "demo_rate_limit" i details.limit. Oba nose details.testKeyUrl, gdje se stvara besplatni testni ključ, a svaki demo odgovor ima zaglavlje X-CutOptim-Demo: true.
- Greška usmjeravanja odgovara s not_found, kodom namjerno izvan gornjeg popisa jer ga proizvodi usmjerivač, a ne API ugovor. Dobivate 404, a ne 405, kada je putanja ispravna, ali je metoda pogrešna: sva četiri endpointa za optimizaciju primaju isključivo POST.
- Na pravokutnim rutama 504 dolazi od reverse proxyja, ne od motora, pa je njegovo tijelo proxyjevo, a ne ova JSON omotnica; jedan posao unutar donjih ograničenja ulaza ostaje duboko ispod njega, ali nekoliko najtežih poslova odjednom može ga u redu čekanja premašiti — a poziv od kojeg je proxy odustao ne naplaćuje se.
Iznimka je /v1/optimize/nest: taj je izračun podproces s vlastitim proračunom, namjerno držanim ispod granice proxyja, pa istek vremena ondje koristi ovu omotnicu, s kodom solve_timeout.
Je li neki motor pao? Stranica statusa uživo prikazuje stanje web-stranice, Engine API-ja, motora za nesting i asinkronog motora max: Status usluge ↗