X DM video limit: 140 seconds and 512 MB, and how to trim to it
X lists DM video (dm_video) at 140 seconds and 512 MB by default. Cut a clip to length with Sume video-trim, which takes 0.2 to 900 seconds.

X's media docs list Direct Message video (dm_video) at 140 seconds (2 min 20 sec) and 512 MB for a default account, and 10 minutes and 1 GB for an X Premium or verified account. To fit a longer clip, cut it with Sume's video-trim: duration accepts 0.2 to 900 seconds, so 140 fits.
X figures are from its Media introduction page, read 2026-10-01. Sume behavior is from Video trim.
What are the DM video caps on X?
The DM row is separate from the Post video row, which X lists at 20 minutes and 8 GB by default. Premium status is the uploading user's subscription, not your developer API plan.
| Account | Category | Max duration | Max size |
|---|---|---|---|
| Default | dm_video | 140 seconds | 512 MB |
| X Premium / verified | dm_video | 10 minutes | 1 GB |
| Default | tweet_video, amplify_video | 20 minutes | 8 GB |
| X Premium / verified | tweet_video, amplify_video | 125 minutes | 16 GB |
How do I cut a clip to 140 seconds?
Send POST /v1/video-trim with a Sume-hosted video_url, a start, and exactly one of end or duration. Use duration: 140 (or less, to leave margin). An Idempotency-Key is required. Off-host URLs are rejected, so import the file first with POST /v1/media-imports; see video trim with an off-host URL.
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: dm-clip-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
"start": 0,
"duration": 140
}'How do I stay under 512 MB?
Duration is the first lever. The second is frame size: the optional output object takes width and height from 256 to 2160, and it works only with the default exact precision, a frame-accurate re-encode. Conforming to a smaller frame is how you keep a 140-second clip near a size cap. The docs do not state a resulting file size, so download the trimmed file and check its size against 512 MB before sending.
Where do I get the trimmed file?
The result is kind: video_trim with a video_url that is a new artifact, never the source. Sume returns a durable media URL; the upload to X and the DM are your own calls. For the wider X upload rules, see X video upload specs.
Sources
Related posts
More in Developers
- X video minimum 0.5 seconds: keep Sume trim cuts at 0.5 s or more
X needs Post video of at least 0.5 seconds; Sume video-trim allows cuts down to 0.2 seconds. Set duration to 0.5 or more for X, with the upper caps.
- X video audio must be AAC-LC, not HE-AAC: check an AI video
X requires AAC Low Complexity audio, mono or stereo, with H264 High Profile and YUV 4:2:0. What Sume's exact trim keeps and re-encodes, and what it leaves.
- X video max 1280x1024, ratio 1:3 to 3:1, 60 fps: conform a clip
X video must be 32x32 to 1280x1024, 60 fps or less, ratio 1:3 to 3:1. Read literally, a default 1080x1920 Timeline file is over; conform with video-trim.
- X video 5,000 kbps recommendation: Sume trim has no bitrate field
X recommends H264 High Profile at 30 or 60 FPS and 5,000 kbps. Sume trim cannot set bitrate or codec; you can conform fps and size, and audio stays AAC.
Written by Sume