Postato Docs
GuidesPlatforms

TikTok

Video requirements, cover images, and privacy settings.

TikTok

Posting uses the TikTok for Developers Content Posting API. OAuth scopes: video.upload, user.info.basic. Accounts must accept TikTok's Content Posting API terms during connection.

Post types

postTypeWhat it is
videoStandard video post
photoMulti-photo carousel (new TikTok format)

Live streams and duets can't be created via API.

Video specs

PropertyRequirement
FormatMP4, MOV, MPEG
CodecH.264 (AVC), AAC audio
Max file size4 GB
Max duration10 minutes
Aspect ratio9:16 strongly preferred (1:1 and 16:9 accepted but auto-cropped)
Resolution720p minimum; 1080p recommended
Frame rate23 – 60 fps

Videos outside these specs are rejected at upload. TikTok doesn't transcode.

Payload

{
  "platform": "tiktok",
  "accountId": "acc_01H...",
  "status": "publish",
  "postType": "video",
  "content": "Behind-the-scenes of our launch day.",
  "media": [{ "id": "med_01H...video" }],
  "options": {
    "privacy": "public",
    "allowComments": true,
    "allowDuet": true,
    "allowStitch": true
  }
}

Caption limit: 2,200 characters. Hashtags count toward that.

Privacy settings

options.privacy:

ValueWho sees it
publicEveryone
followersOnlyOnly your followers
privateOnly you (effectively a draft on TikTok's side)

Interactions

  • allowComments (default true)
  • allowDuet (default true)
  • allowStitch (default true)

Disable per-post if brand safety needs it.

Cover image

TikTok auto-generates a cover from a frame of the video. Custom covers are NOT supported via the public API. If it matters, generate the thumbnail yourself and burn it into the first frame of the video before uploading.

Music attribution

API uploads use the original audio from the video. You cannot programmatically attach a TikTok-licensed music track (that's app-only). If you need background music, mix it into the video file before uploading.

Photo posts

postType: "photo" with 2–35 images:

{
  "platform": "tiktok",
  "postType": "photo",
  "content": "Summer photo dump.",
  "media": [
    { "id": "med_01H...1" },
    { "id": "med_01H...2" },
    { "id": "med_01H...3" }
  ]
}

Images: JPEG/PNG, max 20 MB each. Aspect ratios: 9:16, 1:1, or 16:9 (TikTok crops mismatched ratios).

Scheduling

TikTok's API does NOT support server-side scheduling. Postato workers handle this for you: we hold scheduled posts and fire them at scheduledAt. The actual upload to TikTok happens at fire time.

Gotchas

  • "Draft" status: TikTok's API includes a "draft on device" concept that requires the end user to open the TikTok app and confirm publishing. Postato's status: "draft" does NOT trigger this; it's Postato-side only. If you need the "review in app" flow, you'd currently have to build it client-side.
  • Audit mode for unaudited apps: apps in TikTok's "unaudited" state can only post as private to the connected user. Get audited before going to production.
  • Video processing time: after upload, TikTok processes the video for 1–5 minutes. The post doesn't appear in feeds until processing completes. post.published fires at API success, not feed availability.
  • Duplicate detection: TikTok's de-dup is aggressive. Re-uploading the same file (even slightly modified) may be flagged as spam. Vary the content across posts.

On this page