Messenger error 4: Application request limit reached
Last verified against Meta for Developers - Messenger Platform error codes
Rate Limit error: Application request limit reached.What error 4 means
Code 4 is the Graph API's application-level throttle: your app, across every Page and every endpoint it touches, has exceeded the platform rate limit for its rolling window. Meta's Messenger error-codes table lists two message variants, "Application request limit reached" and "Too many send requests to phone numbers," and the prescribed remedy is the same for both: "pause requests until current requests drop below the limit."
Because the quota is app-wide, code 4 has a failure mode the per-Page throttles lack: one noisy tenant can take down every Page the app serves. A multi-Page bot platform where a single Page runs a runaway campaign will see error 4 on unrelated Pages, which looks like a mysterious global outage until you sum call volume per app rather than per Page. The Messenger-specific ceilings (200 calls x engaged users per 24 hours, 300 sends per second per Page) are enforced separately and surface as 613 or 80006; code 4 sits above all of them.
The platform tells you how close you are before it cuts you off. Every response carries an X-App-Usage header with call_count, total_time and total_cputime as percentages; throttling begins when any of them reaches 100. Ignoring that header and discovering the limit via error 4 is the avoidable part.
What it looks like
{
"error": {
"message": "(#4) Application request limit reached",
"type": "OAuthException",
"code": 4,
"fbtrace_id": "Fz54k3GZrio"
}
}Why it happens
- Aggregate call volume across all Pages served by the app exceeding the app-level quota.
- Retry storms multiplying a transient failure into quota exhaustion.
- Polling loops (conversation lists, profile fetches) that scale linearly with tenants.
- Batch jobs (broadcasts, re-engagement campaigns) fired without rate shaping.
- Several environments (staging, dev, prod) sharing one app ID and one quota.
How to fix Messenger error 4
- 1Pause all calls; the block clears as your rolling-window usage drains, typically within the hour.
- 2Read X-App-Usage on every response and shed load at 80% instead of failing at 100%.
- 3Find the source: sum calls per Page and per code path; a single runaway loop is the usual culprit.
- 4Serialize and rate-shape batch jobs through one central queue with backoff on 4, 17, 32 and 613.
- 5Split environments onto separate app IDs so staging tests cannot throttle production.
How to stop it recurring
Centralize every Graph API call behind one client that enforces a token-bucket budget, watches X-App-Usage, and treats 80% as the alarm line. Cache anything cacheable, user profiles especially, and replace polling with webhooks. The documented Messenger ceilings that sit underneath the app quota are tabulated in the limits reference, and the throttling family is mapped in the troubleshooting guide.
Official reference: Meta for Developers - Messenger Platform error codes. See all Messenger error codes or the Messenger limits and quotas.
Related codes
- 17: User request limit reachedIndicates that the User whose token is being used in the request has reached…
- 32: Page request limit reached(#32) Page request limit reached
- 613: Calls to this API have exceeded the rate limitCalls to this API have exceeded the rate limit
- 80006: Messenger business use case rate limit
- 1200: Temporary send message failureTemporary send message failure. Please try again later.
Error 4 - quick answers
What does Messenger error 4 mean?
Code 4 is the Graph API's application-level throttle: your app, across every Page and every endpoint it touches, has exceeded the platform rate limit for its rolling window.
How do I fix Messenger error 4?
1. Pause all calls; the block clears as your rolling-window usage drains, typically within the hour. 2. Read X-App-Usage on every response and shed load at 80% instead of failing at 100%. 3. Find the source: sum calls per Page and per code path; a single runaway loop is the usual culprit. 4. Serialize and rate-shape batch jobs through one central queue with backoff on 4, 17, 32 and 613. 5. Split environments onto separate app IDs so staging tests cannot throttle 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 Messenger by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.