Preskoči na glavni sadržaj
← Referenca API-ja

Pogreške

Grananje radite po kodu pogreške, nikad po poruci. Tablica nastaje iz OpenAPI dokumenta.

Greške

StatusKodZnačenje
400invalid_requestGreška sheme. details.path pokazuje na problematično polje.
401unauthorizedAPI ključ nedostaje ili je nepoznat.
402quota_exceededRetry-AfterMjesečna kvota dosegnuta. Retry-After daje broj sekundi do prijelaza mjeseca.
403key_revokedKljuč 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.
404not_foundTakva ruta ne postoji — isto dobivate za ispravnu putanju s pogrešnom metodom.
409idempotency_conflictRetry-AfterSamo 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.
409idempotency_in_progressRetry-AfterSamo 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.
413too_largeUlaz iznad ograničenja (vidi Ograničenja).
429busyRetry-AfterTrenutač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.
500internalNeočekivana greška ili auth pozadina nije dostupna (zahtjevi se odbijaju — fail closed).
503service_unavailableTraž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.
504solve_timeoutIzrač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 ↗