Skip to Content

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

  • Formats: JPG, JPEG, WEBP.
  • Aspect Ratio: 9:16 required. Images that don’t match this ratio are automatically padded/resized to 1080x1920 pixels.
  • Max Images: Up to 35 images per carousel.

Upload Video

Upload a single video file to TikTok.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion. Passed as a query string value.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected TikTok account.
videoFileYesThe video file (MP4, WebM).
titlestringYesThe caption of the post.
descriptionstringNoAdditional description (will be appended to title for TikTok).
schedule_datestringNoISO 8601 date string to schedule the post (e.g., 2025-12-25T10:00:00Z). Must be in the future and within 6 months.
privacy_levelstringNoPUBLIC_TO_EVERYONE (default), MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY. If the requested level is not available for the creator, falls back to SELF_ONLY.
disable_commentboolean | stringNoDisable comments on the post. Accepts true/false or "true"/"false".
disable_duetboolean | stringNoDisable Duet feature.
disable_stitchboolean | stringNoDisable Stitch feature.
brand_content_toggleboolean | stringNoMark as branded content.
brand_organic_toggleboolean | stringNoMark as organic branded content.
is_aigcboolean | stringNoMark as AI-Generated Content (AIGC).
video_cover_timestamp_msnumberNoTimestamp (in ms) for the video cover image.
post_modestringNoDIRECT_POST (default), 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 schedule_date is provided, status will be "scheduled" and scheduledFor will contain the ISO date.


Upload multiple photos to create a TikTok carousel.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected TikTok account.
photoFile[]YesArray of image files (JPG, JPEG, WEBP). Images are automatically padded to 9:16 (1080x1920).
titlestringYesThe caption of the post.
descriptionstringNoAdditional description.
schedule_datestringNoISO 8601 date string to schedule the post. Must be in the future and within 6 months.
privacy_levelstringNoPUBLIC_TO_EVERYONE (default), MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY.
disable_commentbooleanNoDisable comments on the post.
auto_add_musicbooleanNoAutomatically add music to the carousel.
photo_cover_indexnumberNoIndex of the image to be used as cover (1-based).
post_modestringNoDIRECT_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. See the Posts API for details on listing and filtering uploads.