Publish a video to TikTok
post_videoPublish a video to a TikTok account from a public URL, set privacy level and confirm action, then use the returned publish ID to check posting status.
Instructions
Publish a video straight to the account from a public URL. Returns a publish_id; poll get_post_status with it, because the call returns as soon as TikTok accepts the job, long before the post is live. While your app is unaudited every post lands private no matter which privacy_level you pass.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | The caption. Hashtags and @mentions work inline. Up to 2200 UTF-16 units. | |
| account | No | Which connected TikTok account to act as, by the name you gave it in TIKTOK_ACCOUNTS. Defaults to the first. Call list_accounts to see them. | |
| confirm | No | Must be true for this to run. A TikTok post is public the moment moderation clears it, and deleting it later does not pull it out of feeds that already have it. | |
| is_aigc | No | True if the video is AI-generated. Adds TikTok's AI-generated label to the description. | |
| video_url | Yes | Public URL of the video file. Its domain must be verified under URL Properties in your TikTok app, and TikTok has one hour to download it. | |
| disable_duet | No | ||
| privacy_level | Yes | Must be one of the values get_creator_info returns in privacy_level_options for this account. A private account cannot use PUBLIC_TO_EVERYONE, and passing it fails the call. | |
| disable_stitch | No | ||
| disable_comment | No | ||
| brand_content_toggle | No | True if this is a paid partnership promoting somebody else's business. Defaults false. | |
| brand_organic_toggle | No | True if this promotes the creator's own business. Defaults false. | |
| video_cover_timestamp_ms | No | Which frame to use as the cover, in milliseconds. Defaults to the first frame. |