TikTok API

Use the Crosspostify API to post videos, photos, and slideshows directly to TikTok — with full support for scheduling, AI-generated content labeling, and multi-account publishing.

Post Types
Video · Photo · Slideshow
Max Slideshow Images
10 images
AIGC Labeling
Supported (video)

TikTok is one of the most widely used short-form video platforms. With the Crosspostify TikTok API integration, you can automate posting workflows, schedule content in advance, and publish across multiple TikTok accounts simultaneously — all via a single REST API call.

This page covers everything specific to TikTok when using the Crosspostify API. For general authentication, rate limits, and error handling, see the full API Reference.

TikTok-Specific Parameters

When targeting a TikTok account in your posts[] array, the following parameters are relevant. Parameters not listed here are either ignored or not applicable to TikTok.

accountId✓ AppliesRequired. Your TikTok account ID from /social-accounts.
caption✓ AppliesRequired. TikTok caption. Supports hashtags and emojis.
title✓ AppliesOptional. Used as the video/photo title on TikTok.
is_aigc✓ AppliesOptional. Marks the post as AI-generated content. Video only.
boardId✗ IgnoredPinterest only — ignored for TikTok.
link✗ IgnoredPinterest only — ignored for TikTok.
facebookFirstComment✗ IgnoredFacebook only — ignored for TikTok.
textFormatPresetId✗ IgnoredFacebook only — ignored for TikTok.

Supported Endpoints

TikTok supports the following Crosspostify API endpoints:

Text-only posts not supported

TikTok does not support text-only posts via the Crosspostify API. The /post/text endpoint is Facebook-only.

POST/post/video

Post a video to TikTok. This is the primary post type for TikTok and supports all TikTok-specific options including AIGC labeling and scheduling.

TikTok Video Notes

  • Upload your video first via POST /media and use the returned mediaId
  • title is displayed as the video title on TikTok
  • caption supports hashtags (e.g. #fyp) and emojis
  • Set is_aigc: true if the video was generated or significantly edited by AI
  • All datetime values must be in UTC timezone (ISO 8601 format with Z suffix)
  • Omit scheduledDate to post immediately (queued)

Request Body

mediaIdstringrequired

The ID of the uploaded video file. Obtain this from POST /media.

scheduledDatestringoptional

Schedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.

postsarrayrequired

Array of post objects. Include one object per TikTok account you want to post to.

posts[].accountIdstringrequired

The TikTok account ID. Retrieve from GET /social-accounts.

posts[].captionstringrequired

The video caption. Supports hashtags and emojis. TikTok recommends keeping captions under 2,200 characters.

posts[].titlestringoptional

The video title shown on TikTok. Recommended for discoverability.

posts[].is_aigcbooleanoptional

Set to true to label this video as AI-generated content per TikTok's policy. Default: false.

Response

{ "success": true, "data": { "postId": "post_ghi789", "status": "PROCESSING", "scheduledDate": "2025-06-01T14:00:00Z", "videoDuration": 45, "accounts": [ { "accountId": "acc_tiktok_789", "platform": "tiktok", "status": "PROCESSING" } ] } }

Code Example

curl -X POST "https://v1.api.crosspostify.com/post/video" \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "mediaId": "vid_12345",
    "scheduledDate": "2025-06-01T14:00:00Z",
    "posts": [
      {
        "accountId": "acc_tiktok_789",
        "caption": "My latest TikTok video 🎬 #fyp #viral",
        "title": "Behind the Scenes",
        "is_aigc": false
      }
    ]
  }'
POST/post/image

Post a single photo to TikTok. TikTok displays single photos as a photo post in the feed.

TikTok Photo Notes

  • title is used as the photo title on TikTok
  • caption supports hashtags and emojis
  • Recommended image aspect ratio: 9:16 (vertical) for best feed presentation
  • All datetime values must be in UTC timezone (ISO 8601 format with Z suffix)

Request Body

mediaIdstringrequired

The ID of the uploaded image file. Obtain this from POST /media.

scheduledDatestringoptional

Schedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.

postsarrayrequired

Array of post objects. Include one object per TikTok account.

posts[].accountIdstringrequired

The TikTok account ID. Retrieve from GET /social-accounts.

posts[].captionstringrequired

The photo caption. Supports hashtags and emojis.

posts[].titlestringoptional

The photo title shown on TikTok.

Response

