Truth Social 15-minute video limit and Sume's 900-second trim cap
Truth Social accepts videos up to 15 minutes and 450 MB. Sume video trim outputs top out at 900 seconds, so one trim job fits. How to cut a longer source.

Yes, one Sume trim job can produce a clip that is as long as Truth Social allows. Truth Social's help page says videos can be as large as 450 MB with a maximum duration of 15 minutes. Sume video trim caps its output at 900 seconds, which is exactly 15 minutes. A single cut from a longer Sume-hosted source therefore fits the duration limit, and the file size is the number you still have to watch.
What the Truth Social page says
Truth Social's upload page lists two video limits and gives June 28 as the effective date for the larger values. It states the maximum video size as 450 MB and the maximum duration as 15 minutes. The page also lists photo and profile image sizes, which do not matter for a video workflow.
| Item | Truth Social | Sume video trim |
|---|---|---|
| Maximum duration | 15 minutes (900 s) | Output up to 900 s |
| Maximum size | 450 MB | No size field; output follows source bitrate |
| Minimum output | Not listed on the page | 0.2 s |
| Source length | Not listed on the page | Up to 1800 s |
Why 900 seconds lines up
The 900-second ceiling comes from the trim contract. The docs give the duration field a range of 0.2 to 900 seconds, and they limit the source to 1800 seconds. If you send a range that is longer than 900 seconds, the API refuses it with the stable code video_trim_range_empty. So you can never accidentally ask Sume for a cut that Truth Social would reject on length.
The reverse is also useful. A 30-minute source is exactly twice the platform limit. Two trim jobs of 900 seconds or fewer cover it. Because a re-encode is frame accurate by default (precision exact, libx264 and yuv420p), the second part can start on the exact frame where the first part ends.
Split a long source into compliant parts
Import the source first with the media imports endpoint, because trim only reads media.sume.com files of your workspace. Then send start plus one of end or duration, with an Idempotency-Key header. The default mode is async, so you poll the job envelope for the result, as described on the jobs page. The result carries a new video_url, duration_seconds and actual_start_seconds.
Plan the parts before you submit. The snippet below splits a duration into equal parts that are each at most 900 seconds and prints the start and duration pairs you would send.
import json, math
def plan(total_seconds, cap=900):
n = math.ceil(total_seconds / cap)
size = total_seconds / n
return [
{"start": round(i * size, 3), "duration": round(size, 3)}
for i in range(n)
]
for part in plan(1620):
print(json.dumps(part))What to check before you upload
Duration is solved, but 450 MB is a separate gate. Trim has no bitrate or size field, and its refused-fields list rejects codec and crf style inputs, so the output size follows the source. Check size_bytes in a video inspect probe before you upload. The related post on bitrate ceilings shows the arithmetic for 450 MB.
Keep these checks in your pipeline:
- Probe duration_seconds and size_bytes with video inspect, using frames false so no stills are billed.
- Compare size_bytes with 450 MB, and duration_seconds with 900.
- If the cut is too big, shorten it or lower the output size with the width, height and fps fields, which apply to exact precision only.
- Keep the trim job result URL, since each cut is a new artifact and the source never changes.
Worked examples
Two worked examples show how the numbers play out. A 20-minute source is longer than the platform allows, so it needs two jobs: one with start 0 and duration 900 for the first 15 minutes, and one with start 900 and end 1200 for the last five. A 30-minute source, which is the longest that trim accepts at 1800 seconds, splits into two 900-second parts or three 600-second parts. At the public rate of $0.02 per job, the two-part plan costs $0.04 and the three-part plan costs $0.06.
Keyframe precision is available when speed matters more than the exact start. It uses a stream copy, so the cut can begin up to one group of pictures early, and you must re-base your times against actual_start_seconds in the result. For platform uploads that must not repeat a second of the previous part, stay on exact.
What this does not cover
Truth Social is a place where the clip is posted by a person in their own account. Sume does not publish to it and this post makes no claim about an upload API for that site. The page we read states limits only. Read the page again before a release, since the effective date on it shows that these numbers have changed before.
Sources
Related posts
More in Integrations
- Typeform webhook auto-disabled: answer 2xx before calling Sume
Typeform disables a webhook that fails every try, and a 404 or 410 stops it at once. Answer 2xx first, then start the Sume job from a queue.
- Upload a local file to Sume from chat: hosted MCP can't read disk
Hosted Sume MCP cannot read your laptop files. The flow is assets_upload_url, a client PUT of the bytes, then assets_complete. What to do in ChatGPT or Claude.
- Veo videos vanish after 2 days: copy to Cloud Storage and expire them
Google keeps Veo output on its server for 2 days. Copy each clip to your own bucket, then let a Cloud Storage lifecycle rule delete old copies on a schedule.
- Webflow Assets API lists no audio types: where a Sume track goes
Webflow's asset docs name image, document and Lottie types, not audio. Keep the Sume mp3 on its media.sume.com URL and store that link in a CMS Link field.
Written by Sume