Kształt odpowiedzi
Sukces:redirectUrl, a darmowe zamówienie free: true. Listy stronicowane zwracają data, total, page, pages, hasNext, hasPrev.
Błąd:
Kody statusu
Kody maszynowe
Wybrane wartości polacode, na które warto reagować w kodzie:
Nowe kody mogą się pojawiać — nieznany
code traktuj według statusCode.
Walidacja
API odrzuca nieprawidłowe dane, zanim zacznie je przetwarzać. Pola spoza schematu są ignorowane, a typy konwertowane automatycznie (np. liczby z query string). Listy przyjmująpage i limit; limit jest przycinany do bezpiecznego maksimum (zwykle 100).
Limity żądań
Całe REST API ma globalny limit per rzeczywisty adres IP klienta. Konfiguracja produkcyjna: 200 żądań na minutę (RATE_LIMIT_MAX=200, RATE_LIMIT_WINDOW=60000); operator platformy może zmienić obie wartości.
Wrażliwe trasy mają dodatkowe, ostrzejsze okna stałe, liczone per IP i trasa:
Trasy logowania mają osobne limity przeciw brute-force. Webhooki płatności są chronione per operator i sklep, z zachowaniem semantyki ponowień operatora.
Liczniki wrażliwych tras są współdzielone przez Redis między instancjami API. Gdy Redis jest chwilowo niedostępny, każda instancja utrzymuje ograniczony licznik w pamięci — ochrona nie znika, tylko staje się lokalna dla instancji.
Ponawianie
Ponawiaj tylko429, 500, 503 i błędy sieci. Nie ponawiaj 400, 401, 403, 404.
- Jeśli odpowiedź
429ma nagłówekRetry-After, odczekaj tyle sekund. Nie każda odpowiedź go zawiera (ostrzejsze limity tras go nie wysyłają) — wtedy użyj backoffu. - Backoff wykładniczy z jitterem: np. 1 s, 2 s, 4 s ± losowe 0–500 ms, maksymalnie kilka prób.
- Nie ponawiaj natychmiast w pętli — to tylko przedłuża blokadę.
Idempotencja
Utworzenie zamówienia (POST /orders, w 3.0 także POST /storefront/v1/shops/<shopId>/checkout) wymaga nagłówka Idempotency-Key:
- losowa wartość 32–128 znaków (
A-Z a-z 0-9 _ -), np. UUID bez myślników albo base64url; - generuj ją raz na próbę zakupu i używaj ponownie tylko przy ponowieniu identycznego żądania;
- ponowienie z tym samym kluczem i tą samą treścią zwraca to samo zamówienie zamiast tworzyć drugie;
- ten sam klucz z inną treścią →
409 IDEMPOTENCY_KEY_REUSED; zamknięta próba →409 CHECKOUT_ATTEMPT_CLOSED.
Dalej
API z kluczem
Klucze, zakresy i pierwsze żądanie.
Webhooki
Powiadomienia Discord i webhooki operatorów płatności.