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.

Validation & Limits

The following limits are enforced by our API:

ConstraintLimitNotes
Video file size1 GB (1024 MB)Enforced by API
Image file size20 MB per imageEnforced by API
Video caption/description2,200 charactersMax character length enforced
Photo title90 UTF-16 runesMax title length for carousel; longer values truncated
Photo caption/description2,200 charactersMax character length enforced
Photo carouselUp to 35 imagesPer TikTok API specification
Privacy levelsPUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLYIf requested level unavailable for creator account, falls back to SELF_ONLY
Caption requirementNon-emptyBoth video and photo posts require at least one non-whitespace character in caption

Recommended by TikTok (not enforced by us):

  • Video aspect ratio: 9:16 (vertical) is optimal; 16:9 or 1:1 supported
  • Video minimum duration: 3 seconds
  • Photo aspect ratio: 9:16 required by TikTok (auto-padded to 1080×1920 if needed)

Source: TikTok Content Posting API — Media Transfer Guide 


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.