TikTok posting API
TikTok lets apps post privately until they pass an audit.
TikTok posting isn't live on our API yet. This is a guide to TikTok's own Content Posting API: the two posting modes, the audit, media rules and limits.
The short answer · Updated Nov 1, 2026
TikTok's Content Posting API lets an app post videos and photo posts to a creator's account after the creator authorizes the video.publish scope, or send drafts to their inbox with video.upload. Until the app passes TikTok's audit, everything it posts is restricted to private viewing, and at most 5 users can post through it in a 24-hour window.
TikTok: coming soon. Needs TikTok's API audit. Everything else on this page describes the API as it works today.
| Mode | Scope | What happens | Limit to know |
|---|---|---|---|
| Direct Post (video) | video.publish | Posts to the profile with the privacy level the user picks | Private-only until the app is audited |
| Upload to inbox (video) | video.upload | Creator gets an inbox notification and finishes the post in TikTok | At most 5 pending shares per 24 hours |
| Photo post | video.publish (DIRECT_POST) or video.upload (MEDIA_UPLOAD) | Up to 35 images, posted or sent to the creator to finish | Images must be pulled from a verified URL |
From TikTok for Developers: Direct Post, Upload and Photo Post references, read 2026-11-01.
| Item | Requirement |
|---|---|
| Video formats | MP4 (recommended), WebM, MOV |
| Video codecs | H.264 (recommended), H.265, VP8, VP9 |
| Video size and length | Up to 4 GB; up to 10 minutes via the API, or less if the creator's max duration is lower |
| Video frame and resolution | 23 to 60 fps; 360 to 4096 px on each side |
| Upload chunks | 5 MB to 64 MB each (last may be larger), 1 to 1,000 chunks, sent in order |
| Photos | JPEG or WebP, up to 1080p, 20 MB each, up to 35 per post |
| Video caption | Up to 2,200 UTF-16 runes |
| Photo title and description | 90 and 4,000 UTF-16 runes |
From TikTok's media transfer guide and Content Posting API references.
What does it take to post with the TikTok API?
Register an app on TikTok for Developers, add the Content Posting API product, enable the Direct Post configuration, and get the video.publish scope approved. Each creator then authorizes your app for that scope, which gives you their user access token and open id.
Before every post, TikTok requires a Query Creator Info call. It returns details such as the privacy levels the creator can use and their maximum video duration (the example in TikTok's docs shows 300 seconds), and your upload screen must use those values.
What does the TikTok audit change?
Unaudited apps can call the API, but TikTok restricts all their content to private viewing. Its sharing guidelines add that an unaudited client can let at most 5 users post in a 24-hour window, those accounts must be private, and posts must use SELF_ONLY visibility. Posting otherwise returns unaudited_client_can_only_post_to_private_accounts.
That's why an unaudited app is fine for testing and useless for publishing for anyone else. Meta's equivalent gate for Instagram is App Review, covered in our Instagram API guide. To lift it, the client must pass TikTok's audit, and TikTok's content sharing guidelines describe the posting experience it expects:
- Show the creator's nickname on the upload screen.
- Offer the privacy levels from Query Creator Info with no default selected.
- Leave Comment, Duet and Stitch toggles off by default, and grey out ones the creator has disabled.
- Include a commercial content disclosure, off by default, with Your brand and Branded content options; branded content can't be private.
- Show a preview, let the user edit preset titles and hashtags, and only upload after they consent.
- Don't add promotional watermarks or logos to creators' content.
How does a TikTok Direct Post request work?
Call POST https://open.tiktokapis.com/v2/post/publish/video/init/ with a post_info object (caption, privacy_level and interaction settings) and a source_info object. With FILE_UPLOAD you declare the size and chunking and get back an upload_url, which expires after one hour; with PULL_FROM_URL TikTok fetches the file itself.
The response carries a publish_id. Processing is asynchronous, so poll the post status endpoint or use webhooks, and tell the user it may take a few minutes to appear on their profile. If an AI agent drives the upload, the consent and preview rules above still apply; our MCP server doesn't offer TikTok yet.
curl -X POST https://open.tiktokapis.com/v2/post/publish/video/init/ \
-H "Authorization: Bearer $TIKTOK_USER_TOKEN" \
-H "Content-Type: application/json; charset=UTF-8" \
-d '{
"post_info": {
"title": "Shipping day #buildinpublic",
"privacy_level": "SELF_ONLY",
"disable_comment": false,
"disable_duet": false,
"disable_stitch": false
},
"source_info": {
"source": "PULL_FROM_URL",
"video_url": "https://media.example.com/launch.mp4"
}
}'
# 200 → { "data": { "publish_id": "..." }, "error": { "code": "ok" } }Why does PULL_FROM_URL need domain verification?
TikTok only pulls media from URLs it knows you own. Verify a domain by adding a signature string to its DNS records, and every path under it and its subdomains counts as yours; or verify a URL prefix. Pulling from an unverified URL returns url_ownership_unverified.
The URL must be HTTPS, its host must be a domain rather than an IP address, and it must not redirect. Photo posts only accept PULL_FROM_URL, so photo posting needs this set up from day one.
What are the TikTok API posting limits?
Each user access token can make 6 requests per minute to the posting endpoints; going over returns 429 rate_limit_exceeded. Each creator also has a daily post cap that varies by creator and is typically around 15 posts a day, per TikTok's sharing guidelines, returned as spam_risk_too_many_posts.
On top of that, each API client has a 24-hour cap on how many creators can actively post through it (reached_active_user_cap), and inbox uploads allow at most 5 pending shares per 24 hours (spam_risk_too_many_pending_share).
What TikTok API errors should you plan for?
The Direct Post reference lists these. Most of them mean show the user a message, not retry:
- 401
access_token_invalidorscope_not_authorized: refresh the token or ask the creator to grantvideo.publish. - 403
privacy_level_option_mismatch: the privacy level isn't one Query Creator Info returned. - 403
spam_risk_user_banned_from_posting: the creator can't post right now; nothing to retry. - 400
invalid_param: read the error message for the field at fault, such as chunk sizes that don't matchvideo_size. - 5xx: TikTok server or network error; retry later.
Questions
What developers ask
Why can't unaudited TikTok apps post publicly?
TikTok restricts all content from unaudited Content Posting API clients to private viewing. Its guidelines also limit an unaudited client to 5 posting users per 24 hours, all with private accounts. Passing TikTok's audit lifts the restriction; TikTok's content sharing guidelines describe the posting experience it expects.
Is the TikTok Content Posting API free?
TikTok's developer docs for the Content Posting API describe scopes, audits and rate limits but no per-call price. The constraints are access and volume: an audit before public posting, 6 requests per minute per user token, and a per-creator daily post cap that is typically around 15.
What's the difference between Direct Post and upload to inbox?
Direct Post, with the video.publish scope, publishes to the creator's profile with the privacy level they choose. Upload, with video.upload, sends the video to the creator's TikTok inbox and they finish editing and posting in the app. Inbox uploads allow at most 5 pending shares per 24 hours.
Can I post photos with the TikTok API?
Yes. The photo post endpoint takes up to 35 JPEG or WebP images, each up to 1080p and 20 MB, in DIRECT_POST or MEDIA_UPLOAD mode. Photos must use PULL_FROM_URL, so the image host needs a verified domain or URL prefix.
How long can a video posted by API be?
TikTok's media transfer guide says the longest video you can send through the upload endpoint is 10 minutes, up to 4 GB. The creator's own maximum, returned by Query Creator Info, can be lower, and your app must check the video against it before posting.
When will TikTok work on your API?
After our app passes TikTok's audit and video posting is built on our side. Neither has happened yet. This page will show the change, TikTok will appear in the platforms endpoint, and we mark TikTok live only after a public post goes through end to end.
Get an API key and send your first post in five minutes.