TikTok API Reference
Publish videos and photo carousels to TikTok with privacy and interaction controls.
Quick reference
| auth | OAuth 2.0 |
| text Limit | 2,200 characters |
| max Media | 35 photos OR 1 video |
| media Rule | Photos and video cannot be mixed |
| max Video Duration | 10 min |
| entity Selection | None |
| first Comment | Not supported (TikTok has no comment-creation API) |
Content types
Not supported — media is required
Up to 35 photos. JPEG and WebP only.
1 video per post. MP4 or WebM. Max 500 MB.
Up to 35 images (photo mode)
Not supported
Media requirements
Constraints enforced by TikTok's API. Requests that violate these limits will be rejected.
| Constraint | Value |
|---|---|
| Max image size | 10 MB |
| Max video size | 500 MB |
| Image formats | JPEG, WEBP |
| Video formats | MP4, WEBM |
| Max video duration | 10 min |
| Image aspect ratio | 0.56:1 to 1:1 |
| Min image dimensions | 360x360 px |
| Max media items | 35 |
| GIF support | No |
Platform settings
Pass these fields inside platformSettings.tiktok in the request body.
| Name | Type | Required | Description |
|---|---|---|---|
privacy | string | Required | Who can view the post. Required — posts are rejected rather than published with a guessed privacy level. The value must be enabled on the connected account.PUBLIC_TO_EVERYONEFOLLOWER_OF_CREATORMUTUAL_FOLLOW_FRIENDSSELF_ONLY |
postMode | string | Required | How the post is delivered. 'direct' publishes straight to the profile; 'inbox' sends it to the creator's TikTok app inbox to finish manually in TikTok. Required — there is no default; posts are rejected rather than routed with a guessed mode.directinbox |
allowComments | boolean | Optional | Whether viewers can comment on the post.Default: true |
allowDuet | boolean | Optional | Whether viewers can create duets (video only).Default: true |
allowStitch | boolean | Optional | Whether viewers can stitch the video.Default: true |
autoAddMusic | boolean | Optional | Automatically add trending music to photo/carousel posts.Default: false |
isAIGenerated | boolean | Optional | Disclose that the content is AI-generated.Default: false |
privacystringRequiredWho can view the post. Required — posts are rejected rather than published with a guessed privacy level. The value must be enabled on the connected account.
PUBLIC_TO_EVERYONEFOLLOWER_OF_CREATORMUTUAL_FOLLOW_FRIENDSSELF_ONLYpostModestringRequiredHow the post is delivered. 'direct' publishes straight to the profile; 'inbox' sends it to the creator's TikTok app inbox to finish manually in TikTok. Required — there is no default; posts are rejected rather than routed with a guessed mode.
directinboxallowCommentsbooleanOptionalWhether viewers can comment on the post.
Default: true
allowDuetbooleanOptionalWhether viewers can create duets (video only).
Default: true
allowStitchbooleanOptionalWhether viewers can stitch the video.
Default: true
autoAddMusicbooleanOptionalAutomatically add trending music to photo/carousel posts.
Default: false
isAIGeneratedbooleanOptionalDisclose that the content is AI-generated.
Default: false
Code examples
Basic post
curl -X POST https://schedulala.com/api/v1/posts \-H "Authorization: Bearer sk_live_YOUR_KEY" \-H "Content-Type: application/json" \-d '{"content": "Check this out! #fyp","platforms": [{ "platform": "tiktok", "accountId": "acc_tt" }],"mediaItems": [{ "type": "video", "url": "https://example.com/clip.mp4" }],"platformSettings": {"tiktok": {"privacy": "PUBLIC_TO_EVERYONE","postMode": "direct","allowComments": true}},"publishNow": true}'
Post with media
curl -X POST https://schedulala.com/api/v1/posts \-H "Authorization: Bearer sk_live_YOUR_KEY" \-H "Content-Type: application/json" \-d '{"content": "Photo carousel! #photography","platforms": [{ "platform": "tiktok", "accountId": "acc_tt" }],"mediaItems": [{ "type": "image", "url": "https://example.com/photo1.jpg" },{ "type": "image", "url": "https://example.com/photo2.jpg" },{ "type": "image", "url": "https://example.com/photo3.jpg" }],"platformSettings": {"tiktok": {"privacy": "PUBLIC_TO_EVERYONE","postMode": "direct","autoAddMusic": true}},"publishNow": true}'
Quirks & gotchas
35 photos OR 1 video per post — you cannot mix photos and video.
Only JPEG and WebP images — PNG is not supported.
Image aspect ratio: 9:16 to 1:1 (portrait-first platform).
Minimum image dimensions: 360x360 px.
GIFs are not supported.
Privacy options may be restricted by the creator's account settings.
Branded content cannot use SELF_ONLY privacy level.