TikTok API Rate Limit
How TikTok’s API rate and posting caps work for audited and unaudited clients.
TikTok enforces three separate limits: a per-request throttle (surfaced by PostGate as a retryable rate_limited error), a per-creator daily posting ceiling of typically around 15 Direct Post publishes per day, and a pre-audit app-level cap of 5 distinct users per rolling 24 hours. Only the first is a classic rate limit — plan around the other two structurally.
"TikTok rate limit" usually gets used to mean three different things that behave nothing alike: a per-request throttle, a per-creator daily posting ceiling, and an app-level cap on how many distinct TikTok accounts can even connect. Only the first one is a rate limit in the classic sense. The other two are quotas your integration needs to plan around structurally, not retry through.
The per-request throttle: rate_limited
Send TikTok requests too fast and the Content Posting API returns a rate-limit error on that call. PostGate surfaces this through its structured error envelope as rate_limited — retryable, so back off and retry with jitter rather than failing the post outright.
The per-creator daily posting ceiling
Separately, TikTok's own guidance describes a per-creator daily posting ceiling through the Direct Post API — typically around 15 posts per creator account per day, though the exact upper limit can vary by creator. This applies whether or not your app has passed audit; audit does not raise it. Build your product to tell a customer "you've hit today's TikTok posting limit" distinctly from a generic failure.
The app-level active-user cap
Before audit, TikTok also caps how many distinct TikTok accounts can authorize your client key at all — up to 5 users in a rolling 24-hour window, per TikTok's Content Sharing Guidelines. This is not a per-request limit; it is enforced at connection time, and it is the source of the reached_active_user_cap error. See TikTok reached_active_user_cap for exactly why disconnecting and reconnecting a user does not free up room.
How does PostGate tell these apart in your logs?
A request throttle shows up as a rate_limited delivery error on an existing post target. A daily posting ceiling shows up as a rejected publish with TikTok's own posting-limit message attached. An active-user cap failure never reaches a post at all — it fails at the connection step, before any content is submitted, so it appears as a failed authorization rather than a delivery failure. Handle each one differently rather than routing all three through one generic "TikTok error" path.
How do you design around all three at once?
Retry request throttles with exponential backoff and jitter, reusing your Idempotency-Key so a retried create-post call cannot double-publish. Track per-creator posting volume in your own product so you can warn a customer before they hit the daily ceiling instead of after. And treat the active-user cap as a rollout constraint to plan a beta around, not an error to catch — see automating TikTok posting at scale.
Frequently asked questions
How many posts per day does the TikTok API allow per account?
TikTok’s own guidance describes a per-creator daily posting ceiling through the Direct Post API — typically around 15 posts per creator account per day, though the exact upper limit can vary by creator. It applies whether or not your app has passed audit; audit does not raise it.
What causes the reached_active_user_cap error?
Before audit, TikTok caps how many distinct TikTok accounts can authorize your client key at all — up to 5 users in a rolling 24-hour window, per TikTok’s Content Sharing Guidelines. It is enforced at connection time, not per request, and disconnecting and reconnecting a user does not free up room.
Should I retry a TikTok rate_limited error?
Yes. The per-request throttle is retryable, so back off and retry with exponential backoff and jitter rather than failing the post outright. Reuse your Idempotency-Key on the retried create-post call so it cannot double-publish.
How can I tell which TikTok limit I hit?
A request throttle shows up as a rate_limited delivery error on an existing post target. The daily posting ceiling shows up as a rejected publish with TikTok’s own posting-limit message attached. An active-user cap failure never reaches a post at all — it fails at the connection step, appearing as a failed authorization rather than a delivery failure.
