Guide

Rate limits

What the limits are, how they are counted, and how to stay under them.

Bot API limits

Limits are counted per bot per environment. Your test and live tokens have separate budgets.

MethodLimit
sendMessage30 calls per second
getUpdates30 calls per second
getMe30 calls per second
setWebhook / deleteWebhook10 calls per minute

Management methods (bot CRUD, tokens, insights) have no published per-second limits; use them at human-dashboard pace, not in a loop.

Staying under the limits

  • Use long polling correctly. One getUpdates call with timeout: 50 covers 50 seconds of waiting in a single call. Polling in a tight loop with timeout 0 burns your budget for nothing.
  • Batch your sends. 30 messages a second is generous; if you are hitting it, you are probably sending one message per update in a busy group. Consider digesting.
  • Handle 429 with backoff. See retries and errors. A 429 is the API asking you to slow down, not an error in your code.
Hitting a limit returns 429 with { ok: false, error: "rate limit exceeded: …" }. Limits may change as the platform grows; the dashboard's usage page shows your actual consumption.