Limity, plany i ponawianie
Każda odpowiedź na żądanie z kluczem lub tokenem ma nagłówki X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset (okno minutowe pary aplikacja × sprzedawca). Klucze i nowe aplikacje mają dodatkowo limity grup operacji (algorytm GCRA: stałe tempo + zryw), opisane w nagłówku X-Allee-RateLimit: plan=pro; group=write; rate=10; burst=60.
Plany
| Plan | Odczyt (read) | Zapis (write) | Wsadowe (bulk) | Sufit / min |
|---|---|---|---|---|
start | 10/s, zryw 40 | 2/s, zryw 10 | 0.2/s, zryw 2 | 1200 |
standard | 25/s, zryw 100 | 5/s, zryw 30 | 1/s, zryw 5 | 3000 |
pro | 50/s, zryw 150 | 10/s, zryw 60 | 2/s, zryw 10 | 9000 |
Grupa wynika z operacji (opisana przy każdej w referencji): odczyty to read, pojedyncze zapisy write, polecenia wsadowe, wsady i raporty bulk. Wyjątek (od 10.11): polecenia zmiany ceny, ilości, modyfikacji i publikacji obejmujące do 100 ofert liczą się jak write — synchronizacja stanów małymi poleceniami co kilka minut nie trafia w limit bulk (nagłówek X-Allee-RateLimit pokazuje użytą grupę). Aplikacje sprzed kluczy (plan allegro) mają tylko okno minutowe. Swój plan sprawdzisz w GET /allee/sellers/account.
Po przekroczeniu
HTTP/1.1 429 Too Many Requests
Retry-After: 2
X-Allee-RateLimit: plan=start; group=write; rate=2; burst=10
{"errors":[{"code":"TOO_MANY_REQUESTS","message":"Przekroczono limit grupy write w planie start (2/s, burst 10).","details":{"group":"write","retryAfterMs":1450},"path":null,"userMessage":"…"}]}Odczekaj Retry-After (dokładniej: details.retryAfterMs) i ponów. Dodatkowo: najwyżej 2 ciężkie operacje sprzedawcy naraz (429 TOO_MANY_CONCURRENT), 120 żądań /token na minutę z IP, blokada IP po wielu nieprawidłowych tokenach.
Bezpieczne ponawianie: Idempotency-Key
Każdy POST z treścią JSON przyjmuje nagłówek Idempotency-Key (np. UUID). Powtórzony POST z tym samym kluczem i tą samą treścią w ciągu 24 h zwraca zapisaną odpowiedź (nagłówek Idempotent-Replayed: true) i niczego nie wykonuje drugi raz — także gdy pierwsze żądanie zakończyło się, a Ty nie dostałeś odpowiedzi.
Inna treść z tym samym kluczem → 422 IDEMPOTENCY_KEY_REUSED; równoległe żądanie z kluczem w toku → 409 IDEMPOTENCY_KEY_IN_USE. Polecenia wsadowe Allegro są idempotentne po commandId, oferty — po external.id (409 OfferDuplicate), przesyłki — po parze przewoźnik + numer.