TikTok video specs for API uploads and ads, mapped to Sume
TikTok's posting API takes MP4, WebM, or MOV at 23–60 fps, 360–4,096 px, and up to 10 minutes. How a Sume clip maps to that, and how to upload it.

TikTok's Content Posting API accepts MP4, WebM, or MOV video in H.264, H.265, VP8, or VP9, at 23 to 60 fps, 360 to 4,096 pixels on each side, and up to 4 GB, with up to 10 minutes through its Upload Video endpoint. To post a Sume video, generate it in 9:16, read its probe, conform the frame rate or size with video trim if needed, and upload the bytes with FILE_UPLOAD, because TikTok's URL pull only takes URLs on a domain or URL prefix you have verified.
TikTok's limits are quoted from its Media Transfer Guide (last updated August 4, 2026) and its Auction In-Feed Ads help page (last updated June 2026), read on 2026-09-27; both can change. Sume facts come from Video generation, Video trim, Timeline 1.0, and Video inspect.
What are TikTok's video specs for API uploads and ads?
The posting API and Non-Spark in-feed ads publish different limits. Spark Ads list only .mp4 or .mov and no duration restriction.
- All TikTok creators can post 3-minute videos, and some can post 5 or 10 minutes. TikTok users may trim a developer-sent video in the app to fit their account's maximum.
| Spec | Content Posting API | Non-Spark in-feed ads |
|---|---|---|
| Container | MP4 (recommended), WebM, MOV | .mp4, .mov, .mpeg, .3gp, .avi |
| Codec | H.264 (recommended), H.265, VP8, VP9 | Not listed |
| Frame rate | 23–60 fps | Not listed |
| Picture size | 360–4,096 px for height and width | 9:16 (recommended) ≥ 540×960; 16:9 ≥ 960×540; 1:1 ≥ 640×640 |
| Duration | Up to 10 minutes through the Upload Video endpoint | Up to 10 minutes |
| File size | Up to 4 GB | Up to 500 MB |
| Bitrate | Not listed | At least 516 kbps |
How do I generate a vertical clip for TikTok?
Send POST /v1/videos with aspect_ratio: "9:16" on a model that lists it; Vertical 9:16 video generation has the per-model list and a request. One generated clip runs at most 30 seconds, on seedance-2.5 or wan-3.0 (lengths by model), so a longer TikTok is a Timeline assembly. An avatar video is 9:16 by default at 720p, for scripts Sume estimates at 4–60 seconds.
No model advertises pixel sizes (supported_sizes is null), so read the result's width and height from the probe.
Where does Sume output land against TikTok's limits?
Video trim, video filter, and Timeline return MP4 files. Timeline, filter, and trim's default exact mode encode video with libx264, which FFmpeg's docs describe as an H.264 encoder (the full encoder settings). Against TikTok's numbers:
- Frame rate: Timeline and trim
output.fpstake 24, 25, 30, or 60, all inside TikTok's 23–60. A generated clip's own rate is not documented, so check it. - Picture size: Timeline and trim take 256–2,160 px per edge, so pick 360 or more. Timeline's default 1080×1920 also clears the 540×960 ad minimum.
- Length: Timeline assembles 1–1,800 seconds from
media.sume.comclips. Capaudio.duration_secondsat 600 for the Upload Video endpoint's 10 minutes, or at 180 for the 3 minutes every creator can post.
How do I check and conform the file before upload?
Run a free, probe-only POST /v1/video-inspect with frames: false. It returns duration_seconds, width, height, fps, video_codec, audio_codec, and size_bytes, among others (probe fields).
If the rate or size misses, re-encode with POST /v1/video-trim from start: 0 for the clip's full duration (up to 900 seconds), with output: { width, height, fps }. Give both edges only when they keep the clip's aspect ratio: today, two edges scale the frame to exactly that size (conform details).
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tiktok-conform-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
"start": 0,
"duration": 20,
"output": { "width": 1080, "height": 1920, "fps": 30 }
}'How do I upload the file to TikTok?
The Media Transfer Guide documents two ways in:
FILE_UPLOAD: initializing returns anupload_url, and you send the bytes to it. Chunks are 5–64 MB (the last up to 128 MB), a file under 5 MB goes whole, a file over 64 MB must be chunked, and chunks go up in order, 1 to 1,000 of them.PULL_FROM_URL: TikTok downloads from a URL that must belong to a domain or URL prefix you verified in TikTok for Developers. It must usehttpsand not redirect; a 3xx answer is invalid. The download times out one hour after it starts.
Which Sume URL can I hand to TikTok?
Neither Sume URL passes TikTok's pull rules. Completed jobs can include public artifacts under https://media.sume.com, which is Sume's domain, not a path you own, as TikTok's pull requires. The /v1/videos/{id}/content link needs your API key and answers with a redirect. So take the media.sume.com URL from GET /v1/jobs/{id}/result, download it, and send the bytes with FILE_UPLOAD (download steps), or copy the file to a domain you have verified.
What can't Sume set for TikTok?
Check these yourself before you upload:
- Bitrate and file size: trim, filter, and Timeline take no bitrate or size field and refuse codec or
crfkeys. For the ad floor, compute the average from the probe assize_bytes× 8 ÷duration_seconds÷ 1,000 (kbps, audio included) and compare it with 516. - Safe zones: TikTok publishes them as downloadable template files that vary with dimension, ad caption length, and extra formats, so there are no numbers to map. Burned-in captions move with
design.placement.anchor_ratio, except onpunchandtiktok-green(caption placement).
Sources
- TikTok for Developers: Media Transfer Guide (read 2026-09-27)
- TikTok Ads Manager: TikTok Auction In-Feed Ads (read 2026-09-27)
- FFmpeg Codecs Documentation (read 2026-09-27)
- Video generation
- Generate avatar video
- Video inspect
- Video trim
- Video filter
- Timeline 1.0
- Core workflow
- Video captions
- API reference
- Sume API reference
Related posts
More in Media tools
- Translate a video's voiceover by API: STT, TTS, Timeline
Replace a video's spoken track with Sume: transcribe it, translate the lines yourself, speak them with TTS, and render the video over the new voice.
- Video editing API: which Sume endpoint for each edit
A task-to-endpoint map of Sume's video editing API: which call cuts, crops, captions, joins, or re-voices a video, and which guide explains each edit.
- X (Twitter) video upload specs for AI-generated clips
X recommends H.264 at 30 or 60 fps and 1280x720 or 720x1280, and caps default Post video at 20 minutes. How a Sume clip maps to each line.
- YouTube Shorts video specs: 3 minutes, square or vertical
YouTube treats square or vertical uploads up to 3 minutes as Shorts and recommends MP4, H.264, AAC-LC, and 48 kHz. How Sume output compares.
Written by Sume