TikTok charges nothing for it and approves almost nobody quickly. Access means a registered app, the video.publish scope, a content audit and a verified domain - and until the audit clears, every post you make is private. Below is what each stage asks for, and the one API call that skips all four.
✓ No audit to pass ✓ No domain to verify ✓ Public posting on your first call
Building an agent instead of an app? The same account works with our TikTok MCP server.
curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "POV: your API just shipped itself 😅 #devlife",
"accounts": ["YOUR_TIKTOK_ACCOUNT_ID"],
"media": [{ "url": "https://media.outstand.so/clip.mp4", "filename": "clip.mp4" }],
"tiktok": { "postMode": "DIRECT_POST", "privacyLevel": "PUBLIC_TO_EVERYONE" }
}'DIRECT_POST publishes. Send images for a photo post, or MEDIA_UPLOAD to drop it in drafts instead.
Once you are through the audit, the plumbing starts: a creator_info pre-flight for the allowed privacy options, a chunked video upload, and mandatory branded-content and AI-disclosure flags. We walked through the audit and its two posting modes in full.
Every content type available on TikTok via Outstand today.
Plus duet/stitch/comment toggles, disclosure flags and thumbnail control. Reading comments and deleting posts are not offered by TikTok’s API.
The same accounts array also fans out to Instagram, X and YouTube - one request, many platforms.
curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Draft for review before it goes live",
"accounts": ["YOUR_TIKTOK_ACCOUNT_ID"],
"media": [{ "url": "https://media.outstand.so/clip.mp4", "filename": "clip.mp4" }],
"tiktok": { "postMode": "MEDIA_UPLOAD" }
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Swipe through the lookbook 👗",
"accounts": ["YOUR_TIKTOK_ACCOUNT_ID"],
"media": [
{ "url": "https://media.outstand.so/1.jpg", "filename": "1.jpg" },
{ "url": "https://media.outstand.so/2.jpg", "filename": "2.jpg" }
],
"tiktok": { "privacyLevel": "PUBLIC_TO_EVERYONE", "autoAddMusic": true }
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Original sound only 🔒",
"accounts": ["YOUR_TIKTOK_ACCOUNT_ID"],
"media": [{ "url": "https://media.outstand.so/clip.mp4", "filename": "clip.mp4" }],
"tiktok": { "privacyLevel": "PUBLIC_TO_EVERYONE", "disableDuet": true, "disableStitch": true, "disableComment": true }
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Paid partnership - made with AI ✨",
"accounts": ["YOUR_TIKTOK_ACCOUNT_ID"],
"media": [{ "url": "https://media.outstand.so/clip.mp4", "filename": "clip.mp4" }],
"tiktok": { "privacyLevel": "PUBLIC_TO_EVERYONE", "brandContentToggle": true, "isAigc": true }
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Drops Friday ⏰",
"accounts": ["YOUR_TIKTOK_ACCOUNT_ID"],
"media": [{ "url": "https://media.outstand.so/teaser.mp4", "filename": "teaser.mp4" }],
"tiktok": { "postMode": "DIRECT_POST", "privacyLevel": "PUBLIC_TO_EVERYONE" },
"scheduledAt": "2026-07-03T16:00:00Z"
}'curl https://api.outstand.so/v1/posts/{id}/analytics \
-H "Authorization: Bearer $OUTSTAND_API_KEY"
# → views, likes, comments, shares, profile_views, reachFrom signup to your first published TikTok in about five minutes.
Your user authorizes via OAuth against our audited app. We store and refresh the token.
Send a video or images with accounts: ["YOUR_TIKTOK_ACCOUNT_ID"] and a tiktok options block. Add scheduledAt to schedule.
creator_info pre-flight, chunked upload, status polling and disclosure flags - returned with the published post ID.
TikTok gives the Content Posting API away for free, then gates the part you need - public posting - behind an audit. Four stages, in order:
Content Posting is the only TikTok product that publishes. Display reads a creator’s own videos; Research is limited to approved academic use. Neither can post.
One integration that grows with everything you ship next.
One request publishes to TikTok and 11 more networks. Same JSON shape everywhere - learn one API, ship them all.
Our audited app and verified domain publish publicly immediately - or bring your own once TikTok approves it.
Intelligent rate limiting, automatic token refresh, webhook events and media processing.
$19/mo includes 3,000 posts, then from $0.007/post. No seats, no annual lock-in.
Same endpoints, same data shapes - pick what you ship.
Let your users queue and auto-publish TikTok content from your app.
Give Claude or GPT a tool to post to TikTok. MCP server included.
Pull TikTok reach and engagement alongside every other platform.
Run TikTok posting for clients under your own brand and app.
The questions developers ask before they build.
Yes - the Content Posting API lets approved apps publish videos and photo posts and read analytics. Outstand is a managed layer on it, so you skip the audit, domain verification and upload plumbing.
Yes. Send a video to POST /v1/posts/ with tiktok.postMode: "DIRECT_POST" to publish it, or "MEDIA_UPLOAD" to drop it into the creator’s drafts.
Direct Post publishes: it uses the video.publish scope, needs a privacy level the creator allows, and the post goes live. Upload-to-inbox uses video.upload and publishes nothing - the video lands as a draft, and the creator must tap the TikTok inbox notification and finish it in the app. Most pages describing "posting via the TikTok API" mean the second one. Outstand defaults to MEDIA_UPLOAD, so set postMode when you mean to publish.
Yes - send 2 or more images. Set tiktok.autoAddMusic for a soundtrack, a photo-only option ignored for videos. Photo posts are URL-only, so they always need a verified domain.
Because your app has not passed the content-posting audit - TikTok restricts every post from an unaudited client to private viewing mode. Outstand’s app is audited, so you publish publicly from day one.
PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR and SELF_ONLY. For a Direct Post it must be one the creator allows - Outstand checks creator_info for you.
Yes. Add a scheduledAt ISO-8601 timestamp up to 30 days ahead - no cron or queue on your side.
No - TikTok does not offer it. Outstand reports that clearly per account rather than failing silently.
TikTok charges nothing - the barrier is the audit and domain verification, not a fee. Outstand is $19/month including 3,000 posts, then $0.007/post, on an app that is already audited.
Four stages, set out above: register an app and add the product, get video.publish approved, pass the content-posting audit, and verify a domain. With Outstand you sign up and call POST /v1/posts/ instead.
TikTok expects an INIT call, a byte-range chunked upload, then status polling until processing finishes. Outstand takes a video URL and runs the cycle.
Content Posting publishes on a creator’s behalf - the one Outstand runs. Display reads a connected creator’s own videos and profile. Research returns public data and is limited to approved researchers.
Each user access token gets 6 requests per minute, on both the direct-post and inbox-upload endpoints. Chunked uploads add their own: each chunk at least 5 MB and no more than 64 MB, up to 1,000 chunks, uploaded in order. Outstand queues and retries underneath.
Yes. GET /v1/posts/{id}/analytics returns views, likes, comments, shares, profile views and reach, in the same shape as every other network.
Grab an API key and publish your first TikTok in the next five minutes. 3,000 posts included, then $0.007/post - dropping to $0.005 at volume.
Read the TikTok setup guide , or see how the same request works on every other platform.