Platform specs ask for bitrate and GOP: what Sume lets you set
YouTube, TikTok and Meta list bitrate, GOP and audio rates. Sume rejects codec and crf fields. Here is what you can control instead: size, fps, audio.

Platform specs often list encoder settings such as bitrate, GOP length or B frames, but Sume's media APIs do not take them. A request with codec, crf, ffmpeg, filter or cmd fields is rejected with ffmpeg_fields_rejected. What you can set is output size, frame rate, whether to keep audio, and whether a trim re-encodes or copies.
What the specs ask for
The values are from each vendor page, read 2026-10-08.
| Platform | Setting named on the page |
|---|---|
| YouTube | Closed GOP of half the frame rate, 2 consecutive B frames, CABAC |
| YouTube | 8 Mbps for 1080p at standard frame rate |
| TikTok In-Feed | Bitrate at least 516 kbps |
| Meta Facebook Feed | Stereo AAC at 128 kbps or more, fixed frame rate |
| Meta Facebook Feed | No edit lists |
What you can set on Sume
These are the controls the docs list.
| Control | Where | Values |
|---|---|---|
| Output width and height | Trim exact, Timeline | 256 to 2160 |
| Frame rate | Trim exact, Timeline | 24, 25, 30, 60 |
| Audio | Trim | keep or drop |
| Precision | Trim | exact (libx264, yuv420p) or keyframe (stream copy) |
| Fades | Timeline | 0 to 5 seconds |
How to read the gap
Many of these asks are about the final platform transcode, not about your upload. YouTube states its settings as recommended upload encoding, and platforms re-encode whatever you send. The fields Sume refuses are the ones you cannot verify from outside anyway.
What you can do is check the facts a file shows. Video inspect returns probe data, so you can read frame rate, size and duration from the output instead of assuming them. For the bitrate rows, compare file size with duration yourself: size in megabits divided by seconds.
- Choose fps 30 or 60 explicitly if the platform wants a fixed rate; omitting fps on Timeline matches the sources.
- Use exact trim when you need a consistent H.264 file.
- Treat bitrate and GOP rows as platform guidance, not something Sume will set.
Cost of a spec check
One exact trim is $0.02 and one Timeline render is $0.10 per output minute. Probing the result with video inspect without a transcript adds no speech-to-text charge, because that is billed only for the transcript.
Verifying the output
Probe the file you get back rather than trusting the request. Video inspect returns the probe data for a Sume-hosted file, including duration and size, and video frames returns stills so you can look at the first and last frame, which is where encoder problems and stray black frames tend to show up.
If a number on the vendor page is a hard limit, such as a maximum file size, check the artifact's size after render and keep a margin. If it is a recommendation, such as a bitrate, treat the platform's own transcode as the final word. A file that passes every check you can run is the best input you can give that transcode.
Sources
- YouTube Help: YouTube recommended upload encoding settings (read 2026-10-08)
- TikTok Ads Help: TikTok Auction In-Feed Ads, last updated June 2026 (read 2026-10-08)
- Meta Ads Guide: Awareness video ad specs on Facebook Feed (read 2026-10-08)
- Sume docs: Video trim
- Sume docs: Timeline 1.0
- Sume docs: Video inspect
Related posts
More in Developers
- Continue a 30 s shot: Video frames still as the next first frame
Extract a last-second still from a 30 s Sume clip with Video frames and send it as first_frame for the next shot. Price of the chain at 720p.
- Convert MAI-Transcribe-2 word offsets to Sume video caption words
Turn word timings in milliseconds into the seconds-based words array Sume video-captions accepts. A short Python converter plus the 60 s and 1,200-word limits.
- curl -d to Sume /v1/videos gives 415: add the JSON Content-Type
A POST /v1/videos with a body that is not application/json gets 415 unsupported_media_type, with the content type you sent in details. The curl fix.
- Dart: submit a 30-second Wan 3.0 clip with package:http
Server-side Dart with package:http: POST wan-3.0 for 30 seconds, poll until completed and write the MP4. Keep the key out of the Flutter app.
Written by Sume