Overview

Schedule and automate TikTok videos and photo carousels with privacy levels, branded content disclosure, and AI-generated labels.

Schedule and automate TikTok videos and photo carousels with Direct Post. Privacy levels, interaction toggles, branded content disclosure, AI-generated labels, account stats, and per-post analytics are all included.

Quick Reference

PropertyValue
Video caption2,200 characters
Photo title90 characters
Photo description4,000 characters
Photos per carousel2 to 35 (image kind for a single photo)
Video formatsMP4, MOV, WebM
Video max size4 GB
Video durationAccount-specific, up to 10 minutes
Photo formatsJPEG, WebP
Post typesVideo, Photo, Photo carousel
SchedulingYes, with IANA timezone
Editing published postsNo
Comments through APINo
Remote deleteNo
AnalyticsYes (views, likes, comments, shares)

Before You Start

TikTok only pulls media from hosts verified in the developer app. Onepostly serves uploads from its own CDN, so every TikTok post must use URLs returned by the Media API. Any other host is rejected with INVALID_MEDIA.

Additional requirements:

  • privacyLevel is required on every destination and must match one of the creator's allowed values
  • Media is required. There are no text-only posts
  • Photo carousels use text as a 90-character title. Pass description for the full 4,000-character caption
  • Private posts never get a public video id, so their analytics report unavailable
  • TikTok enforces a strict daily posting limit for posts created via the API. It is separate from the native app and account-specific. See Direct posting at capacity and Posting Velocity Limits
  • Content moderation is stricter via the API than in the native app. Flagged posts fail with SPAM_RISK

Connect

Open Dashboard → Connections and connect TikTok.
Complete the consent screen. Onepostly requests all scopes below in a single OAuth flow.
Grab the account id from the connections list:
const { connections: list } = await connections.listConnections();
const tt = list.find((c) => c.platform === "tiktok");
// tt.id is your accountId

If an action fails with PERMISSION_DENIED, the connection is missing the scope. Reconnect TikTok once to grant it.

OAuth Scopes

ScopeWhat it enables
video.publishDirect-post publishing of videos and photo posts
video.listRead the account's public videos for media lists and analytics
user.info.basicAccount identity (open id, display name, avatar)
user.info.profileUsername and profile details
user.info.statsFollower, likes, and video counts

Token Lifetime

TokenLifetimeBehavior
Access token~24 hoursRefreshed automatically by Onepostly
Refresh token~365 daysAfter expiry, a password change, or revocation, reconnect the account

Capabilities

ActionSupportedNotes
Video postYesMP4, MOV, WebM, up to 4 GB
Photo carouselYes2 to 35 photos, JPEG / WebP
Single photoYesJPEG / WebP
Text-only postNoNot a TikTok API capability
StoriesNoNot a TikTok API capability
Inbox draftNoDirect Post only
ScheduleYesCancel any time before it publishes
Comments (read / reply)NoNot available through TikTok's API
Remote deleteNoNot available through TikTok's API
AnalyticsYesViews, likes, comments, shares

What You Can't Do

These features are not available through TikTok's API:

  • Text-only posts (media is required)
  • Threads, quotes, or reply chains
  • Editing a published video or photo post
  • Deleting a published post
  • Stories
  • Reading or replying to comments

See Also