Skip to content

Engineering

WhatsApp error 4 (too many API calls): your Meta app hit its call limit, not your phone number

Error 4 is an app-level limit: every call your Meta app makes counts, across all the WhatsApp accounts it serves. How to check the App Dashboard and the X-App-Usage header, find the polling loop that causes it, and retry safely.

By Broadchat teamPublished 6 min read

In short

WhatsApp error 4 means "The app has reached its API call rate limit." It is an application-level limit on your Meta app, returned with HTTP 429, and it counts every call the app makes, not only message sends. Meta's advice is to open the App Dashboard, check the Application Rate Limit section, and then wait or reduce the frequency or amount of calls. Read the X-App-Usage header on every response, stop polling, and retry with back-off.

Key takeaways

  • Error 4 is about your Meta app as a whole; error 80007 is about one WhatsApp Business account and 130429 about one phone number's sending speed.
  • A rate-limited request was not processed, so it is safe to retry after waiting, even for a message send.
  • Every Graph API response can carry an X-App-Usage header with call_count, total_time and total_cputime as percentages; slow down well before 100.
  • The usual cause is polling: dashboards, cron jobs or health checks that call Meta every few seconds instead of using webhooks.
  • Agencies and tech providers feel it most, because one app's calls for many client accounts add up.

WhatsApp error 4 means your Meta app has made too many API calls. Meta's WhatsApp error reference titles it "Application Rate Limit" (HTTP 429 Too Many Requests) and says: "The app has reached its API call rate limit." The suggested solution is to "load the app in the App Dashboard and view the Application Rate Limit section to verify that the app has reached its rate limit. If it has, try again later or reduce the frequency or amount of API queries the app is making." The key word is app: this limit is not on your phone number, your messaging tier or one client's account.

Three rate limits that are easy to mix up

CodeWhat is limitedTypical trigger
4Calls made by your Meta app, across everything it doesA polling loop or a burst of management calls from one app
80007Calls made against one WhatsApp Business accountFetching templates or phone details for the same account too often
130429Messages per second from one phone numberA campaign sent faster than the number's throughput

Meta groups all three as throttling errors. They need different fixes, so check the code before you change anything. Sending to the same customer too often is a fourth limit, the pair rate limit (131056), which works per recipient.

What the error looks like

Illustrative response (wording varies):

{
  "error": {
    "message": "(#4) Application request limit reached",
    "type": "OAuthException",
    "is_transient": true,
    "code": 4,
    "fbtrace_id": "AmX5tQ1pWc8NvR3kLb7yHzF"
  }
}

And the header to watch on every successful response before the error appears (values are percentages of your allowance; illustrative):

X-App-Usage: {"call_count":92,"total_time":41,"total_cputime":38}

When any of the three numbers nears 100, the next calls start failing with code 4. Meta's Graph API rate-limiting documentation describes these fields.

Why apps hit it

  • Polling instead of webhooks. A job that asks for message status, template status or phone quality every few seconds. Meta sends these as webhooks; polling duplicates them.
  • Retries without back-off. A failed call retried instantly in a loop multiplies the load at the worst moment.
  • One app, many accounts. An agency's own app that manages 50 client accounts multiplies every scheduled job by 50.
  • Batch jobs at the same minute. Every client's nightly sync starting at 00:00.
  • Debug code left on. A dashboard page that refreshes all data each time a user opens it.

Step-by-step fix

  1. Stop the bleeding. Pause scheduled jobs that call Meta, so sends that matter can get through.
  2. Open the App Dashboard and look at the Application Rate Limit section, as Meta suggests. It shows whether the app is over its limit and when usage peaked.
  3. Log X-App-Usage from every response for a day. Group calls by endpoint; the top one or two endpoints are usually most of the usage.
  4. Replace polling with webhooks for message statuses, template status changes and account updates.
  5. Cache what changes rarely. Phone number details, business profile and template lists can be cached for minutes or hours.
  6. Retry with exponential back-off and jitter. Wait about 1 second, then 2, then 4, plus a random part, and give up after a few tries. A request rejected with code 4 was not processed, so retrying a send will not duplicate it.
  7. Spread scheduled jobs across the hour instead of starting them together.

A worked example

Arjun runs a small agency in Pune with its own Meta app connected to 40 client WhatsApp Business accounts. His reporting dashboard calls Meta for each client's phone number quality, template list and analytics every 30 seconds while anyone has it open. On the Monday after Diwali, the whole team opens the dashboard, usage climbs, and client order confirmations sent by the same app start failing with error 4 (illustrative scenario).

He switches the dashboard to read from his own database, filled by webhooks and a template sync every 15 minutes per client, staggered across the quarter hour. Peak call_count drops to a fraction of what it was, and sends are never starved again. His rule now: user-facing screens never call Meta directly.

Preventing error 4

  • Webhooks first. Treat any repeated GET to Meta as a design question.
  • Throttle by priority. When usage is high, postpone background jobs and keep capacity for message sends.
  • Respect Meta's wait hints such as Retry-After when present.
  • Alert at 75 to 80 percent of X-App-Usage, not at the first failure.

How Broadchat handles app rate limits

Every call Broadchat makes to Meta goes through one Graph client that reads the X-App-Usage and X-Business-Use-Case-Usage headers and keeps a usage snapshot per app and per account. At 85 percent usage it postpones background work such as template sync and health refreshes; at 95 percent it also slows other calls slightly. It honours Meta's wait hints, and it treats code 4 as a rate-limit rejection: the request was not processed, so it is retried with exponential back-off and jitter, a few times at most. Status updates reach Broadchat by webhook rather than by polling. Your own integrations that call Meta with your own app have their own limit and need the same habits.

See the WhatsApp API error codes cheat-sheet for every code, or start with what the WhatsApp Business API is. Agencies serving many clients can read about the white-label platform.

Sources

  1. WhatsApp error codes — Meta for Developers, checked 1 November 2026
  2. Graph API rate limiting — Meta for Developers, checked 1 November 2026

Broadchat team · Product and partner success team

The people who build and support Broadchat, the white-label WhatsApp Business API platform. We write from what we see while onboarding partners and their clients on the official WhatsApp Cloud API, and we check every article against Meta's current documentation.

Last updated:

Frequently asked questions

What does WhatsApp error code 4 mean?

It means your Meta app has reached its API call rate limit, so Meta is rejecting calls from it for now. It counts all the calls the app makes, not only message sends. Wait, then reduce how often your code calls the API.

Is error 4 the same as 130429?

No. Error 4 limits the number of API calls your app makes. 130429 limits how many messages per second one phone number can send. A campaign sent too fast gets 130429; a polling loop usually gets 4.

Is it safe to retry a message that failed with error 4?

Yes, after waiting. A request rejected by a rate limit was not processed, so retrying will not send the message twice. Use exponential back-off with jitter instead of retrying immediately.

How do I check my app's API usage?

Open your app in the App Dashboard and look at the Application Rate Limit section, as Meta suggests. In code, read the X-App-Usage header on Graph API responses; it gives call_count, total_time and total_cputime as percentages.

Does upgrading my messaging limit fix error 4?

No. Messaging limits control how many customers you can reach with templates. Error 4 is about how many API calls your app makes, so the fix is fewer, smarter calls: webhooks, caching and back-off.

Launch WhatsApp under your own brand

Resell campaigns, chatbots, a shared inbox and CRM on the official WhatsApp Cloud API, with your logo, domain and prices.