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.

4 min readSume
All posts

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.

X media caps by media_category, from the X Media introduction page, read 2026-10-01.
AccountCategoryMax durationMax size
Defaultdm_video140 seconds512 MB
X Premium / verifieddm_video10 minutes1 GB
Defaulttweet_video, amplify_video20 minutes8 GB
X Premium / verifiedtweet_video, amplify_video125 minutes16 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

All Developers posts

Written by Sume