WhatsApp Cloud API · error code

WhatsApp error 4: API Too Many Calls

RetryableHTTP 400Throttling & rate limits

Last verified against Meta for Developers - Cloud API error codes

What WhatsApp returns
The app has reached its API call rate limit.

What error 4 means

Code 4 is the Graph API's application-level rate limit. It counts calls made by your app as a whole, across every WABA and phone number, and it is distinct from the WhatsApp-specific throughput limit (130429) and the WABA rate limit (80007). When you see code 4, the platform is saying your app identity has made too many requests in the current window, regardless of what those requests were for.

For the Cloud API the documented allowance is 200 requests per hour per app per WABA by default, rising to 5,000 per hour per app per active WABA once the WABA has at least one registered phone number. Sends to the /messages endpoint are governed mainly by throughput and messaging limits, so code 4 most commonly appears on management and read traffic: polling phone numbers, listing templates, fetching media repeatedly, or tight loops that re-query state.

Your messages are not being judged for quality here. This is purely call volume.

Why it happens

  • Polling endpoints such as /phone_numbers or /message_templates on a short interval instead of using webhooks.
  • A retry loop without backoff that re-issues the same failing call many times per second.
  • Several environments (dev, staging, prod) sharing one app ID and collectively exhausting the budget.
  • Fetching media URLs and then re-fetching them for every consumer instead of caching the download.
  • Calling management endpoints for a WABA that has no registered number, where the 200-per-hour default applies.

How to fix WhatsApp error 4

  1. 1Open the app in App Dashboard and check the Application Rate Limit panel to confirm the ceiling was hit and when it resets.
  2. 2Back off and retry after the window clears; do not hammer, since continued calls extend the throttled period.
  3. 3Replace polling with webhook subscriptions for message status, template status, and account alerts.
  4. 4Cache template lists and phone number metadata locally and refresh on webhook events or on a long timer.
  5. 5Split non-production traffic into a separate app so testing cannot starve production.

How to stop it recurring

Budget API calls per feature and log call counts per endpoint so you can see which consumer is burning the allowance. Use webhooks as the source of truth for state changes and reserve REST calls for actions. A client-side token bucket sized comfortably below the documented limit keeps bursts from reaching Meta at all. Message sending has its own ceilings - 130429 for speed and the daily messaging tiers for reach; every documented allowance is tabulated in the WhatsApp limits reference.

Official reference: Meta for Developers - Cloud API error codes. See all WhatsApp error codes or the WhatsApp limits and quotas.

Related codes

Error 4 - quick answers

What does WhatsApp error 4 mean?

Code 4 is the Graph API's application-level rate limit. It counts calls made by your app as a whole, across every WABA and phone number, and it is distinct from the WhatsApp-specific throughput limit (130429) and the WABA rate limit (80007). When you see code 4, the platform is saying your app identity has made too many requests in the current window, regardless of what those requests were for.

How do I fix WhatsApp error 4?

1. Open the app in App Dashboard and check the Application Rate Limit panel to confirm the ceiling was hit and when it resets. 2. Back off and retry after the window clears; do not hammer, since continued calls extend the throttled period. 3. Replace polling with webhook subscriptions for message status, template status, and account alerts. 4. Cache template lists and phone number metadata locally and refresh on webhook events or on a long timer. 5. Split non-production…

Can I retry after error 4?

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 WhatsApp by hand

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