Telegram Bot API · error code

Telegram error 429: Too Many Requests: retry after N

RetryableHTTP 429429 Too Many Requests

Last verified against Telegram Bot API reference

What Telegram returns
Too Many Requests: retry after 34

What error 429 means

Your bot exceeded one of Telegram's sending limits and must pause. The description names the wait in seconds and the same value is returned machine-readably in parameters.retry_after, which the Bot API defines as 'in case of exceeding flood control, the number of seconds left to wait before the request can be repeated'. The number varies per response; 429s seen in the wild range from single digits to tens of thousands of seconds for sustained abuse.

The FAQ publishes the guidance this enforces: avoid more than one message per second in a single chat (short bursts may be tolerated), no more than 20 messages per minute in a group, and bulk notifications to no more than about 30 messages per second overall. All three throttles are collected with sources under Telegram rate limits. Paid Broadcasts in @BotFather raise the bulk ceiling to 1000 per second for a per-message fee in Telegram Stars.

Libraries turn this error into a typed exception with the wait attached. python-telegram-bot raises telegram.error.RetryAfter with a retry_after attribute; aiogram v3 raises aiogram.exceptions.TelegramRetryAfter with retry_after; grammY exposes err.parameters.retry_after on the GrammyError; Telegraf exposes err.response.parameters.retry_after; node-telegram-bot-api leaves it in error.response.body.parameters.retry_after. Whatever the stack, the contract is the same: sleep at least that many seconds before retrying that request, and slow the overall pipeline, because retrying early typically extends the penalty.

The request itself was valid; the chat, token and content are fine. Telegram is asking you to slow down, not telling you something is broken.

What it looks like

{"ok":false,"error_code":429,"description":"Too Many Requests: retry after 34","parameters":{"retry_after":34}}

Why it happens

  • A broadcast loop sending as fast as the network allows instead of pacing to ~30 messages per second.
  • Several quick 'bubbles' to the same user in a burst, exceeding the ~1 message per second per chat guidance.
  • A busy group bot exceeding 20 messages per minute in one group.
  • Retry storms: failed sends being retried immediately by multiple workers at once.
  • Wasted sends to blocked or deactivated users consuming the budget of a campaign.

How to fix Telegram error 429

  1. 1Read parameters.retry_after and sleep for exactly that many seconds before retrying that request; do not retry on a fixed schedule.
  2. 2Pace broadcasts with a token bucket below 30 messages per second overall and spread non-urgent campaigns over hours (the FAQ suggests 8-12 hours for large lists).
  3. 3Insert a short delay between consecutive messages to the same chat, and batch content into fewer messages where possible.
  4. 4Remove users flagged by blocked and deactivated errors from lists so they stop consuming budget.
  5. 5Make the limiter global across workers; per-worker limiters multiply your real send rate by the worker count.
  6. 6If you need sustained high volume, evaluate Paid Broadcasts via @BotFather.

How to stop it recurring

Put every outbound call through one rate-limited queue that honors retry_after globally, not per worker, and that applies per-chat and per-group budgets on top of the global one. Alert on the 429 rate rather than on individual 429s, which are normal at broadcast scale. The exact documented numbers live on the Telegram limits page, and the launch-day failure pattern is cause 5 in Telegram bot not responding.

Official reference: Telegram Bot API reference. See all Telegram error codes or the Telegram limits and quotas.

Related codes

Error 429 - quick answers

What does Telegram error 429 mean?

Your bot exceeded one of Telegram's sending limits and must pause. The description names the wait in seconds and the same value is returned machine-readably in parameters.retry_after , which the Bot API defines as 'in case of exceeding flood control, the number of seconds left to wait before the request can be repeated'.

How do I fix Telegram error 429?

1. Read parameters.retry_after and sleep for exactly that many seconds before retrying that request; do not retry on a fixed schedule. 2. Pace broadcasts with a token bucket below 30 messages per second overall and spread non-urgent campaigns over hours (the FAQ suggests 8-12 hours for large lists). 3. Insert a short delay between consecutive messages to the same chat, and batch content into fewer messages where possible. 4. Remove users flagged by blocked and deactivated…

Can I retry after error 429?

Yes - this is a retryable condition. Back off (start around one second and double on each attempt, with jitter) and watch for a retry-after hint from the platform before resending.

Stop debugging Telegram by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.