TikTok ad file types: mp4, mov, mpeg, 3gp, avi, and Sume's MP4 output
TikTok's non-Spark spec lists .mp4, .mov, .mpeg, .3gp and .avi. Sume Timeline renders an MP4, so you can skip conversion and just check the size and bitrate.

TikTok's In-Feed ad specification lists .mp4, .mov, .mpeg, .3gp and .avi for non-Spark video, and .mp4 or .mov for Spark Ads. A Sume Timeline 1.0 render produces an MP4, which is on both lists, so file type is not the thing to check. Duration, file size and bitrate are.
What TikTok's page says
"TikTok Auction In-Feed Ads" (read 2026-10-05) gives formats of .mp4, .mov, .mpeg, .3gp and .avi for non-Spark ads, a duration up to 10 minutes, a size up to 500 MB and a bitrate of at least 516 kbps. For Spark Ads it lists .mp4 or .mov with no duration restriction on that page.
| Ad type | File types | Limits on the page |
|---|---|---|
| Non-Spark | .mp4, .mov, .mpeg, .3gp, .avi | 10 min, 500 MB, 516 kbps or more |
| Spark Ads | .mp4, .mov | No duration restriction listed |
What Sume gives you
Timeline 1.0 writes an MP4. The docs reject ffmpeg-style keys such as codec and crf, so you do not pick a container or a bitrate; you pick size, fps and slots. POST /v1/video-trim with exact precision outputs libx264 yuv420p video with AAC audio.
That means a .mov, .mpeg or .avi source can go in as input only if it first becomes a media.sume.com URL through POST /v1/media-imports; check the media import docs for accepted types before you rely on it. What comes out is an MP4.
The check that matters
After rendering, run video inspect and compare duration and size to the page. Bitrate is the one with a floor, and Sume has no bitrate field, so confirm it from the probe rather than assuming. If a very simple clip lands under 516 kbps, adding motion or detail is the lever, not a setting.
- Container: MP4, accepted for both ad types.
- Length: under 10 minutes for non-Spark.
- Size: 500 MB or less for non-Spark.
- Bitrate: 516 kbps or more for non-Spark, from the probe.
Boundaries
Sume does not upload to TikTok Ads Manager. Download the artifact and upload it yourself, then confirm in Ads Manager that the file passes.
Sources
Related posts
More in Developers
- TikTok publish_id status: poll it after the Sume job webhook fires
The TikTok Direct Post page I read returns a publish_id to check status and mentions no webhook. Let Sume's webhook trigger the post, then poll TikTok.
- TikTok upload_url is valid for one hour: finish the Sume job first
TikTok says the Direct Post upload_url is valid for one hour after issuance. Wait for the Sume job to complete before you initialize so the upload fits.
- Time a 360p Omni draft vs 720p: separate queue wait from run time
Google says the 360p draft is up to 60% faster. Measure it on Sume with a Python script that splits pending time from in_progress time.
- Timeline refuses a 180-second Short: clips end more than 0.5 s early
Timeline 1.0 allows video coverage to stop at most 0.5 seconds before the end of the audio spine. Check slot ends in Python before you plan a 180-second Short.
Written by Sume