Home › Meta Marketing API rate limits
Meta API rate limits, and why your bulk launch stops halfway
A single campaign never hits a rate limit. Fifty at once routinely do — and the later ones just vanish, with no clean error. Here’s how Meta’s points-based throttling works, and how to launch the whole batch.
✓ No credit card · ✓ 5 free campaigns/month · ✓ Dashboard, Google Sheets & your AI assistant
Short answer
Meta's Marketing API limits ad creation with a points-based, business-use-case system scored per ad account, not a fixed calls-per-minute cap. Each campaign is several write calls, so bulk launches spend points fast and hit the ceiling mid-batch; later campaigns then silently fail to create. The fix is to read the account's live remaining capacity before the batch and pace the launch to stay under it.
| Situation | What happens | Defense |
|---|---|---|
| Single campaign | Never near the limit | None needed |
| Bulk launch, fired fast | Throttled mid-batch | Pace the calls |
| Limit exceeded | Later campaigns silently missing | Pre-flight capacity check |
| Blind retry | Makes it worse | Retry only the missing rows |
The ceiling is not a fixed number — it is scored per account and per access tier, which is why the same script works on one account and throttles on another.
The mechanism
How Meta throttles campaign creation
How do Meta Marketing API rate limits actually work?
Meta does not rate-limit ad creation by a simple “X calls per minute.” It uses a points-based, business-use-case system: every API call spends points against a budget that is scored per ad account and refills over a rolling window. Read and write calls cost different amounts, and the budget an account gets scales with how active and established the account is — a brand-new account on the lowest access tier has far less headroom than a seasoned one.
The practical effect: how many campaigns you can create in an hour is not a fixed number. It depends on your account’s tier, its recent activity, and how heavy each create call is.
Why does bulk campaign creation hit the limit when single launches don’t?
Because creating a campaign is not one call. A single campaign with an ad set, an ad, and a creative can be four, five, or more write calls once you include the reads Meta needs to validate it. Multiply that by fifty campaigns and you are firing hundreds of scored calls in a few minutes — and that is what trips the ceiling.
A single campaign never gets near the limit. A batch of dozens, created as fast as a script can fire them, routinely does. That is why the error looks like it “came out of nowhere”: nothing changed except the volume.
What happens when you exceed the limit? Silent
This is the dangerous part. When you blow past the budget, Meta starts rejecting calls — and depending on where in the batch it happens, the later campaigns simply never get created. On a fast bulk script, that can mean the first thirty campaigns exist and the last twenty do not, with no clean summary telling you which. Retrying immediately makes it worse, because the retries spend against the same depleted budget.
You will usually see an error code in the family of API error 4 (rate limit) or 613 / subcode 80004 (too many calls), but on a partial batch the more common experience is just campaigns that are quietly missing.
Practical limits
How many can you launch at once
How many campaigns can I create per hour before Meta throttles me?
There is no single published number, because the budget is scored and tier-dependent. In our own testing against live accounts on Meta Marketing API v25.0, an established account on standard access can create well over a hundred campaigns in a short window if the calls are paced — and a newer or lower-tier account can start dropping calls much sooner. The variable that matters most is not the campaign count, it is how hard and how fast you are hitting the account.
What we do instead of guessing
Because the ceiling moves per account, guessing is the wrong approach. Adbloop reads the account’s live remaining capacity from Meta’s rate-limit headers before a batch starts, and paces the launch to stay under it. If there isn’t enough headroom for the whole batch, it tells you up front rather than launching half of it and failing the rest.
The result is that a 131-campaign launch either goes through completely or is held back before it starts — not stranded halfway.
Adbloop capacity check · validated on a 131-campaign launch, 131 of 131 created · Meta Marketing API v25.0How do I avoid throttling on bulk launches?
Three habits prevent almost all of it. First, check remaining capacity before you start, not after you fail — Meta returns your current usage in the response headers of every call. Second, pace the batch instead of firing every call at once. Third, never blind-retry a throttled batch; identify exactly which campaigns are missing and create only those, after the budget has refilled.
If you are launching by hand through a script, you have to build all three yourself. If you launch through Adbloop — dashboard, Google Sheets, or Claude and ChatGPT — the capacity check and pacing run automatically, and everything lands paused so you can confirm the full batch before any of it spends.
Related reading: why Meta ads silently fail and bulk-create Meta ads from Google Sheets.
Launch the whole batch, not half of it
Rate limits are the reason bulk launches strand halfway with no error. Adbloop reads your account’s live capacity before every batch, paces the launch to stay under Meta’s ceiling, and lands every campaign paused — so 150 campaigns either go through completely or are held before they start. Never a silent partial launch.