# PostEverywhere TikTok API Guide > TikTok posting API: publish and schedule videos via REST. Privacy levels, duets and stitches, cover thumbnails - no 2-6 week audit. **Source:** https://posteverywhere.ai/docs/platforms/tiktok **Section:** Platforms **API reference:** https://posteverywhere.ai/docs/api/reference --- 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](/docs/api/init-media-upload) and publishing on your behalf. For a general overview of all supported platforms, see the [Introduction](/docs). ## Connect your TikTok account to PostEverywhere Connect TikTok from the dashboard with OAuth, or headlessly from code: mint a [connect link](/docs/api/create-connect-link) and hand it to the account owner - no dashboard session needed. Both flows are covered in [Connecting Accounts](/docs/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: ```json { "platform_content": { "tiktok": { "content": "TikTok caption (up to 4,000 characters)", "settings": { "privacyLevel": "PUBLIC_TO_EVERYONE", "allowComments": true, "allowDuet": true, "allowStitch": true, "videoCoverTimestamp": 1000 } } } } ``` ### Settings Reference | Setting | Type | Default | Description | |---------|------|---------|-------------| | `content` | string | N/A | Override the default caption. Captions can be up to 4,000 characters; photo posts also take a `settings.title` of up to 90 characters. | | `settings.privacyLevel` | string | `"PUBLIC_TO_EVERYONE"` | Who can view the video. See values 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. Ignored when a cover photo is set. | ### 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. | ## Publish to TikTok: a working request ### Schedule a Public TikTok Video ```bash 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", "allowComments": true, "allowDuet": true, "allowStitch": false, "videoCoverTimestamp": 2500 } } } }' ``` ### Schedule a Private Test Video ```bash 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", "allowComments": false, "allowDuet": false, "allowStitch": false } } } }' ``` ## TikTok limits: characters, media and video | Requirement | Limit | |-------------|-------| | Caption length | 4,000 characters (photo-post title: 90) | | Video format | MP4 (H.264) | | Video max file size | 500 MB | | Video duration | 3 seconds - 10 minutes | | Video resolution | Minimum 720p recommended | | Recommended aspect ratio | 9:16 (vertical, 1080x1920) | | Cover timestamp | Specified in milliseconds | ## Getting better results on TikTok - **Set `videoCoverTimestamp` to a visually compelling frame.** The cover thumbnail is the first thing users see when scrolling. Pick a frame that teases the content; the default is `0`, the first frame. - **Use `SELF_ONLY` for 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.** Captions can run to 4,000 characters, but only the first line shows before "more", so put your hook in the first few words and use trending hashtags for discoverability. ## 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.list` scope, 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 `allowDuet` and `allowStitch` to `true` or `false` in the `platform_content.tiktok.settings` object. Both default to `true`. You can disable them individually to prevent other users from creating Duets or Stitches with your content. ### 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](/docs/api/create-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. ### What video format does TikTok require? TikTok requires MP4 (H.264) video files. Videos can be 3 seconds to 10 minutes long, up to 500 MB. The recommended aspect ratio is 9:16 vertical (1080x1920) with a minimum resolution of 720p. [Upload your video](/docs/api/init-media-upload) 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](/docs/platforms/instagram)** -- Reels share the same vertical video format (9:16) - **[YouTube](/docs/platforms/youtube)** -- YouTube Shorts are a similar short-form vertical video format - **[Facebook](/docs/platforms/facebook)** -- Facebook Reels also use 9:16 vertical video ## Related TikTok and API reference pages - [API Reference -- Create Post](/docs/api/create-post) - [Upload Media](/docs/api/init-media-upload) - [Quick Start Guide](/docs/quick-start) - [TikTok Scheduler on PostEverywhere](https://posteverywhere.ai/tiktok-scheduler) **Related:** [TikTok media requirements](/docs/media-requirements) · [testing with SELF_ONLY posts](/docs/testing) · [TikTok analytics](/docs/analytics-summary) · [posting to TikTok via API](/blog/post-to-tiktok-api) · [what the API covers](/social-media-api)