TikTok Content Posting API rate limits: 20, 6 and 30 per minute
TikTok limits creator info to 20 requests per minute, post init to 6, and status checks to 30, each per access token. Design your queue around the tightest one.

Three TikTok Content Posting API calls have three different per-access-token limits: Query Creator Info allows 20 requests per minute, starting a post (Direct Post, Upload Video or Photo Post) allows 6, and Get Post Status allows 30. The tightest is the one that sets your throughput, so a queue of finished AI videos should start at most six posts per minute for each creator token.
What is each limit?
All four numbers come from TikTok's own reference pages, read on 2026-10-02. They are per user access token, not per app.
| Call | Limit per minute | Page |
|---|---|---|
| Query Creator Info | 20 | Query Creator Info |
| Direct Post init | 6 | Direct Post |
| Upload Video init (inbox) | 6 | Upload Video |
| Photo Post | 6 | Photo Post |
| Get Post Status | 30 | Get Post Status |
What does that mean for a batch?
Query Creator Info is the call TikTok says to make before posting so you can show privacy options and the creator's max_video_post_duration_sec. At 20 per minute it will not be your bottleneck if you call it once per post. The post-start call at 6 per minute will be: ten creators on ten tokens do not share a bucket, but ten posts for one creator do.
A token bucket is enough. The sketch refills six tokens a minute and tells you how many seconds to wait.
import time
class Bucket:
def __init__(self, per_min: int):
self.cap = per_min
self.tokens = float(per_min)
self.t = time.monotonic()
def wait_seconds(self) -> float:
now = time.monotonic()
self.tokens = min(self.cap, self.tokens + (now - self.t) * self.cap / 60)
self.t = now
if self.tokens >= 1:
self.tokens -= 1
return 0.0
return (1 - self.tokens) * 60 / self.cap
b = Bucket(6)
print([round(b.wait_seconds(), 1) for _ in range(8)])What about the rest of the pipeline?
Generation is not bound by these limits. Sume's Bulk runs queue up to 100 Format runs with a concurrency window, and each finished run is a receipt you can read or take by webhook. The TikTok buckets only decide how fast you release those files.
Daily caps are separate and not in these numbers: TikTok's status page names too many posts within 24 hours as a failure reason, and the inbox flow caps pending shares at five. See the inbox cap post.
What does Sume not do?
Sume does not enforce or track TikTok's limits. Throttling lives in your poster.
Sources
Related posts
More in Developers
- TikTok upload chunk rules: 5 MB to 64 MB, up to 1,000 chunks
TikTok FILE_UPLOAD chunks must be 5 to 64 MB, the last up to 128 MB, 1,000 chunks max. A short planner computes the Content-Range for each PUT.
- TikTok Direct Post post_info fields: title, is_aigc, duet, stitch
A checked list of TikTok post_info fields as of October 2026, with a validator for title length in UTF-16 units, privacy level and the is_aigc AI label.
- TikTok photo post error app_version_check_failed: needs app 31.8+
TikTok's photo post API returns app_version_check_failed in MEDIA_UPLOAD mode when the creator's TikTok app is older than 31.8. Here is what to do.
- TikTok post status: PUBLISH_COMPLETE vs a public post ID
TikTok's Get Post Status returns five statuses. PUBLISH_COMPLETE is not proof the video is public; the post ID appears only after moderation approves it.
Written by Sume