Ugrás a tartalomhoz
← API-referencia

Hibák

A hibakódra ágazz el, sosem az üzenetre. A tábla az OpenAPI-dokumentumból készül.

Hibák

StátuszKódJelentés
400invalid_requestSémahiba. A details.path a hibás mezőre mutat.
401unauthorizedHiányzó vagy ismeretlen API-kulcs.
402quota_exceededRetry-AfterA havi kvóta elfogyott. A Retry-After megadja, hány másodperc van a hónap átfordulásáig.
403key_revokedA kulcs létezik, de nem használható: vagy vissza lett vonva, vagy a fiók Engine API-előfizetése már nem aktív. A message megmondja, melyikről van szó.
404not_foundNincs ilyen útvonal — ezt kapod akkor is, ha a helyes útvonalat rossz metódussal hívod.
409idempotency_conflictRetry-AfterCsak Idempotency-Key fejléccel: a kulcsot már egy másik kéréshez használták (idempotency_conflict — használjon új kulcsot), vagy az első kérés még fut vele (idempotency_in_progress — a Retry-After után küldje újra, és megkapja a válaszát). Sosem kerül hívásba.
409idempotency_in_progressRetry-AfterCsak Idempotency-Key fejléccel: a kulcsot már egy másik kéréshez használták (idempotency_conflict — használjon új kulcsot), vagy az első kérés még fut vele (idempotency_in_progress — a Retry-After után küldje újra, és megkapja a válaszát). Sosem kerül hívásba.
413too_largeA bemenet átlép egy korlátot (lásd a Korlátokat).
429busyRetry-AfterÉpp betelt a kapacitás, vagy — bármely kulccsal hitelesített úton — a címedről egy percen belül túl sok ismeretlen API-kulcs érkezett. A Retry-After másodpercben; ez soha nem számít bele a kvótádba.
500internalVáratlan hiba, vagy nem érhető el az azonosítási backend (a kérések fail-closed módon elbuknak).
503service_unavailableA kért motor most nem szolgálható ki — a nesting motor, vagy az aszinkron max motor. A max esetében két oka lehet, és a message megmondja, melyik: a szint nincs beépítve ebbe a deploymentbe, vagy be van építve, de a jobokat megoldó worker nem válaszol. Fail-closed a hívás lefoglalása előtt, tehát semmibe nem kerül.
504solve_timeoutA számítás túllépte a kemény időkorlátot. A téglalap-módokon ezt a proxy kényszeríti ki; a /v1/optimize/nest esetében a motor a saját, rövidebb büdzséjét, és solve_timeout kóddal, a szokásos borítékban válaszol. A proxy által feladott hívás nem terheli a keretet.

A hiba törzse

Minden hiba, amelyet maga a motor állít elő, ugyanezt a borítékot használja. Az error értékére ágazz, mert az stabil kód; a message-re soha, mert a szövegezése verziók között változhat. A details az invalid_request esetén van jelen, ahol a path nevezi meg a hibás mezőt, és a too_large esetén, ahol a max és a got adja meg a korlátot, illetve azt, amit beküldtél.

Kivétel a méretkorlát feletti kéréstörzs: ilyenkor helyettük maxBytes érkezik. Ismeretlen engine esetén az available is megjelenik: az ezen a telepítésen elfogadott engine-azonosítók.

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" }
  • A 402 és a 429 is Retry-After fejlécet visz, másodpercben. A 402-nél a kvóta visszaállásáig számol vissza, ami a következő hónap 1-jén 00:00 UTC; a 429-nél rövid várakozás, és a 429 soha nem fogyaszt kvótát — a lefoglalt hívást visszaadjuk.
  • A nyilvános demókulcs elutasításai ugyanezt a borítékot használják: a hatókörén kívül (nesting, max motor, usage, jobs, import, a méretkorlátja fölötti munka) 403 key_revoked, details.reason "demo_scope"; a sebességkorlátjánál 429 busy, details.reason "demo_rate_limit" és details.limit. Mindkettő hordozza a details.testKeyUrl-t, ahol ingyenes tesztkulcs hozható létre, és minden demóválaszon ott az X-CutOptim-Demo: true fejléc.
  • Az útvonal-hiba not_found kóddal válaszol; ez a kód szándékosan nincs a fenti listában, mert a router állítja elő, nem az API-szerződés. 404-et kapsz és nem 405-öt, ha az útvonal helyes, de a metódus nem: mind a négy optimalizáló végpont csak POST-ot fogad.
  • A téglalap-módokon az 504 a reverse proxytól jön, nem a motortól, ezért a törzse a proxyé, nem ez a JSON-boríték; egyetlen job az alábbi bemeneti korlátokon belül bőven alatta marad, de több, egyszerre érkező legnehezebb job a várólistán túllépheti — a proxy által feladott hívás pedig nem terheli a keretet.

    A /v1/optimize/nest a kivétel: az a számítás alfolyamat, saját büdzsével, amit szándékosan a proxy korlátja alatt tartunk — ott a timeout ezt a borítékot használja, solve_timeout kóddal.

Leállt egy motor? Az állapotoldal élőben mutatja a weboldal, az Engine API, a nesting motor és az async max motor állapotát: Szolgáltatás állapota ↗