TikTok posting API: limits, OAuth, and quick setup [2026]

Automate TikTok video posts via Content Posting API. Learn about OAuth 2.0 setup, video specs, rate limits and quick setup steps.

Darya Nazarava

Last updated: May 6, 2026 by

·10 min read·

TikTok's Content Posting API is the official REST interface for uploading, scheduling, and publishing videos to TikTok accounts programmatically. It uses OAuth 2.0, supports MP4 files up to 1 GB, and caps publishing at 25 videos per account per day. You need app-level approval from TikTok before going to production or you can skip that entirely by routing through a TikTok API integration app like Zernio, which wraps TikTok and 14 other platforms behind one endpoint.

Table of contents

What is the TikTok Content Posting API?

TikTok's Content Posting API is the production-grade endpoint for publishing video content to TikTok at scale. It replaced the older Video Upload API in late 2022 and is the only officially supported path for automated posting.

It has two posting modes: Direct Post, which publishes immediately or at a scheduled time, and Creator's Draft, which deposits the video into the user's TikTok inbox as a draft for manual review before going live.

Direct Post is what you want for fully automated workflows. Creator's Draft exists for tools where users want to apply TikTok's native sounds, effects, or filters before publishing - the API can't add those, only the app can.

Full documentation is at developers.tiktok.com/doc/content-posting-api-get-started-overview.

What does the TikTok API approval process require?

TikTok doesn't grant API access on signup. Your app goes through a manual review before it can publish to real user accounts.

The process:

  1. Create a developer account at developers.tiktok.com
  2. Register your app and request the video.upload and video.publish scopes
  3. Submit for review: TikTok evaluates your use case, privacy policy, and data handling practices
  4. Test in sandbox mode while waiting (limited to test accounts only)
  5. Receive production access after approval

Review typically takes 2-6 weeks. TikTok approves content management tools, scheduling platforms, and social media dashboards. They're strict: apps without a clear, documented use case get rejected.

If this timeline is a problem, Zernio supports TikTok API integration and its own approved access. Your app authenticates with Zernio, while Zernio handles the TikTok side, and your users can connect their TikTok accounts immediately, no separate approval required.

How does TikTok API OAuth 2.0 work?

TikTok uses the standard OAuth 2.0 authorization code flow. Here's the sequence:

  1. Redirect the user to TikTok's auth URL with your client_key and the scopes you need
  2. The user logs in and approves the permissions
  3. TikTok redirects back to your redirect_uri with a temporary code
  4. Your server exchanges that code (plus client_key and client_secret) for an access_token and refresh_token
  5. Store both tokens; use access_token in the Authorization: Bearer header on all API calls

The scopes for posting: video.upload and video.publish. Add video.list if you need to read post performance data.

How long do TikTok API access tokens last?

Access tokens expire after 24 hours. This is the most common integration bug, when developers build the auth flow, it works for a day, then breaks and they don't know why.

Token typeLifespan
Access token24 hours
Refresh token365 days
Refreshed access token24 hours (resets on each refresh)

When an access token is about to expire, call the refresh endpoint with grant_type=refresh_token. TikTok returns a new access token without requiring the user to re-authorize.

