Threads API Rate Limit
How Meta’s Threads API rate limiting works for publishing integrations.
Meta caps each connected Threads profile at 250 published posts per rolling 24-hour window, plus a separate 1,000-replies quota — enforced per profile, not per app. It's a sliding window, not a midnight reset. When a profile hits the limit, PostGate marks the target retry_scheduled and retries automatically once the window has room again.
Threads' publishing limit is a quota, not a request-per-second throttle: Meta caps each connected profile at 250 published posts within a rolling 24-hour window, tracked separately from replies. It's enforced per Threads profile, not per app, so one busy tenant can't exhaust another tenant's headroom.
What are the actual numbers?
When does the quota reset?
What happens when a profile hits the limit?
retry_scheduled rather than failed, and retries automatically once the rolling window has room again — you don't need to re-send the request or manage backoff yourself.How do you design around it?
Why check profile health before spending a slot?
GET /api/profiles/{id}/health reports whether a Threads connection needs re-consent before you attempt a publish. A request that fails on reconnect_required doesn't consume a quota slot with Meta, but catching it up front avoids the round trip and the delay entirely.Frequently asked questions
Does a Threads carousel count as one post or many against the quota?
One. A carousel published as a single post counts as exactly one against the 250-posts-per-24-hours limit, regardless of how many images or videos it contains — which makes carousels the quota-efficient way to publish several images at once.
When does the Threads posting quota reset?
It does not reset at midnight — it is a sliding 24-hour count from each publish attempt. Meta exposes current usage via a dedicated quota-check call on the Graph API; PostGate reads and caches that per profile so a burst of scheduled posts can be checked before it is attempted, not after it fails.
What happens if a Threads profile exceeds 250 posts in 24 hours?
A publish attempt beyond quota comes back from Meta as a rate-limit error, not a generic failure. PostGate surfaces that on the post's target as retry_scheduled rather than failed, and retries automatically once the rolling window has room again — you do not need to re-send the request or manage backoff yourself.
Is the Threads rate limit per app or per profile?
Per Threads profile. The 250-post quota and the separate 1,000-replies-per-24-hours quota are each enforced per connected profile, not per app, so one busy tenant cannot exhaust another tenant's headroom.
How can I avoid wasting quota with automated posting?
Favor carousels over multiple single-item posts when publishing several images at once, spread a recurring schedule across slots instead of firing everything at the same moment, and check GET /api/profiles/{id}/health before publishing — a reconnect_required failure does not consume a Meta quota slot, but catching it up front avoids the round trip and delay.
