Check an episode against TikTok upload specs before you post
TikTok's media guide lists MP4/H.264, 360 to 4096 px a side, 23 to 60 FPS and a 4GB cap. Use Sume video inspect to read your file's probe before uploading.

Before you upload an episode, check it against TikTok's published specs: MP4 and H.264 recommended, 360 to 4096 pixels per side, 23 to 60 FPS and at most 4GB. Sume's video inspect reads a file's probe without re-encoding it, and a probe-only call returns width, height, fps, video_codec, container, size_bytes, duration_seconds and has_audio. Compare them to the table below, then upload.
The specs come from the TikTok media transfer guide, read on 2026-10-03. The guide is for the Content Posting API; the app can differ.
TikTok's stated limits
These are quoted from the guide, not from Sume.
| Item | Stated |
|---|---|
| Max size | 4GB |
| Formats | MP4 (recommended), WebM, MOV |
| Codecs | H.264 (recommended), H.265, VP8, VP9 |
| Pixels per side | 360 to 4096 |
| Frame rate | 23 to 60 FPS |
| Length | All creators 3 minutes; some 5 or 10; upload endpoint up to 10 minutes |
Probe the file
Send one media.sume.com URL. With frames set to false it is a probe only, with no stills. The job id is the resource id, and you read it with a GET.
curl -X POST https://api.sume.com/v1/video-inspect \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ep7-inspect" \
-d '{"video_url":"https://media.sume.com/artifacts/artf_ep7/ep7.mp4","frames":false}'
# then GET /v1/video-inspect/$REQUEST_ID and read probeWhat Sume outputs by default
Timeline 1.0 renders 1080x1920 MP4 by default, which sits inside the 360 to 4096 range. If you do not set output.fps, it matches the rate of the sources, with 30 as the fallback when none has one. Frame rate in 23 to 60 is only a risk if a source runs lower; set output.fps to 24, 25, 30 or 60 to be certain.
A mismatch between a source's rate and the output repeats or drops frames, which can judder.
What to do when it fails
If the length is over what your account can post, trim with video trim, or split into episodes. If the codec is not on the list, re-render through Timeline. Sume does not post for you, so the final upload is yours.
Sources
Related posts
More in Developers
- Did the AI edit touch pixels outside the mask? Check it in numpy
BFL promises edits that leave the rest unchanged. Verify that claim on any model's output with a numpy diff outside your edit box, in about 15 lines.
- Is my avatar ready? GET /avatars with status=ready and a handle filter
Check whether one Sume avatar handle is ready before an avatar video render, using the list route's status=ready and handle query parameters in Python.
- Chinese text to speech API: set language zh or it reads as English
Sume TTS only guesses Korean and Japanese when the language is missing. For Mandarin send language zh and pick a voice tagged zh, then test one line.
- Choose an AI video model in Python: filter the Sume model list by need
Read GET /v1/videos/models and keep only the models that fit your clip length, resolution and reference needs. A runnable Python filter for Sume.
Written by Sume