Video-trim says unsupported_media_source: which Sume routes take URLs
Trim, filter and compose need a media.sume.com clip; upscale, STT, RMBG and captions take public HTTPS URLs. Imports take TikTok and Instagram. Read 2026-10-10.

unsupported_media_source means the video_url you sent to video trim is not on the Sume media host. Trim, video filter and Timeline compose accept only a media.sume.com artifact or asset from your own workspace, while upscale, speech-to-text, background removal and captions take a public HTTPS URL.
So the fix depends on where the clip came from. This week new video models from other vendors keep arriving, and a clip made there does not start on the Sume host. This page maps which Sume route can use such a file and which cannot. It was checked against the Sume docs and OpenAPI on 2026-10-10.
Which routes take which URL
The Media inputs page says fetched URLs must be public HTTPS addresses, and that localhost, private-network, non-HTTPS and signed or private URLs are rejected before generation.
| Route | Accepts | Refusal for anything else |
|---|---|---|
| Video trim | media.sume.com clip in your workspace | unsupported_media_source or source_not_found |
| Video filter | media.sume.com clip in your workspace | unsupported_media_source or source_not_found |
| Timeline compose | media.sume.com still and video | unsupported_media_source or source_not_found |
| Timeline audio | media.sume.com audio | unsupported_media_source or source_not_found |
| Video upscale | Public HTTPS video_url | Non-HTTPS or private URLs rejected |
| Image upscale | Public HTTPS image_url | Non-HTTPS or private URLs rejected |
| Remove background | Public HTTPS image_url | Non-HTTPS or private URLs rejected |
| Speech-to-text | Public HTTPS audio_url | Non-HTTPS or private URLs rejected |
| Video captions | Public HTTPS video_url | Non-HTTPS or private URLs rejected |
How a clip gets onto media.sume.com
There are two ways. The first is to generate it on Sume: completed jobs are mirrored into Sume-owned media URLs, and those are the URLs trim and filter expect. The Sume video router lists eleven models, from seedance-2.5 to h3-max-recast, and a clip made by any of them already lives on the media host.
The second is POST /v1/media-imports. The OpenAPI describes it as an import of a public TikTok or Instagram video URL into Sume-owned storage, at a fixed estimate of $0.15 per accepted import, with a practical size cap of about 2 GB. YouTube and other hosts are rejected with unsupported_platform. So it is not a general upload route, and a Vidu or xAI file link does not fit it.
What to do with an outside clip
Use the routes that take a public URL. Upscale it, caption it, or pull the audio out with speech-to-text. These are real options, and each is a separate job with its own price: video upscale is $0.009 per input second, captions are $0.20 for videos up to 60 seconds, and speech-to-text is $0.01 per audio minute.
What you cannot do is cut that file with trim or run a filter over it. If you need a cut and the file is outside, do the cut where the file was made, or choose a Sume model so the clip starts on the media host. The docs do not describe a public upload endpoint for arbitrary video, so this page does not invent one.
Related refusals you may see next
source_not_found appears when the media.sume.com URL is dead or belongs to another workspace. unsupported_media_type appears when the HEAD request does not return a video. source_duration_exceeded means the trim source is longer than 1800 seconds, and filter stops at 300 seconds with output_duration_exceeded.
None of these is retryable by waiting. Each means the input itself has to change, so fix the URL or the length, then send a new write with a fresh Idempotency-Key.
A short checklist
Check the host of the URL first. If it is media.sume.com and in your workspace, trim and filter will take it. If it is a public HTTPS URL elsewhere, use upscale, captions, STT or RMBG as fits the job. If it is a TikTok or Instagram video link, a media import at $0.15 puts it on the Sume host so the other tools can reach it.
Sources
Related posts
More in Developers
- What to log from a Sume API error: request_id, code, no secrets
Log the status, error.code, error.request_id, retry-after and the path without its query. Keep keys, signed URLs and media URLs out. A 25-line Python logger.
- Which Sume timeout is which: sync, jobs_wait, waitForJob, webhooks
Sume's waits differ: 30 s sync cap, 50 s jobs_wait, a 20-minute SDK default in ms, 10 s per webhook attempt. A table of each unit and what expiry does.
- Write a Sume video URL back to a CMS record: what to store
Sume media URLs in a finished run are durable and public. Store them on your CMS record, and proxy or copy them if you need per-customer access control.
- Which MCP server lets Claude Code or Cursor generate video and images?
MCP servers that let Claude Code and Cursor make video and images: Sume, fal, Replicate, Runway, Higgsfield. Endpoints, sign-in, billing, setup.
Written by Sume