{ "success": true, "data": { "postId": "post_abc123", "status": "SCHEDULED", "scheduledDate": "2025-06-01T14:00:00Z", "accounts": [ { "accountId": "acc_tiktok_789", "platform": "tiktok", "status": "SCHEDULED" } ] } }

Code Example

curl -X POST "https://v1.api.crosspostify.com/post/image" \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "mediaId": "img_12345",
    "scheduledDate": "2025-06-01T14:00:00Z",
    "posts": [
      {
        "accountId": "acc_tiktok_789",
        "caption": "Check out this photo! 📸 #tiktok",
        "title": "My Photo Post"
      }
    ]
  }'
POST/post/images

Post a photo slideshow to TikTok. TikTok renders multiple images as a swipeable carousel in the feed — great for product showcases, tutorials, or storytelling.

TikTok Slideshow Notes

  • Maximum 10 images per slideshow post
  • Images are displayed in the order provided in mediaIds
  • title is used as the slideshow title on TikTok
  • Recommended image aspect ratio: 9:16 (vertical) for best presentation
  • All images should have a consistent aspect ratio for best results
  • All datetime values must be in UTC timezone (ISO 8601 format with Z suffix)

Request Body

mediaIdsarrayrequired

Ordered array of image media IDs (max 10 for TikTok). Images appear in this order in the slideshow.

scheduledDatestringoptional

Schedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.

postsarrayrequired

Array of post objects. Include one object per TikTok account.

posts[].accountIdstringrequired

The TikTok account ID. Retrieve from GET /social-accounts.

posts[].captionstringrequired

The slideshow caption. Supports hashtags and emojis.

posts[].titlestringoptional

The slideshow title shown on TikTok.

Response

{ "success": true, "data": { "postId": "post_def456", "status": "SCHEDULED", "scheduledDate": "2025-06-01T14:00:00Z", "mediaCount": 4, "accounts": [ { "accountId": "acc_tiktok_789", "platform": "tiktok", "status": "SCHEDULED" } ] } }

Code Example

curl -X POST "https://v1.api.crosspostify.com/post/images" \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "mediaIds": ["img_001", "img_002", "img_003", "img_004"],
    "scheduledDate": "2025-06-01T14:00:00Z",
    "posts": [
      {
        "accountId": "acc_tiktok_789",
        "caption": "Swipe through our collection 👀 #tiktok #slideshow",
        "title": "Product Collection"
      }
    ]
  }'

Content Guidelines

TikTok enforces its own content policies on all posts. Content that violates TikTok's Community Guidelines may be rejected or removed after publishing. The Crosspostify API will return an error if TikTok rejects the post at submission time.

Video Requirements

  • Format: MP4 or MOV recommended
  • Max file size: 100MB via Crosspostify
  • Aspect ratio: 9:16 recommended (vertical)
  • Min resolution: 720p recommended

Image Requirements

  • Format: JPG or PNG recommended
  • Max file size: 20MB via Crosspostify
  • Aspect ratio: 9:16 recommended (vertical)
  • Min resolution: 720×1280px recommended

Caption Best Practices

  • Max 2,200 characters
  • Use relevant hashtags for discoverability
  • Emojis are fully supported
  • Avoid excessive hashtag stuffing

Scheduling

  • Minimum scheduling lead time: ~10 minutes
  • All times must be in UTC (ISO 8601 + Z)
  • Omit scheduledDate to post immediately
  • Max scheduling window: 30 days ahead

AI-Generated Content (AIGC)

TikTok requires creators to label content that is realistically altered or generated by AI — such as AI-generated faces, voices, or scenes. The Crosspostify API exposes this via the is_aigc parameter on video posts.

How it works

  • Set is_aigc: true in the post object to apply TikTok's AIGC label
  • Only applies to POST /post/video — ignored for image and slideshow posts
  • Defaults to false if omitted
  • TikTok may independently apply AIGC labels based on their own detection

When to use is_aigc

AI-generated video (e.g. Sora, Runway)is_aigc: true
AI voice-over or AI-cloned voiceis_aigc: true
AI-generated face or deepfake-style contentis_aigc: true
Standard video with AI-assisted editing (color grading, captions)is_aigc: false
Organic video with no AI involvementis_aigc: false
TikTok policy compliance

Failing to label AI-generated content when required may result in post removal or account penalties per TikTok's policies. When in doubt, set is_aigc: true.