Przejdź do treści

Błędy

Jedna struktura błędu, stałe kody, jasne zasady ponawiania.

Każda odpowiedź z kodem spoza 2xx ma tę samą strukturę. Opieraj logikę na error.code, nigdy na message.

JSON
{
  "error": {
    "code": "validation_failed",
    "message": "The request is invalid.",
    "request_id": "req_8fK2Lq9ZtX4mN7bV1cW3yH6p",
    "details": [
      {
        "path": "items[3].length",
        "code": "out_of_range",
        "message": "length must be greater than 0."
      }
    ]
  }
}
PoleZawartość
codeStały kod w formacie snake_case
messagePo angielsku, do logów
request_idTakże w X-Request-Id. Podaj go pomocy technicznej
details[]Przy 400/422: path, code, message dla każdego problemu

Kody

StatusKodZnaczenieCo zrobićPonawiać
400invalid_jsonTreść nie jest prawidłowym JSON-em lub pole ma niewłaściwy typ.Popraw treść zapytania.Nie
401unauthorizedBrak klucza API, nieprawidłowy format klucza lub nieznany klucz.Wyślij nagłówek Authorization: Bearer cd_live_…; sprawdź, czy klucz został skopiowany w całości.Nie
401key_revokedKlucz został unieważniony.Utwórz nowy klucz w konsoli deweloperskiej.Nie
401key_expiredKlucz utracił ważność.Utwórz nowy klucz w konsoli deweloperskiej.Nie
402insufficient_creditsDostępne kredyty nie pokrywają najtańszego możliwego przebiegu tego zadania.Kup pakiet kredytów lub poczekaj na miesięczne kredyty; nic nie zostało pobrane.Nie
403ip_not_allowedAdresu IP, z którego przyszło wywołanie, nie ma na liście dozwolonych adresów klucza.Wywołaj API z dozwolonego adresu IP lub zmień listę dozwolonych adresów.Nie
403subscription_inactiveOrganizacja nie ma aktywnej subskrypcji obejmującej API.Odnów subskrypcję.Nie
403account_inactiveOrganizacja jest zawieszona albo nie ma właściciela z aktywnym kontem.Skontaktuj się z pomocą techniczną.Nie
403scope_missingKlucz nie ma zakresu wymaganego przez ten endpoint.Użyj klucza z odpowiednim zakresem (pack:write, jobs:read, account:read, resources:read, resources:write).Nie
403preset_read_onlyPresetów nie można zmieniać ani usuwać.Utwórz własny pojazd przez POST /v1/vehicles.Nie
403plan_limit_reachedPakiet organizacji nie pozwala na więcej projektów ani pozycji ładunku.Usuń niepotrzebne projekty lub przejdź na wyższy pakiet.Nie
404not_foundŻaden endpoint /v1 nie ma tej metody i ścieżki.Porównaj metodę i ścieżkę z listą endpointów.Nie
404job_not_foundW Twojej organizacji nie ma zadania o tym ID.Sprawdź ID.Nie
404vehicle_not_foundNie ma pojazdu o tym ID wśród presetów ani pojazdów Twojej organizacji.Sprawdź ID w GET /v1/vehicles.Nie
404template_not_foundW Twojej organizacji nie ma szablonu o tym ID.Sprawdź ID w GET /v1/templates.Nie
404project_not_foundW Twojej organizacji nie ma projektu o tym ID.Sprawdź ID w GET /v1/projects.Nie
409job_not_finishedZadanie wciąż czeka w kolejce lub jest w toku.Odpytuj GET /v1/jobs/{id}, aż status będzie miał wartość succeeded.Tak
409project_busyDla projektu właśnie trwa planowanie załadunku (w aplikacji lub w innym zadaniu).Poczekaj na zakończenie tego przebiegu i spróbuj ponownie.Tak
409job_failedZadanie zakończyło się błędem; nie ma wyniku.Sprawdź job.error; za błędy po naszej stronie nie pobieramy opłat (time_limit_exceeded jest rozliczane jak anulowane zadanie) — wyślij zadanie ponownie, jeśli przyczyna była przejściowa.Nie
409job_canceledZadanie zostało anulowane; nie ma wyniku.W razie potrzeby wyślij je ponownie.Nie
409job_already_finishedZadanie już się zakończyło i nie można go anulować.Nic nie trzeba robić.Nie
400idempotency_key_invalidNagłówek Idempotency-Key jest dłuższy niż 128 zn.Użyj krótszego klucza (UUID się sprawdzi).Nie
410result_expiredOkres przechowywania wyniku minął i wynik został usunięty.Jeśli znów potrzebujesz planu, wyślij zadanie ponownie.Nie
413payload_too_largeTreść zapytania przekracza 10 MB.Ogranicz liczbę pozycji lub je uprość.Nie
422validation_failedZapytanie to poprawny składniowo JSON, ale opisuje nieprawidłowe zadanie. details[] zawiera wszystkie problemy.Popraw każde pole wskazane w details[].path; błędy walidacji są bezpłatne.Nie
429rate_limitedZa dużo zapytań w bieżącej minucie, godzinie lub dobie (na klucz lub na organizację) albo przekroczony limit nieudanych uwierzytelnień z Twojego adresu IP (60 na minutę).Odczekaj tyle sekund, ile podaje Retry-After, a potem ponów z backoffem.Tak
429too_many_jobsOrganizacja ma już maksymalną liczbę zadań w kolejce i w toku.Poczekaj na zakończenie trwających zadań i spróbuj ponownie.Tak
500internal_errorWystąpił błąd po naszej stronie.Ponów z backoffem; jeśli błąd się powtarza, podaj request_id.Tak
503api_disabledAPI jest tymczasowo wyłączone (prace konserwacyjne) lub wyłączone dla organizacji.Spróbuj ponownie później.Tak

