Wszystkie wpisy

Podsumowanie FourA (od 17 do 24 lipca 2026)

Odrzucenia zapytań po przekroczeniu limitu zwracają teraz kod HTTP 429 z nagłówkiem Retry-After. Strona z cennikiem wyświetla przepustowość dla każdego publicznego planu: bez limitu. Wprowadzono też poprawny kod 403 dla targetowania geograficznego.

Najważniejsze zmiany

Odpowiedzi o przekroczeniu limitu zwracają teraz HTTP 429 z nagłówkiem Retry-After, zgodnie z tym, co wysyłają OpenAI, GitHub i Cloudflare. Na stronie z cenami dodano wiersz z przepustowością (każdy plan publiczny ma status Unlimited). Żądania o exitCountries w planie bez kierowania geograficznego otrzymują teraz czyste 403 z podaniem parametru i rozwiązania.

Co nowego

Limity wykorzystania to teraz HTTP 429, nie 402

Jeśli osiągniesz limit planu (kredyty lub przepustowość), odpowiedzią jest 429 Too Many Requests z Retry-After w każdej odpowiedzi i resets_at w treści JSON wskazującym na koniec okresu rozliczeniowego. Pole reason informuje, jaki limit został przekroczony (plan_limit_credits lub plan_limit_bandwidth), dzięki czemu nie koliduje z limitami częstotliwości na minutę.

Dlaczego ta zmiana? 402 brzmi poprawnie ("Wymagana płatność"), ale w praktyce w ten sposób Stripe zgłasza nieudane obciążenia, a wiele klientów HTTP i proxy błędnie je obsługuje. OpenAI, GitHub, Twilio i Cloudflare odrzucają przekroczone limity za pomocą 429 i wyraźnego kodu błędu. Podążanie za stadem to w tym przypadku słuszny krok: każda biblioteka ponawiania żądań na świecie wie już, co zrobić z naszymi odpowiedziami.

Wartość Retry-After jest ograniczona do 24 godzin dla entuzjastów uśpienia i ponowienia. Jeśli chcesz poznać rzeczywisty czas resetu, odczytaj resets_at z treści JSON.

Przepustowość na stronie z cenami: Unlimited

Na stronie /prices dodano wiersz Bandwidth w macierzy porównawczej. Każdy plan publiczny oferuje nieograniczoną przepustowość, a macierz teraz o tym wyraźnie mówi. To taka rzecz, której nie potrzebujesz, dopóki klient o to nie zapyta, a Ty nie możesz znaleźć tej liczby. Teraz jest na stronie.

Niestandardowe plany z ograniczeniem przepustowości pokazują swoją wartość w GB w tym samym rzędzie.

Kierowanie geograficzne zgłasza teraz właściwy błąd

Jeśli żądanie wysyła exitCountries, podczas gdy plan nie obejmuje funkcji kierowania geograficznego, odpowiedź to 403 z komunikatem określającym parametr i sposób rozwiązania problemu. Wcześniej żądanie przechodziło tak, jakby kierowanie geograficzne było dozwolone. Teraz od razu się nie powodzi.

Żądania bez exitCountries pozostają nietknięte. Działa to tylko wtedy, gdy faktycznie o tę funkcję poprosisz.

Drobne poprawki Panelu w sekcjach Limity i Płatności

Trzy poprawki ułatwiające życie:

  • Karta Limits. Zapisana podkarta (Overview / API keys / Limits & Features) przywraca się przed wygenerowaniem widoku, dzięki czemu przy odświeżaniu nie widać już błysku nieprawidłowej karty.
  • API Keys. Pole wyszukiwania wykorzystuje kanoniczny wzorzec wyszukiwania zamiast samego pola input.
  • Płatności. Wiersze meta pod Metodą płatności renderują się teraz z odpowiednim stylem (wcześniej pozostawały bez stylów).

Pod maską

Tryby egzekwowania limitów planu można teraz przełączać na żywo. Każdy z sześciu limitów w płaszczyźnie danych (współbieżność na produkt, współczynnik na minutę, przeglądarka na dzień, kredyty, przepustowość, funkcje) plus kontrola tworzenia kluczy w płaszczyźnie zarządzania można przełączać pomiędzy off, signal i enforce z poziomu panelu ustawień, którym zarządza nasz zespół. Bez ponownego wdrażania. Proces w tle odpytuje ustawienie co 60 sekund, a główna ścieżka pozostaje synchroniczna.

Dlaczego to jest ważne? Gdy limit sprawia problemy na produkcji, możemy go wycofać w minutę zamiast wdrażać nowy kod. Pozwala nam to również na stopniowe egzekwowanie, dla każdego limitu osobno, obserwując zachowanie rzeczywistego ruchu na każdym etapie. Tryb sygnalizowania rejestruje zdarzenie bez blokowania; tryb egzekwowania włącza odpowiedź 429 lub 403. Chcieliśmy, aby ten krok pośredni był pełnoprawnym rozwiązaniem, a nie tylko awaryjnym przełącznikiem.

Liczby

  • Retry-After limit dla odrzuceń quota: 24 godziny (rzeczywisty czas resetowania w resets_at)
  • Interwał odpytywania ustawień runtime: 60 sekund
  • Publiczne plany bez limitu przepustowości: wszystkie

Limiter planów był naszym głównym tematem przez ostatni miesiąc. Następny krok: egzekwowanie pierwszych limitów (kredyty i współbieżność na produkt wydają się naturalną pierwszą parą) oraz ostrzeżenia e-mail, gdy tylko wdrożona zostanie faza wysyłania wiadomości.