TikTok Content Posting API · access · the audit

TikTok Content Posting API access, in four stages

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.

Audit explainedPublic from day oneVideosPhoto postsScheduling

✓ 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.

bash
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.

TikTok's Content Posting API is powerful - and painful

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.

Unaudited apps can only post privately
Our audited app posts publicly from day one
Query creator_info for allowed privacy first
We run the pre-flight and validate privacy
Chunked upload: INIT → byte-range → poll status
Pass a video URL; we run it and poll
Branded-content and AI-disclosure flags are mandatory
Set brandContentToggle / isAigc; we send them
24-hour tokens that expire silently
Automatic token refresh - you never see a 401
6 requests per minute, per user access token
We queue and retry - you never see a 429

Everything TikTok supports, through one endpoint

Every content type available on TikTok via Outstand today.

Videos

Photo posts

Direct post

Upload to drafts

PublishingSchedulingAnalyticsMedia handlingCommentsDirect messages

Plus duet/stitch/comment toggles, disclosure flags and thumbnail control. Reading comments and deleting posts are not offered by TikTok’s API.

Copy, paste, ship

The same accounts array also fans out to Instagram, X and YouTube - one request, many platforms.

Upload to drafts (inbox)

bash
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" }
  }'

Publish a photo post (with sound)

bash
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 }
  }'

Disable duet, stitch & comments

bash
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 }
  }'

Disclose branded / AI content

bash
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 }
  }'

Schedule a post (up to 30 days out)

bash
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"
  }'

Read analytics

bash
curl https://api.outstand.so/v1/posts/{id}/analytics \
  -H "Authorization: Bearer $OUTSTAND_API_KEY"
# → views, likes, comments, shares, profile_views, reach

Live in three steps

From signup to your first published TikTok in about five minutes.

1

Connect TikTok

Your user authorizes via OAuth against our audited app. We store and refresh the token.

2

Call POST /v1/posts/

Send a video or images with accounts: ["YOUR_TIKTOK_ACCOUNT_ID"] and a tiktok options block. Add scheduledAt to schedule.

3

We do the Content Posting work

creator_info pre-flight, chunked upload, status polling and disclosure flags - returned with the published post ID.

How to get TikTok Content Posting API access

TikTok gives the Content Posting API away for free, then gates the part you need - public posting - behind an audit. Four stages, in order:

1. Register an app
A developer app on the TikTok for Developers portal, then add the Content Posting API product to it and switch on the Direct Post configuration. Free, and the only stage with no waiting.
2. Get the video.publish scope approved
TikTok must approve your app for video.publish, and separately each creator must authorize your app for it. The inbox-upload route uses video.upload instead - a different scope with a different approval.
3. Pass the content-posting audit
The gate that matters. Until it clears, TikTok restricts every post your app makes to private viewing - you can test end to end and still have nobody see the result. You submit after testing, and it is reviewed against TikTok’s Terms of Service.
4. Verify a domain or URL prefix
Needed before TikTok will fetch media from your URLs. Videos can skip it by uploading bytes directly; photo posts cannot - a photo post is URL-only, so no verified domain means no photo posting.
What TikTok charges
Nothing. The Content Posting API, Display API and Login Kit carry no licence fee. The cost is the audit, not the access.
Going through Outstand
An API key. Our app is already audited and our media domain verified, so your first call publishes publicly to a real audience.
Outstand pricing
$19/month including 3,000 posts, then $0.007/post - $0.005 at volume. No seats, no lock-in. Full pricing is on the homepage.
Bringing your own app
Once TikTok audits your own app, drop your client key and secret in and Outstand runs OAuth under your brand instead of ours.

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.

More than a TikTok wrapper

One integration that grows with everything you ship next.

One API, 12 platforms

One request publishes to TikTok and 11 more networks. Same JSON shape everywhere - learn one API, ship them all.

Managed Keys or BYOK

Our audited app and verified domain publish publicly immediately - or bring your own once TikTok approves it.

Built for scale

Intelligent rate limiting, automatic token refresh, webhook events and media processing.

Honest pricing

$19/mo includes 3,000 posts, then from $0.007/post. No seats, no annual lock-in.

What you can build

Same endpoints, same data shapes - pick what you ship.

Social schedulers

Let your users queue and auto-publish TikTok content from your app.

AI agents

Give Claude or GPT a tool to post to TikTok. MCP server included.

Analytics dashboards

Pull TikTok reach and engagement alongside every other platform.

Agencies & white-label

Run TikTok posting for clients under your own brand and app.

TikTok API FAQ

The questions developers ask before they build.

Does TikTok have an official API?

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.

Can I post TikTok videos via API?

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.

What is the difference between Direct Post and upload-to-inbox?

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.

Can I post TikTok photo posts via API?

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.

Why can only I see the posts I publish via the API?

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.

What privacy levels can I set?

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.

Can I schedule TikTok posts via the API?

Yes. Add a scheduledAt ISO-8601 timestamp up to 30 days ahead - no cron or queue on your side.

Can I delete a TikTok post via the API?

No - TikTok does not offer it. Outstand reports that clearly per account rather than failing silently.

How much does the TikTok API cost?

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.

How do I get access to the TikTok Content Posting API?

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.

How do I upload a video to TikTok via the API?

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.

What is the difference between the Content Posting, Display and Research APIs?

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.

What are the TikTok API rate limits?

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.

Can I pull TikTok analytics via the API?

Yes. GET /v1/posts/{id}/analytics returns views, likes, comments, shares, profile views and reach, in the same shape as every other network.

Ship TikTok posting today

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.