Błędy i limity

Format błędów, kody HTTP, nazwy błędów, limity zapytań i nagłówki RateLimit.

Na tej stronie

Gdy zapytanie się nie powiedzie, API zwraca kod HTTP i błąd w stałym formacie. Nazwa błędu w polu name jest stabilna, więc to na niej opieraj logikę, a nie na treści komunikatu.

Format błędu

Błąd
{
  "success": false,
  "error": {
    "message": "Opis zrozumiały dla człowieka",
    "name": "noPermissions",
    "extra": {}
  }
}
PoleZnaczenie
messageOpis błędu. Może się zmieniać, nie porównuj go w kodzie
nameStała nazwa błędu
extraSzczegóły zależne od błędu, na przykład brakujące uprawnienia

Kody HTTP

KodKiedy
400Nieprawidłowe zapytanie albo wartość pola
401Brak uwierzytelnienia, zły albo wygasły klucz lub token
402Funkcja nie jest dostępna w planie albo workspace jest zawieszony
403Brak uprawnień do zasobu albo operacji
404Zasób nie istnieje albo identyfikator jest błędny
429Przekroczony limit zapytań
500Błąd po stronie Hypris. Spróbuj ponownie, a jeśli się powtarza, napisz do nas

Najczęstsze błędy

nameKodCo zrobić
INVALID_REQUEST400Popraw treść zapytania według extra.validationErrors
INVALID_FIELD_VALUE400Popraw kształt wartości pola, zobacz Wartości pól
noPermissions403Poproś o brakujące uprawnienia z extra.missingPermissions
FORBIDDEN403Ta operacja wymaga innego rodzaju dostępu
not-found404Sprawdź identyfikator i dostęp do zasobu
TOO_MANY_REQUESTS429Odczekaj czas z nagłówka Retry-After
plan-feature-not-entitled402Funkcja nie jest dostępna w planie workspace
workspace-suspended402Dostęp do workspace jest wstrzymany z powodu nieopłaconej subskrypcji

Błąd walidacji

Gdy treść, parametry albo adres nie pasują do schematu endpointu, dostajesz listę problemów:

400 Bad Request
{
  "success": false,
  "error": {
    "message": "Invalid request",
    "name": "INVALID_REQUEST",
    "extra": {
      "error": "…",
      "validationErrors": [
        {"path": ["cellValues"], "message": "Expected object, received string"}
      ]
    }
  }
}

Błędne wartości pól

Wartość w złym kształcie, na przykład data jako zwykły napis albo nazwa statusu zamiast identyfikatora, kończy się błędem INVALID_FIELD_VALUE. Komunikat mówi, które pole i dlaczego. Najpewniejszy sposób, żeby go uniknąć, to budowanie wartości z exampleCellValue, jak opisuje przewodnik Wartości pól.

Limity zapytań

ZakresLimit
Wszystkie zapytania do API i MCP600 na minutę z jednego adresu IP
Dynamiczna rejestracja klienta OAuth10 na godzinę z jednego adresu IP
Nasłuch webhookaDomyślnie 120 na minutę na nasłuch

Każda odpowiedź objęta limitem ma nagłówki:

NagłówekZnaczenie
RateLimit-LimitLimit w bieżącym oknie
RateLimit-RemainingIle zapytań zostało
RateLimit-ResetZa ile sekund okno się odnowi
Retry-AfterPrzy odpowiedzi 429: ile sekund odczekać

Ponawianie zapytań

Ponawiaj tylko błędy 429 i 5xx. Przy 429 odczekaj tyle, ile mówi Retry-After. Przy 5xx wydłużaj przerwy wykładniczo:

JavaScript
async function fetchWithRetry(url, options, attempts = 5) {
  for (let attempt = 0; attempt < attempts; attempt++) {
    const response = await fetch(url, options)
    if (response.status !== 429 && response.status < 500) {
      return response
    }
    const retryAfter = Number(response.headers.get('Retry-After'))
    const delay = retryAfter > 0 ? retryAfter * 1000 : 2 ** attempt * 500
    await new Promise(resolve => setTimeout(resolve, delay))
  }
  throw new Error('Hypris API nie odpowiada')
}