Skip to main content
TikTok integration uses the TikTok Business API. Connect a TikTok Business account — personal creator accounts without Business access are not supported.

Connect

curl -X POST "https://backend.postsiva.com/unified/oauth/url" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: psk_live_YOUR_KEY" \
  -d '{"platform": ["tiktok"]}'
OAuth callback: /tiktok-business/oauth/callback. One TikTok Business account per workspace.

Post types

TypeEndpointPrimary use
VideoPOST /unified/post/videoShort-form video (main workflow)
ImagePOST /unified/post/imagePhoto posts
CarouselPOST /unified/post/carouselMulti-image photo posts
Text-only posts are not supported on TikTok through the unified API.

Video post (recommended)

curl -X POST "https://backend.postsiva.com/unified/post/video" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: psk_live_YOUR_KEY" \
  -d '{
    "platforms": ["tiktok"],
    "default_text": "Behind the scenes at our studio.",
    "video_id": "your-video-media-uuid",
    "tiktok": {
      "privacy_level": "PUBLIC_TO_EVERYONE",
      "disable_comment": false
    }
  }'

privacy_level options

ValueWho can view
PUBLIC_TO_EVERYONEDefault — public on TikTok
MUTUAL_FOLLOW_FRIENDSMutual followers only
FOLLOWER_OF_CREATORFollowers only
SELF_ONLYPrivate — only you
Set via tiktok.privacy_level in the post body.

Caption and title limits

FieldLimitApplies to
Caption (default_text / tiktok_text)2,200 charactersVideo and photo posts
Photo title (tiktok_title)90 UTF-16 code unitsImage and carousel posts only
{
  "platforms": ["tiktok"],
  "default_text": "Photo carousel caption.",
  "image_ids": ["id1", "id2"],
  "tiktok": {
    "tiktok_title": "Summer lookbook",
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "auto_add_music": true
  }
}

Additional TikTok options

FieldTypeDescription
disable_commentbooleanDisable comments
auto_add_musicbooleanLet TikTok add music to photo posts
brand_content_togglebooleanMark as branded content
brand_organic_togglebooleanBrand organic disclosure
cover_indexintegerCover image index for multi-image (0-based)
video_cover_timestamp_msintegerFrame timestamp for video cover

Video focus

TikTok is video-first. Recommended workflow:
  1. Upload video via POST /media/upload (or chunked upload for files ≥ 10 MB)
  2. Copy returned media_id
  3. Post with video_id and caption
  4. Optionally schedule with scheduled_time
Postsiva normalizes images to 1080×1920 (9:16) for TikTok when auto-fix is applied.

Multi-platform video

{
  "platforms": ["tiktok", "instagram", "youtube"],
  "default_text": "Product demo.",
  "video_id": "shared-video-uuid",
  "youtube": {
    "youtube_title": "Product Demo — Full Walkthrough",
    "youtube_description": "See our new feature in action."
  }
}

Common errors

ErrorCauseFix
NOT_CONNECTEDTikTok Business not linkedReconnect via OAuth
422 captionOver 2,200 charactersShorten caption
422 photo titleOver 90 UTF-16 unitsShorten tiktok_title
Invalid privacyUnknown privacy_level valueUse enum values above