Guaranteed 100% Facebook, Instagram and WhatsApp Approvals & App Review
Quick Transfer Ready to use app available for Facebook, Instagram and WhatsApp
Guaranteed 100% Facebook, Instagram and WhatsApp Approvals & App Review
Quick Transfer Ready to use app available for Facebook, Instagram and WhatsApp
Meta Graph API — 2026

Meta Graph API Rate Limits: Error Codes, Quota Tiers, and the App Review Fix

You are getting error 80004. Or error 4. Or 17. Your requests are failing, your app is throttled, and Meta's documentation gives you formulas without telling you the one thing that actually matters: your quota is set by your app's access tier — and you cannot increase that tier without App Review. This guide explains exactly how the rate limit system works, what each error code means, and what you need to do to unlock a usable quota.

Two Separate Rate Limit Systems

Meta's Graph API does not use one universal rate limit. Depending on which API you are calling and which token type you use, your requests fall under one of two completely different systems. Graph API versions expire on a two-year clock and expired calls quietly fall back to an older version, which our Meta Graph API version deprecation guide explains in full. (For a plain-English map of which API is which, see the What Is Meta API guide.)

Platform Rate Limits

Applies to standard Graph API calls made with an app or user access token. App-level quota is calculated as 200 × daily active users in a rolling one-hour window. User-level quota is not disclosed by Meta.

Business Use Case (BUC) Rate Limits

Applies to Marketing API and Instagram Platform requests. Also covers Pages API calls made with page or system user tokens. The quota depends on your app's access tier and the specific Business Use Case endpoint group. This is where most throttling problems live.

⚠ BUC Limits Are Shared Across Endpoints

All endpoints that share the same Business Use Case type (e.g., Ads Management) draw from the same quota pool for a given ad account. If one endpoint exhausts the limit, all other Ads Management endpoints for that ad account are also throttled — even if those other endpoints made very few calls.

The Access Tier Problem — Why Your Quota Is So Low

Every new Meta app starts on development_access tier by default. This tier gives you a minimal quota designed for testing — not production traffic. To get a quota that can handle real clients and real ad accounts, you need to upgrade through Meta Advanced Access — and that requires App Review.

TierAds Management (calls/hr)Ads Insights (calls/hr)How to Get It
development_accessVery low (default)Very low (default)Default — all new apps
standard_access300 + (40 × active ads)600 + (400 × active ads)Apply for Ads Management Standard Access feature
advanced_access100,000 + (40 × active ads)190,000 + (400 × active ads)App Review required — apply for Advanced Access to Ads Management Standard Access

Source: Meta for Developers — Graph API Rate Limits documentation. Formulas apply to rolling one-hour windows. Active ads = number of ads currently running per ad account.

⚠ The Gap Is Not Small

A Standard Access app managing 100 active ads gets approximately 4,300 Ads Management calls per hour. The same app with Advanced Access gets approximately 104,000 calls per hour. That is a 24× difference — and Advanced Access requires passing App Review. There is no way to pay for more quota on Standard Access alone.

Rate Limit Error Codes — What Each One Means

When your app hits a rate limit, the API returns a specific error code. Knowing which code you received tells you exactly which limit was hit and which system applies.

Error 4Your app has hit its Platform Rate Limit (app access token). The app as a whole has exceeded its rolling 1-hour call count.
Error 17A specific user's token has hit the user-level Platform Rate Limit. Can be caused by the user using multiple apps simultaneously.
Error 32Pages API rate limit reached. Applies to calls made with user or app access tokens against Pages endpoints.
Error 613A custom rate limit has been reached for the specific API you are calling. Check that API's documentation for its own custom limit rules.
613 / 1996Meta has detected inconsistent API request volume behavior from your app. Check recent changes to your request patterns.
Error 80000BUC rate limit — Ads Insights API. Your app has exhausted the Ads Insights quota for this ad account.
Error 80004BUC rate limit — Ads Management API. Most common error for Marketing API integrations. Quota is determined by your access tier.
Error 80002BUC rate limit — Instagram Platform API. Quota is based on impressions (4,800 × impressions per 24-hour window). Instagram uses an impression-based BUC limit, and error 80002 means it is exhausted, so our Instagram Graph API rate limits guide shows how to scale past the 429s.
Error 80001BUC rate limit — Pages API called with page or system user access token.
Error 80008BUC rate limit — WhatsApp Business Management API. Default: 200 requests/hr/app/WABA. Active WABAs: 5,000 requests/hr.
Error 80003BUC rate limit — Custom Audience API. Advanced Access gives up to 190,000 + (40 × active audiences) calls per hour.
Error 80009BUC rate limit — Catalog Management API.
Error 80014BUC rate limit — Catalog Batch API.

How to Read the Rate Limit Headers

Meta includes rate limit usage data in API response headers before you actually hit the limit. Reading these headers is the only way to monitor quota proactively. Two headers matter:

X-App-Usage (Platform Limits)

Returns call_count, total_cputime, and total_time as percentages. When any value reaches 100, throttling begins. Available in the App Dashboard too.

X-Business-Use-Case-Usage (BUC Limits)

Returns per-BUC usage including call_count, total_cputime, total_time, ads_api_access_tier, and critically — estimated_time_to_regain_access in minutes. Up to 32 objects per call.

Why Error 80004 Cannot Be Fixed by Code Alone

Most developers try to fix rate limiting with exponential backoff, request batching, and spreading calls over time. These are valid best practices — but they treat a symptom, not the cause. If your app is on development_access or standard_access, the quota ceiling is structurally low. Here is what actually determines your ceiling:

1
Your app's access tier

Development, Standard, or Advanced Access. This is set by your App Review status — not by any setting you can configure yourself.

2
Number of active ads per ad account

The BUC formula includes an "active ads multiplier" — more active ads = more quota. But this only applies after you have standard or advanced access.

3
CPU time and wall time

Even within your call count quota, complex queries that take too much CPU time or processing time will be throttled. This is a secondary factor on top of the call count limit.

4
BUC sharing across endpoints

All Ads Management endpoints share the same pool per ad account. If your reporting module burns quota, your campaign creation module hits the same limit — even if it made few calls itself.

5
App Review for Advanced Access

To unlock a quota ceiling that actually supports production traffic at scale, you must apply for Advanced Access to the Ads Management Standard Access feature. This goes through Meta's App Review process. It is not automatic. If throttling is blocking a launch, you can hire a Facebook API developer to audit the call pattern and fix it.

Common Reasons App Review Stalls on Rate Limit Requests

  • App is still in Development Mode — reviewers cannot test a Development Mode app against real ad accounts
  • No screencasts showing the full Ads Management workflow end-to-end with real API calls visible
  • Privacy policy missing data retention, data deletion, or Ads data handling language
  • Business Verification not completed — required before Advanced Access submissions are even reviewed
  • Use case description does not explain why the app cannot operate on Standard Access limits
  • Test credentials do not give reviewers access to an ad account with active ads (so the quota formula looks broken to them)
  • App is flagged for inconsistent request volume (error 613 subcode 1996) — this triggers extra scrutiny before App Review even proceeds

Not affiliated with Meta Platforms, Inc. Meta makes all App Review and access tier decisions independently. Rate limit quotas and formulas sourced from official Meta for Developers documentation.