Docs
Docs/Platforms/TikTok

TikTok

Publishing to TikTok via the Octopost API

TikTok

TikTok is a video-only platform -- no text-only or image-only posts. Give Octopost a publicly accessible video URL and your caption, and Octopost handles the upload, async processing, and status polling automatically -- you just send us your content.

Content Limits

FieldLimitNotes
Caption2,200 charactersFirst ~150 characters visible in the feed
HashtagsNo separate fieldIncluded in caption, counts toward the 2,200 limit
Video duration3 seconds -- 10 minutesUp to 60 minutes with TikTok approval
Video file size4 GB max
Recommended formatMP4, H.264, 1080x1920 (9:16)WebM also supported

Good to Know

  • Video is non-negotiable. If you send a post to TikTok without a video URL, Octopost will reject it immediately with a clear error. There is no workaround.
  • Only the first ~150 characters of your caption show in the feed. Put your hook up front. Hashtags can go at the end.
  • You cannot attach TikTok music library tracks via the API. Any audio must be baked into your video file before upload.
  • No editing after publish. Once a video is live on TikTok, it cannot be modified through the API.
  • The TikTok account must be a Creator or Business account. Standard personal accounts cannot publish through the API. This is a TikTok requirement, not an Octopost limitation.

Platform-Specific Features

Privacy Levels

Control who can see your video by setting privacy_level in platform_options:

LevelDescription
PUBLIC_TO_EVERYONEVisible to all TikTok users (default)
MUTUAL_FOLLOW_FRIENDSVisible only to mutual followers
SELF_ONLYVisible only to the creator

Interaction Controls

You can disable specific interaction types per video:

{
  "platform_options": {
    "tiktok": {
      "privacy_level": "PUBLIC_TO_EVERYONE",
      "disable_comment": false,
      "disable_duet": false,
      "disable_stitch": false
    }
  }
}

Content Disclosure

TikTok requires content disclosure for branded content or paid partnerships. Set this at publish time through platform_options if applicable.

Rate Limits

Octopost tracks TikTok's rate limits for you. TikTok does not publish specific public rate limits for the Content Posting API, but Octopost monitors responses and will queue or report rate limit errors if they occur.

Things Octopost Handles for You

You do not need to worry about any of this, but in case you are curious:

  • OAuth 2.0 authentication. Octopost manages the full OAuth flow, including the user.info.basic, video.publish, and video.upload scopes. Token refresh is automatic.
  • Upload initialization. Octopost uses TikTok's PULL_FROM_URL method. You provide a video URL, Octopost sends it to TikTok's Content Posting API, and TikTok pulls the video from your URL.
  • Async status polling. TikTok processes videos asynchronously -- your video is not immediately live. Octopost polls the status endpoint through the full lifecycle: PROCESSING_UPLOAD to PROCESSING_DOWNLOAD to PUBLISH_COMPLETE. Polling runs for up to 5 minutes before reporting a timeout.
  • Error reporting. If TikTok rejects the video (inaccessible URL, invalid format, processing failure), Octopost translates the error into a clear message in the publish result.
  • App-level approval. TikTok's Content Posting API requires app-level approval from TikTok. Octopost already has this approval -- you do not need to apply separately.
  • Video URL accessibility. Your video URL must be publicly accessible and the server should support range requests for large files. If the URL is not reachable, TikTok will fail during processing and Octopost will report the error.

Example

{
  "content": "Check out this tutorial! #coding #webdev",
  "platforms": ["tiktok"],
  "media": {
    "video": "https://example.com/tutorial.mp4"
  },
  "platform_options": {
    "tiktok": {
      "privacy_level": "PUBLIC_TO_EVERYONE"
    }
  }
}

That's it. Octopost takes care of the rest.