Video captions rejects a signed URL: what to send instead
Sume video captions only fetches public HTTPS video URLs and rejects signed, private and localhost links. How to caption a clip that sits behind a signed link.

A signed or presigned storage link is the usual way to share a private video file, and Sume video captions refuses it. The docs, read 2026-10-05, say video_url must be a public HTTPS video URL that Sume can fetch, and the API rejects localhost, private-network, non-HTTPS, signed or private, and provider task URLs. The same screening applies to other URL inputs, such as face-swap sources.
In practice, a signed link expires and can carry credentials in its query string. The docs do not give Sume's reason, but a job that runs after you submit could find an expired link, so a stable public or artifact URL is safer.
What to send instead
- A public HTTPS URL to the file, hosted where anyone can fetch it for the length of the job.
- A
media.sume.comartifact URL from an earlier Sume job, such as a finished generation or trim. The docs examples use this form. - A restyle of an earlier caption job: send
source_caption_idand novideo_url, and Sume reuses that source video.
Request with an artifact URL
curl -X POST https://api.sume.com/v1/video-captions \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: caption-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/example/clean.mp4",
"style": "punch"
}'Cost and limits
Each accepted standalone caption job reserves and captures $0.20 for a video up to 60 seconds. If the clip has no speech, the job fails with caption_no_speech, and the way through is to send authored cues instead. The API does not accept SRT uploads.
Sources
Related posts
More in Media tools
- Video filter 300 s source cap: trim a long clip first, then filter
Sume video filter rejects sources over 300 seconds while trim and detach take 1800. The output_duration_exceeded error, and a trim then filter order that fits.
- Dry-run a Sume video crop with video-filter check before a batch
POST /v1/video-filter/check validates a crop program without a job, credits or an encode. Run it first, then crop a batch of ad clips for new ratios.
- Video filter hdr_source_unsupported: what to do with an HDR clip
A Sume video filter job fails with hdr_source_unsupported on PQ or HLG clips. Why the filter refuses them, and three ways to get a usable result.
- video_filter_ops_empty 400: run video-filter/check before paying $0.02
video_filter_ops_empty means no ops[] and no filtergraph. Send one dim or crop op, or a filtergraph, and call the free /v1/video-filter/check first.
Written by Sume