Řešení problémů
Proč dostávám chybu 429 Rate limit exceeded?
Ošetřete odpovědi 429 z API Emailitu. Zjistěte, jak fungují limity odesílání za sekundu a za den, hlavičky limitů rychlosti a jak požádat o vyšší limity.
Tento článek vysvětluje, proč POST /v2/emails vrací 429 a jak rozložit odesílání v čase, aby k tomu nedocházelo. Stejné limity platí pro SMTP, kde se projeví jako odpovědi 452.
Příznaky
API odpoví 429 s jedním z těchto těl:
{
"error": "Rate limit exceeded",
"message": "Too many requests. Maximum 2 messages per second allowed.",
"limit": 2,
"current": 2,
"retry_after": 1
}{
"error": "Daily limit exceeded",
"message": "Daily sending limit of 5000 messages has been reached.",
"limit": 5000,
"current": 5000,
"retry_after": 41200
}Přes SMTP selže příkaz MAIL FROM s 452 4.4.5 Messages per second limit exceeded nebo 452 4.5.3 Daily message limit exceeded.
Příčina
Každý workspace má dva limity odesílání, které sdílejí všechny API klíče i SMTP:
- Za sekundu. Nové workspace začínají na 2 e-mailech za sekundu.
- Za den. Nové workspace začínají na 5 000 e-mailech za den. Počítadlo se nuluje o půlnoci UTC.
API počítá každého příjemce jako jeden e-mail, takže požadavek se třemi adresami v to, cc a bcc spotřebuje tři. Obvyklou příčinou jsou nárazy z paralelních workerů, smyčky opakování bez odstupu a dávkové úlohy, které začínají ve stejnou chvíli.
Každá odpověď na odeslání obsahuje hlavičky, ze kterých poznáte, kde jste:
| Hlavička | Význam |
|---|---|
ratelimit-limit / ratelimit-remaining |
Limit za sekundu a kolik z něj v aktuální sekundě zbývá |
ratelimit-daily-limit / ratelimit-daily-remaining |
Denní limit a kolik z něj dnes zbývá |
ratelimit-daily-reset |
Počet sekund do půlnoci UTC |
retry-after |
Kolik sekund počkat před dalším pokusem (jen u 429) |
Řešení
-
Počkejte a zkuste to znovu. Než odešlete další požadavek, respektujte
retry-after(neboretry_afterv těle). Požadavek s429se neodeslal ani nezaúčtoval, takže jeho zopakování je bezpečné. Proti opakování na úrovni sítě se chraňte hlavičkouIdempotency-Key. -
Hlídejte tempo odesílání. Použijte frontu s limitem souběhu, který odpovídá
ratelimit-limit, a po429zvyšujte odstup exponenciálně, místo abyste požadavek opakovali v rychlé smyčce. -
Rozložte velká odeslání. Pokud narazíte na denní limit, naplánujte zbytek pomocí
scheduled_atna dobu po půlnoci UTC, nebo pro marketingovou poštu použijte kampaň. -
Zkontrolujte aktuální limity. Panel Sending Limits na stránce Dashboard ukazuje vaše limity za sekundu a za den a dnešní využití.
-
Požádejte o vyšší limity. V panelu Sending Limits vyberte Request Increase a zadejte, jaké limity potřebujete, odkud pocházejí vaši příjemci a proč. Tým obvykle odpoví do 24 hodin. V tarifech Pro a Business se limity navyšují také automaticky, dokud zůstává vaše kondice odesílání dobrá.
Úplnou referenci najdete na stránce Limity rychlosti a všechny kvóty tarifů na stránce Limity.
Stále si nevíte rady?
Napište podpoře nebo se zeptejte na Discordu. Uveďte očekávaný objem za den a za sekundu a ukázkovou odpověď 429.