Engineering
WhatsApp error 80007 (rate limit issues): too many calls for one WhatsApp Business account
Error 80007 caps API requests per app per WhatsApp Business account: 200 an hour until a number is registered, 5,000 after. Why onboarding scripts and template polling hit it, and how to plan calls.
By Broadchat teamPublished 5 min read
In short
WhatsApp error 80007 means "The WhatsApp Business Account has reached its rate limit." Meta caps how many API requests your app can make for one WhatsApp Business account: 200 per hour by default, and 5,000 per hour once the account has at least one registered phone number. Meta returns it with HTTP 429. Wait, then cut repeated calls for that account: cache templates and phone details, use webhooks, and spread jobs over the hour.
Key takeaways
- 80007 counts requests per app, per WhatsApp Business account, per hour; another account served by the same app is not affected.
- The allowance jumps from 200 to 5,000 requests an hour once the account has a registered phone number, so new accounts during setup are the easiest to exhaust.
- The X-Business-Use-Case-Usage header reports usage per account and can include estimated_time_to_regain_access, in minutes.
- Message throughput is a separate limit (130429); 80007 is about request volume, usually management and read calls.
- Meta's general Graph API rate-limiting page lists code 80008 for the WhatsApp Business Management use case; handle 80007 and 80008 the same way.
WhatsApp error 80007 means your app has made too many API requests for one WhatsApp Business account in the current hour. Meta's error reference titles it "WhatsApp Business Account Rate Limit" (HTTP 429 Too Many Requests): "The WhatsApp Business Account has reached its rate limit." Its advice is to see the account rate limits, "try again later or reduce the frequency or amount of API queries the app is making." The limit is scoped to one account, which makes it easier to trace than the app-wide error 4.
The numbers
Meta's WhatsApp rate-limits documentation sets request limits per app and per account (Meta now calls the account a Messaging account):
| Account state | Requests per hour, per app, per account |
|---|---|
| Default, including accounts still being set up | 200 |
| Active: at least one registered phone number | 5,000 |
| Credit Line API requests | 5,000 |
Two consequences follow. A brand-new account, before its number is registered, has only 200 requests an hour, so an onboarding script that retries in a loop can use it up quickly. And because the limit is per app, a second app working on the same account (for example your own script beside a platform's app) has its own allowance, but each one can still hit its own ceiling.
Message sending speed is governed separately by throughput, 80 messages per second per number by default, and exceeding it gives 130429. If your campaign gets 80007, look at the other calls running for the same account.
What the error looks like
Illustrative response:
{
"error": {
"message": "(#80007) There have been too many calls to this WhatsApp Business account.",
"type": "OAuthException",
"is_transient": true,
"code": 80007,
"fbtrace_id": "AzR4mW9qPn2TkV6sLx1bCeJ"
}
}The usage header on earlier responses, keyed by the account ID (illustrative values):
X-Business-Use-Case-Usage: {"104857362291847":[{"type":"whatsapp_business_management","call_count":97,"total_cputime":12,"total_time":15,"estimated_time_to_regain_access":0}]}call_count, total_cputime and total_time are percentages of the allowance. When a limit is hit, estimated_time_to_regain_access tells you, in minutes, how long to wait.
Common causes
- Template polling. Fetching each template's status one by one every minute instead of listing them in one call and listening to
message_template_status_updatewebhooks. - Onboarding loops. A script that keeps calling registration, phone number or subscription endpoints while waiting for something to finish, on an account that still has the 200-request allowance.
- Health checks per screen. A dashboard that fetches phone number quality and messaging limit each time it loads.
- Analytics pulls over long date ranges split into many small requests.
- Two systems on one account, each unaware of the other's jobs.
Step-by-step fix
- Note the account ID in the failing call and pause non-urgent jobs for that account.
- Read
estimated_time_to_regain_accessfrom the header and wait at least that long before retrying. - List calls for that account over the last hour by endpoint. Polling jobs usually stand out.
- Batch reads. One
GET /<WABA_ID>/message_templates?fields=name,status,language,category&limit=100replaces dozens of single-template calls. - Move to webhooks for template status, account updates and message statuses.
- Cache phone number details and business profile; refresh on a webhook or every few hours.
- Retry with back-off after the wait. A request rejected for a rate limit was not processed, so retrying a send is safe.
A worked example
Priya, a developer at a Jaipur travel agency, writes a setup script for the agency's new WhatsApp Business account. It creates 30 itinerary and payment-reminder templates, then checks each template's status every two minutes until all are approved, and also polls the phone number while the team finishes registration. The number is not registered yet, so the account has the 200-requests-an-hour allowance. Within the first hour the script hits 80007 and the template creation calls start failing too.
She changes the script to list all templates in one call every 15 minutes and subscribes to template status webhooks. After the number is registered, the account moves to the 5,000-requests-an-hour allowance and the remaining work fits comfortably. Template creation has its own separate limit of 100 new templates an hour per account, so she also spreads creation over two runs for future batches.
Preventing 80007
- Budget calls per account, especially during onboarding.
- One list call, not many item calls, wherever an endpoint supports listing.
- Webhooks for anything that changes state.
- Read the usage header and slow background work when it climbs.
How Broadchat handles account rate limits
Broadchat's Meta client reads X-Business-Use-Case-Usage for each account, postpones background refreshes such as template sync and channel health when usage is high, and honours estimated_time_to_regain_access when Meta asks it to wait. It treats 80007 as a rate-limit rejection, so the call is retried with exponential back-off and jitter instead of being reported as a failure straight away. Template status changes reach Broadchat through Meta's webhook, and Sync Templates in CRM → WhatsApp Templates fetches the list in one pass. If you also run your own scripts against the same account, they use your app's separate allowance.
Related: error 4, the app-wide limit, the WhatsApp API error codes cheat-sheet and messaging limit tiers, which are a different kind of limit.
Sources
- WhatsApp error codes — Meta for Developers, checked 1 November 2026
- Rate limits on the WhatsApp Business Platform — Meta for Developers, checked 1 November 2026
- 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 80007 mean?
It means your app has made too many API requests for one WhatsApp Business account in the current hour. Meta returns it with HTTP 429. Wait until access returns, then reduce repeated calls for that account.
What is the WhatsApp Business account rate limit?
Meta's documentation gives 200 requests per hour, per app, per account by default, and 5,000 per hour once the account has at least one registered phone number. Credit Line API requests are also allowed 5,000 per hour.
How long do I have to wait after 80007?
Check the X-Business-Use-Case-Usage header: estimated_time_to_regain_access gives the wait in minutes. If it is not present, back off exponentially, starting with a few seconds and stopping after a few attempts.
Is 80007 related to my messaging limit tier?
No. Messaging limit tiers cap how many unique customers you can reach with templates in 24 hours. 80007 caps API requests per hour for the account, mostly management and read calls.
What is the difference between 80007 and 80008?
Meta's WhatsApp error codes page lists 80007 for the WhatsApp Business account rate limit, while Meta's general Graph API rate-limiting page lists 80008 for the WhatsApp Business Management use case. Both mean too many calls; treat them the same way.