If the refresh token expires (365 days of inactivity, or the user revokes your app's access in their TikTok settings), the user has to complete the OAuth flow again.

What are TikTok's API rate limits?

TikTok enforces limits at both the app level and the per-account level. The per-account limits are what most developers hit first:

LimitValue
Daily post limit (per account)25 videos per 24 hours
Caption character limit2,200 characters (including hashtags)
Max file size1 GB
Min video duration3 seconds
Max video duration10 minutes

For the app-level rate limits (total API calls per day), TikTok doesn't publish exact numbers, and they vary by app tier and are negotiated as part of the approval process. Each API response includes X-RateLimit-Remaining and X-RateLimit-Reset headers.

What video specs does the TikTok API require?

SpecRequirement
Accepted formatsMP4, MOV, WEBM, AVI
Max file size1 GB
Min duration3 seconds
Max duration10 minutes
Min resolution360 x 360 px
Recommended aspect ratio9:16 (vertical)
Also accepted1:1, 16:9

Validate on the client side before calling the API. The two most common errors are videos that are too short (under 3 seconds) and resolution below 360px, and both return a 400 with an err_code you can map to a user-facing message.

One hard constraint: the API can't apply TikTok's native sound library, stickers, polls, or Q&A features. Those are only available inside the TikTok app. If your users need those elements, route through Creator's Draft mode so they can finish the post in-app before it goes live.

How to post to TikTok with Zernio in minutes

If you don't want to wrestle with TikTok Content Posting API: handling OAuth, rate limits, media hosting, and API changes, then Zernio handles all of it. Your side of the integration is one API call.

zernio for tiktok api integration

Here's the full setup from zero.

Step 1: Create a Zernio account and get your API key

Sign up at zernio.com/signup. No credit card required, the free plan includes 2 connected social accounts.
Once you're in, go to the dashboard and create an API key. Copy it, this is the only credential you'll need.

Step 2: Connect a TikTok account

Generate an OAuth URL and redirect your user there. Zernio handles the token exchange, storage, and refresh on the other side.

After the user authorizes, the account is connected. Zernio refreshes tokens automatically — you never touch OAuth again.

Step 3: Post a video to TikTok

Below is the TikTok content posting API Python example:

result = client.posts.create(
  content="Check out this amazing sunset! #sunset #nature",
  media_items=[
    {"type": "video", "url": "https://cdn.example.com/sunset-video.mp4"}
  ],
  platforms=[
    {"platform": "tiktok", "accountId": "YOUR_ACCOUNT_ID"}
  ],
  tiktok_settings={
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "allow_comment": True,
    "allow_duet": True,
    "allow_stitch": True,
    "content_preview_confirmed": True,
    "express_consent_given": True
  },
  publish_now=True
)
post = result.post
print(f"Posted to TikTok! {post['_id']}")

(Optional) Pulling TikTok analytics

Posting is only half the loop. Once content is live, your users want to know how it's performing.

tiktok analytics api

Zernio's social media analytics API covers TikTok post metrics - likes, comments, shares, views. TikTok also provides a dedicated Account Insights API for account-level counters (follower_count, following_count, likes_count, video_count) plus Zernio-synthesized followers_gained and followers_lost deltas. All returned under the same API key, no additional TikTok scope required.

const analytics = await zernio.analytics.getAnalytics({
  platform: 'tiktok',
  fromDate: '2024-01-01',
  toDate: '2024-01-31'
});
console.log(analytics.posts);

(Optional) Boosting TikTok posts as ads

If your product lets users promote their best-performing content, Zernio's Ads API covers TikTok alongside Meta, LinkedIn, Pinterest, X, and Google - all through the same integration.

Instead of building a separate TikTok Ads API integration (which requires its own approval process, separate credentials, and a completely different API surface), you use the same Zernio API key you're already using for posting and analytics.

This matters most for agencies and social media tools where the publish → analyze → boost loop is the core workflow. A post goes live through Zernio, performance data comes back through Zernio, and if it's worth promoting, the boost goes out through Zernio. One integration, one key, no extra TikTok developer approvals.

(Optional) Posting to multiple platforms at once

This is where it compounds. The same call that posts to TikTok can hit Instagram, YouTube, LinkedIn, or any of the other 11 platforms - just add them to the platforms array:

post = client.posts.create(
  content="Same content, four platforms, one call.",
  media_items=[
    {"type": "video", "url": "https://cdn.example.com/video.mp4"}
  ],
  platforms=[
    {"platform": "tiktok", "accountId": tiktok_id},
    {"platform": "instagram", "accountId": instagram_id},
    {"platform": "youtube", "accountId": youtube_id},
    {"platform": "linkedin", "accountId": linkedin_id}
  ],
  tiktok_settings={
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "allow_comment": True,
    "allow_duet": True,
    "allow_stitch": True,
    "content_preview_confirmed": True,
    "express_consent_given": True
  },
  publish_now=True
)

Without Zernio, each of those platforms is a separate integration project. With Zernio, it's one more entry in the array.

Full TikTok reference, like privacy levels, thumbnail settings, photo carousels, and error codes, visit docs.zernio.com/platforms/tiktok.

Stop building social integrations from scratch.

One API call to publish, schedule, and manage posts across 15+ platforms.

Direct TikTok API vs. unified API: which makes more sense?

For TikTok-only tools with a small team, direct integration is workable once you're through the approval process.

For anything multi-platform, the math changes fast. TikTok alone is 3-4 weeks to build correctly - OAuth, token refresh, chunked upload handling, rate limit tracking, error mapping, and keeping up with API changes. Multiply that by each platform you add.

Direct TikTok APIZernio
Platforms coveredTikTok only15 platforms
TikTok app approvalRequired (1-4 weeks)Not required
Token refreshYou build itHandled
Lines of code to publish~80-100~10
Post analytics (likes, views, shares)Separate scope + buildIncluded
Account analytics (followers, growth)Separate scope + buildIncluded
TikTok Ads APISeparate approval + buildIncluded
Cross-platform ads (Meta, LinkedIn, X...)Each is a separate projectIncluded
Pricing (100 accounts)Engineering cost + infra$318/mo
First accounts-2 free

For agencies or SaaS tools managing multiple client accounts, the cost comparison gets more dramatic. At 100 connected accounts, Zernio is $318/mo. Building and maintaining direct integrations for even 3-4 platforms takes a dedicated engineering team.

Connect TikTok and 14 other platforms in one API call — start free →

Key takeaways

  • TikTok's Content Posting API requires manual app approval (2-6 weeks). Zernio bypasses this entirely.
  • Access tokens expire every 24 hours. You must implement token refresh or use a wrapper that handles it.
  • Daily post limit is 25 videos per account. Rate limits at the app level are negotiated separately.
  • Video specs: MP4/MOV/WEBM/AVI, max 1 GB, 3 sec minimum, 9:16 recommended.
  • If you need analytics, ads, or multi-platform support, a unified API like Zernio is significantly cheaper than building each integration separately.

FAQ

Does the TikTok API support photo carousels?

Yes. TikTok's Content Posting API supports photo carousels of up to 35 images per post (JPEG, PNG, or WebP, max 20 MB each). Photos are auto-resized to 1080 x 1920 px. You can't mix photos and videos in a single post - it's either a carousel or a single video. Zernio's API supports both formats through the same createPost endpoint.

What TikTok analytics metrics are available through the API?

TikTok's public API exposes post-level metrics (likes, comments, shares, views) and account-level counters (follower count, following count, total likes, video count). Deep metrics, such as watch time, FYP impression share, per-video reach, and audience demographics are not available through any public TikTok API. TikTok's Research API covers some of these but is restricted to non-commercial academic use. Zernio surfaces everything TikTok makes publicly available, including follower gain/loss deltas derived from daily snapshots.

Can I edit or delete a TikTok post after it's published via API?

No. Editing captions and deleting posts aren't supported through TikTok's API. Once a post is live, any changes have to be made manually in the TikTok app. You can use drafts to have API control over created posts, like cancel a scheduled post or complete delete it with Zernio.

What's the difference between Direct Post and Creator's Draft?

Direct Post publishes the video immediately or at a scheduled time - no user action needed after the API call. Creator's Draft deposits the video into the user's TikTok inbox as a draft, where they can add sounds, effects, stickers, or captions before manually publishing. Use Direct Post for fully automated workflows. Use Creator's Draft when users need to apply TikTok's in-app creative tools to the video first.

Learn more about this topic with AI