Szczegóły walidacji

details[].code przy 422 validation_failed:

KodZnaczenie
requiredBrak wymaganego pola
invalid_valueZły typ lub wartość spoza dozwolonych
out_of_rangeWartość za mała, za duża lub za długa
duplicate_idTo samo ID użyte dwa razy
unknown_vehicleBrak presetu lub Twojego pojazdu o tym vehicle_id
unknown_templateBrak Twojego szablonu o tym template_id
type_not_allowedTyp pojazdu niewłączony dla Twojej organizacji
unknown_groupPozycja wskazuje grupę, której nie ma na liście
does_not_fitPozycja nie mieści się w żadnym z podanych pojazdów
too_many_itemsWięcej sztuk, niż pozwala limit zadania
too_many_vehiclesWięcej pojazdów, niż pozwala limit zadania
unknown_fieldPole nieznane API

Błędy zadań

Zadanie failed lub canceled podaje przyczynę w job.error.code:

KodZnaczenie
canceledAnulowane przez DELETE /v1/jobs/{id}. Pobrano opłatę podstawową i za zużyte obliczenia.
time_limit_exceededBudżet obliczeniowy wyczerpał się, zanim załadowano jakikolwiek pojazd. Rozliczane jak anulowane zadanie: opłata za zadanie, dopłata za duży ładunek i zużyte obliczenia, nigdy opłata za pojazd.
engine_failedBłąd algorytmu załadunku. Bez opłat.
queue_timeoutZadanie zbyt długo czekało na wolne zasoby obliczeniowe. Bez opłat.
server_restartedUsługa została zrestartowana, gdy zadanie czekało w kolejce lub było w toku. Bez opłat.

Ponawianie

Ponawiaj 429, 500 i 503 z wykładniczym backoffem, respektując Retry-After. Wysyłaj ten sam Idempotency-Key (Idempotencja). Innych błędów 4xx nigdy nie ponawiaj bez zmian.

Powiązane