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.
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:
TikTok does not support text-only posts via the Crosspostify API. The /post/text endpoint is Facebook-only.
/post/videoPost 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 /mediaand use the returnedmediaId titleis displayed as the video title on TikTokcaptionsupports hashtags (e.g.#fyp) and emojis- Set
is_aigc: trueif the video was generated or significantly edited by AI - All datetime values must be in UTC timezone (ISO 8601 format with
Zsuffix) - Omit
scheduledDateto post immediately (queued)
Request Body
mediaIdstringrequiredThe ID of the uploaded video file. Obtain this from POST /media.
scheduledDatestringoptionalSchedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.
postsarrayrequiredArray of post objects. Include one object per TikTok account you want to post to.
posts[].accountIdstringrequiredThe TikTok account ID. Retrieve from GET /social-accounts.
posts[].captionstringrequiredThe video caption. Supports hashtags and emojis. TikTok recommends keeping captions under 2,200 characters.
posts[].titlestringoptionalThe video title shown on TikTok. Recommended for discoverability.
posts[].is_aigcbooleanoptionalSet to true to label this video as AI-generated content per TikTok's policy. Default: false.
Response
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/imagePost a single photo to TikTok. TikTok displays single photos as a photo post in the feed.
TikTok Photo Notes
titleis used as the photo title on TikTokcaptionsupports 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
Zsuffix)
Request Body
mediaIdstringrequiredThe ID of the uploaded image file. Obtain this from POST /media.
scheduledDatestringoptionalSchedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.
postsarrayrequiredArray of post objects. Include one object per TikTok account.
posts[].accountIdstringrequiredThe TikTok account ID. Retrieve from GET /social-accounts.
posts[].captionstringrequiredThe photo caption. Supports hashtags and emojis.
posts[].titlestringoptionalThe photo title shown on TikTok.
Response
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/imagesPost 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 titleis 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
Zsuffix)
Request Body
mediaIdsarrayrequiredOrdered array of image media IDs (max 10 for TikTok). Images appear in this order in the slideshow.
scheduledDatestringoptionalSchedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.
postsarrayrequiredArray of post objects. Include one object per TikTok account.
posts[].accountIdstringrequiredThe TikTok account ID. Retrieve from GET /social-accounts.
posts[].captionstringrequiredThe slideshow caption. Supports hashtags and emojis.
posts[].titlestringoptionalThe slideshow title shown on TikTok.
Response
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: truein the post object to apply TikTok's AIGC label - Only applies to
POST /post/video— ignored for image and slideshow posts - Defaults to
falseif omitted - TikTok may independently apply AIGC labels based on their own detection
When to use is_aigc
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.