TikTok Upload API
This section details how to upload videos and photos (carousels) to TikTok using the API.
Base URL
https://api.multi-upload-tool.com/api/v1
Authentication
All requests require an API Token in the header:
x-api-key: YOUR_API_TOKEN
Requirements
TikTok Video Requirements
- Supported Formats: MP4 (recommended), WebM, MOV
- Supported Codecs: H.264 (recommended), H.265, VP8
- Framerate: Minimum: 23 FPS, Maximum: 60 FPS
- Picture Size: Minimum: 360 pixels (height and width), Maximum: 4096 pixels (height and width)
- Duration: Maximum via API: 10 minutes. (Note: All TikTok creators can post 3-minute videos. Some creators have access to 5-minute or 10-minute videos. Users may trim videos in the TikTok app.)
- Size: Maximum: 4GB
TikTok Photo Requirements
While the API allows photo uploads to TikTok (e.g., for slideshows with auto_add_music), specific format requirements (resolution, aspect ratio, file size) are not detailed in the provided source.
- General Guidance: Only image formats: JPG, JPEG, or WEBP are compatible.
- Please refer to the official TikTok documentation for specific photo guidelines.
Upload Video
Upload a single video file to TikTok.
Endpoint
POST /upload
Content-Type
multipart/form-data
Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
async | boolean | No | Default true. If false, the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected TikTok account. |
video | File | Yes | The video file (MP4, WebM). |
title | string | Yes | The caption of the post. |
description | string | No | Additional description (will be appended to title for TikTok). |
scheduledDate | string | No | ISO 8601 date string to schedule the post (e.g., 2025-12-25T10:00:00Z). |
privacy_level | string | No | PUBLIC_TO_EVERYONE (default), MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY. |
disable_comment | boolean | No | Disable comments on the post. |
disable_duet | boolean | No | Disable Duet feature. |
disable_stitch | boolean | No | Disable Stitch feature. |
brand_content_toggle | boolean | No | Mark as branded content. |
brand_organic_toggle | boolean | No | Mark as organic branded content. |
is_aigc | boolean | No | Mark as AI-Generated Content (AIGC). |
video_cover_timestamp_ms | number | No | Timestamp (in ms) for the video cover image. |
post_mode | string | No | DIRECT_POST, DRAFT. |
Example Request
curl -X POST https://api.multi-upload-tool.com/api/v1/upload \
-H "x-api-key: YOUR_API_TOKEN" \
-F "accountId=123" \
-F "video=@/path/to/video.mp4" \
-F "title=My amazing video #tiktok" \
-F "privacy_level=PUBLIC_TO_EVERYONE" \
-F "is_aigc=false"Example Response
{
"success": true,
"message": "Upload queued successfully",
"data": {
"uploadId": 456,
"status": "pending",
"scheduledFor": null
}
}Scheduled post: If
scheduledDateis provided,statuswill be"scheduled"andscheduledForwill contain the ISO date.
Upload Photos (Carousel)
Upload multiple photos to create a TikTok carousel.
Endpoint
POST /upload
Content-Type
multipart/form-data
Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
async | boolean | No | Default true. If false, the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected TikTok account. |
photo | File[] | Yes | Array of image files. |
title | string | Yes | The caption of the post. |
description | string | No | Additional description. |
scheduledDate | string | No | ISO 8601 date string to schedule the post. |
privacy_level | string | No | PUBLIC_TO_EVERYONE (default), MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY. |
disable_comment | boolean | No | Disable comments on the post. |
auto_add_music | boolean | No | Automatically add music to the carousel. |
photo_cover_index | number | No | Index of the image to be used as cover (1-based). |
post_mode | string | No | DIRECT_POST, DRAFT. |
Example Request
curl -X POST https://api.multi-upload-tool.com/api/v1/upload \
-H "x-api-key: YOUR_API_TOKEN" \
-F "accountId=123" \
-F "photo=@/path/to/photo1.jpg" \
-F "photo=@/path/to/photo2.jpg" \
-F "title=My photo dump 📸" \
-F "auto_add_music=true"Example Response
{
"success": true,
"message": "Upload queued successfully",
"data": {
"uploadId": 457,
"status": "pending",
"jobId": "job_790"
}
}Check Upload Status
Check the status of a queued or completed upload.
Endpoint
GET /upload/:id
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | number | Yes | The uploadId returned from the upload endpoint. |
Example Request
curl -X GET https://api.multi-upload-tool.com/api/v1/upload/456 \
-H "x-api-key: YOUR_API_TOKEN"Example Response
{
"success": true,
"data": {
"id": 456,
"userId": 1,
"connectedAccountId": 123,
"platform": "tiktok",
"title": "My amazing video #tiktok",
"status": "completed",
"uploadedAt": "2023-10-27T10:00:00.000Z",
"metadata": "{\"videoId\":\"v123456\",\"shareUrl\":\"https://www.tiktok.com/@user/video/123456\"}",
"fileSize": "15000000"
}
}