kirim.dev/ docsGet started
Menu

Rate limits

kirim.dev paces your traffic just under Meta's ceilings, so a burst is turned into a short, well-signalled wait here rather than a hard rejection from Meta mid-campaign. The limits are the ones Meta enforces — kirim.dev does not add a stricter cap of its own.

Sending messages

Sends are limited per connected phone number, at that number's messaging throughput tier. Each number has its own budget, so one busy number never slows another.

TierThroughputNotes
Standard80 messages/secMeta's default for a connected number.
Low20 messages/secNumbers on a reduced tier.
High1,000 messages/secNumbers Meta has raised to the top tier.

A number's tier is Meta's, visible in the dashboard. Newly connected numbers start on the standard tier; Meta raises it automatically as your quality and volume grow.

Reads (template listings)

Listing templates and other read calls do not consume a number's messaging throughput, but they draw on the WhatsApp Business Account's shared request budget — Meta allows 5,000 requests per hour per WABA(about 1.4 per second sustained). A short burst at startup is fine; only sustained traffic is held near that rate.

What a throttle looks like

When you exceed a limit, kirim.dev returns 429 with the headers that tell you how long to wait. Read them and pace yourself rather than retrying blindly into another 429:

429 response
HTTP/1.1 429 Too Many Requests
Retry-After: 7
RateLimit-Remaining: 0
RateLimit-Reset: 7
Content-Type: application/json

{
  "error": {
    "message": "Sending too fast for this phone number. Retry in 7s.",
    "type": "KirimThrottleException",
    "code": 429
  }
}
  • Retry-After — seconds to wait before the next request will be accepted.
  • RateLimit-Remaining — requests left in the current window (0 at a refusal).
  • RateLimit-Reset — seconds until the budget refills.

RateLimit-Remaining is sent on successful responses too, so you can slow down before you hit the limit rather than only learning of it at the 429.

If the limiter is unavailable

Rate limiting fails open: if the limiter cannot be reached, your request is forwarded rather than refused. Meta's own ceiling still applies, so you are never left unprotected — you may briefly see Meta's 429instead of kirim.dev's.