PostEverywhere TikTok API Guide
PostEverywhere API reference for TikTok: privacy levels, duet and stitch settings, cover thumbnails and request examples for video posts.
Publish videos to TikTok with full control over privacy settings, interaction permissions, and cover thumbnails. PostEverywhere uses TikTok's Content Posting API to handle video uploads and publishing on your behalf. For a general overview of all supported platforms, see the Introduction.
Connect your TikTok account to PostEverywhere
Connect TikTok from the dashboard with OAuth, or headlessly from code: mint a connect link and hand it to the account owner - no dashboard session needed. Both flows are covered in Connecting Accounts.
What you can post to TikTok
| Content Type | Media Required | Description |
|---|---|---|
| Video | Video (MP4) | Standard TikTok video. |
| Photo carousel | Images (1-35) | Photo Mode post. Images only; a post cannot mix video and images. |
Every TikTok post needs media: one video, or 1-35 images for a Photo Mode carousel. Text-only posts are not supported.
TikTok-specific options in the API
Use the platform_content.tiktok object to configure privacy and interaction settings:
{
"platform_content": {
"tiktok": {
"content": "TikTok caption (up to 2,200 characters on a video)",
"settings": {
"privacyLevel": "PUBLIC_TO_EVERYONE",
"disableComment": false,
"disableDuet": false,
"disableStitch": false,
"videoCoverTimestamp": 1000
}
}
}
}
Settings Reference
| Setting | Type | Default | Description |
|---|---|---|---|
content |
string | N/A | Override the default caption. A video caption can be up to 2,200 characters; a photo post description up to 4,000. Longer is refused with 400 content_too_long. |
settings.title |
string | N/A | Photo posts: the post title, up to 90 characters (longer is refused with 400 content_too_long). Videos: TikTok has one caption and no separate title, so the caption is used and title only applies when there is no caption. If both are set, the post carries a tiktok_title_not_used warning. |
settings.privacyLevel |
string | "PUBLIC_TO_EVERYONE" |
Who can view the video. See values below. privacy_level is also accepted, as are disable_comment, disable_duet and disable_stitch below. |
settings.disableComment |
boolean | false |
Set true to turn off comments on the video. |
settings.disableDuet |
boolean | false |
Set true to stop other users creating Duets with this video. |
settings.disableStitch |
boolean | false |
Set true to stop other users Stitching this video. |
settings.videoCoverTimestamp |
number | 0 |
Timestamp in milliseconds for the cover frame; 0 is the first frame. TikTok takes a frame of the video as the cover, not a custom cover image. Videos only. |
settings.photoCoverIndex |
number | 0 |
Photo posts only: which image (0-based) is the cover. |
settings.autoAddMusic |
boolean | true |
Photo posts only: let TikTok add background music. Set false to post without it. |
settings.isAIGC |
boolean | false |
Set true to add TikTok's AI-generated content label. |
settings.commercialContentEnabled |
boolean | false |
Set true when the post promotes a brand, product or service. You must then set brandOrganicToggle, brandContentToggle or both. |
settings.brandOrganicToggle |
boolean | false |
"Your brand": the post promotes yourself or your own business. TikTok labels it "Promotional content". |
settings.brandContentToggle |
boolean | false |
"Branded content": the post promotes a third party. TikTok labels it "Paid partnership". Cannot be used with SELF_ONLY privacy. |
Privacy Levels
| Value | Description |
|---|---|
PUBLIC_TO_EVERYONE |
Visible to all TikTok users. |
MUTUAL_FOLLOW_FRIENDS |
Visible only to mutual followers (friends). |
FOLLOWER_OF_CREATOR |
Visible only to your followers. |
SELF_ONLY |
Only visible to you. Useful for drafts or testing. |
Commercial Content Disclosure
TikTok requires a disclosure when a post promotes a brand, product or service. Set commercialContentEnabled: true and at least one of brandOrganicToggle (your own brand) or brandContentToggle (a third party). Turning on commercialContentEnabled with neither toggle fails with "Commercial content disclosure incomplete", and branded content (brandContentToggle) with SELF_ONLY privacy fails because TikTok does not allow branded content to be private.
{
"platform_content": {
"tiktok": {
"settings": {
"privacyLevel": "PUBLIC_TO_EVERYONE",
"commercialContentEnabled": true,
"brandContentToggle": true,
"isAIGC": false
}
}
}
}
Publish to TikTok: a working request
Schedule a Public TikTok Video
curl -X POST https://app.posteverywhere.ai/api/v1/posts \
-H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Quick tip for your morning routine!",
"account_ids": [2285],
"media_ids": ["c3d4e5f6-a7b8-9012-cdef-123456789012"],
"scheduled_for": "2026-04-15T17:00:00Z",
"timezone": "America/Los_Angeles",
"platform_content": {
"tiktok": {
"content": "Morning routine hack you NEED to try #morningroutine #lifehack #tips",
"settings": {
"privacyLevel": "PUBLIC_TO_EVERYONE",
"disableComment": false,
"disableDuet": false,
"disableStitch": true,
"videoCoverTimestamp": 2500
}
}
}
}'
Schedule a Private Test Video
curl -X POST https://app.posteverywhere.ai/api/v1/posts \
-H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Testing new content format",
"account_ids": [2285],
"media_ids": ["d4e5f6a7-b8c9-0123-def0-234567890123"],
"platform_content": {
"tiktok": {
"settings": {
"privacyLevel": "SELF_ONLY",
"disableComment": true,
"disableDuet": true,
"disableStitch": true
}
}
}
}'
TikTok limits: characters, media and video
| Requirement | Limit |
|---|---|
| Caption length | 2,200 characters on a video; 4,000 for a photo post description. Longer is refused with 400 content_too_long. |
| Photo post title | 90 characters |
| Video format | MP4 (H.264) |
| Video max file size | 4 GB |
| Video duration | 3 seconds - 10 minutes |
| Video resolution | Minimum 720p recommended |
| Recommended aspect ratio | 9:16 (vertical, 1080x1920) |
| Cover | A frame of the video, picked with videoCoverTimestamp in milliseconds (no custom cover image) |
Getting better results on TikTok
- Set
videoCoverTimestampto a visually compelling frame. The cover thumbnail is the first thing users see when scrolling. Pick a frame that teases the content; the default is0, the first frame. - Use
SELF_ONLYfor testing. Schedule a private video first to verify the upload looks correct on TikTok before changing the privacy level and reposting publicly. - Lead with the hook. Video captions can run to 2,200 characters, but only the first line shows before "more", so put your hook in the first few words and use trending hashtags for discoverability.
- Put your words in the caption, not
settings.title, on videos. A TikTok video has one caption. Atitleis used only when there is no caption; otherwise it is not used and the post shows a warning saying so.
Analytics TikTok returns
TikTok reports views, likes, comments and shares per post. They appear on
GET /v1/analytics/summary and on the analytics page in the dashboard, refreshed
periodically after publishing (engagement takes time to accrue, so a post checked
minutes after going live will legitimately read zero).
Accounts connected before Jul 3 2026 need one reconnect
Per-post analytics needs TikTok's
video.listscope, which we were granted on Jul 3 2026. Accounts connected before that date hold tokens without it and will keep returning no metrics until reconnected once from Settings > Accounts. Reconnecting does not affect scheduled posts.
Private and self-only posts have no analytics: TikTok withholds the public post id for them, and its analytics API cannot see them either.
Common questions about posting to TikTok
Can I control who can Duet or Stitch my TikTok video?
Yes. Set disableDuet and disableStitch to true in the platform_content.tiktok.settings object. Both default to false, so Duets and Stitches are allowed unless you turn them off. disableComment works the same way for comments.
What privacy levels are available for TikTok posts?
TikTok supports four privacy levels: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS (mutual followers only), FOLLOWER_OF_CREATOR (your followers only), and SELF_ONLY (only you). Set the privacyLevel field when creating a post.
How do I choose the cover thumbnail for my TikTok video?
Use the videoCoverTimestamp setting, specified in milliseconds. For example, 2500 selects the frame at 2.5 seconds. If omitted, the first frame (0) is used. TikTok's API does not accept a custom cover image for videos, so the cover is always a frame from the video itself.
What video format does TikTok require?
TikTok requires MP4 (H.264) video files. Videos can be 3 seconds to 10 minutes long, up to 4 GB. The recommended aspect ratio is 9:16 vertical (1080x1920) with a minimum resolution of 720p. Upload your video before creating the post.
Can I post a photo carousel to TikTok via the API?
Yes. Attach 1-35 image media_ids to your post and TikTok publishes a Photo Mode carousel. Video and photo carousels are mutually exclusive: you cannot mix them in the same post. coverPhotoUrl and videoCoverTimestamp are ignored on photo carousels; the first image is the cover unless you set settings.photoCoverIndex to choose another. Max 35 images per carousel.
Can I cross-post a TikTok video to X (Twitter) in the same call?
Yes, but watch the duration limits. TikTok accepts videos up to 10 minutes, but X caps at 2 minutes 20 seconds. If you cross-post a longer video, the X destination will fail with a duration error while TikTok still publishes. To avoid partial publishes, keep cross-posted videos under 2:20, or schedule them as separate posts.
Can I edit a TikTok post after it's published?
No. PATCH /v1/posts/:id only accepts posts in scheduled or draft status. After TikTok accepts the upload, the post status becomes published and our API rejects edit attempts with 400 invalid_post_status. TikTok's Content Posting API does not let third-party apps edit a live post's caption, privacy, or duet/stitch settings: edit on TikTok directly or delete and recreate.
Other platforms you can publish to
- Instagram -- Reels share the same vertical video format (9:16)
- YouTube -- YouTube Shorts are a similar short-form vertical video format
- Facebook -- Facebook Reels also use 9:16 vertical video
Related TikTok and API reference pages
Related: TikTok media requirements · testing with SELF_ONLY posts · TikTok analytics · posting to TikTok via API · what the API covers