HeyGen download_failed error: URL rules vs Sume's media errors
HeyGen download_failed means a media URL was not public, mismatched or corrupt. Sume returns image_not_fetchable or input_media_unreachable for similar cases.

HeyGen's Usage Limits page says invalid resources passed to POST /v3/videos cause render failures with download_failed: the URL must be publicly accessible, the file extension must match the real format, and the file must not be corrupted. Sume rejects bad media with image_not_fetchable or input_media_unreachable, and requires fetchable public HTTPS URLs.
What makes a HeyGen URL fail with download_failed?
Three requirements, from the page read 2026-10-01: resource URLs are publicly accessible with no authentication, the extension matches the actual file format, and the file is not corrupted or malformed. The same section lists size limits per type: video 100 MB, image 50 MB, audio 50 MB.
What makes a Sume media URL fail?
The media inputs page says input image and video URLs must be fetchable public HTTPS URLs, and that localhost, private-network URLs, non-HTTPS URLs, signed or private URLs, and mismatched content types are rejected before generation submission. The errors page lists image_not_fetchable, input_media_unreachable and storage configuration errors as "Sume could not fetch or mirror media safely".
How do the checks line up?
| Check | HeyGen | Sume |
|---|---|---|
| Public, no auth | Required | Signed or private URLs rejected |
| HTTPS only | Not stated on the page | Non-HTTPS rejected |
| Type matches | Extension must match format | Mismatched content types rejected |
| When it fails | Render fails with download_failed | Rejected before submission, or error code on the job |
How do I fix an unreachable media URL?
Open the URL in a clean session with no cookies, confirm it is HTTPS and returns the real file type, then retry. On Sume, the docs say to check that input media is a public HTTPS image URL, then retry or contact support with the request_id from the error envelope. For how retries interact with idempotency keys, see HeyGen idempotency vs Sume 409.
Sources
Related posts
More in Developers
- HeyGen image to video from a photo API vs Sume image_url
HeyGen type image animates a PNG or JPEG with a script and voice_id, no avatar setup. Sume does it with image_url plus audio on the Fabric route.
- HeyGen insufficient_credit vs Sume insufficient_credits (402)
HeyGen returns code insufficient_credit with HTTP 402. Sume returns insufficient_credits, plural, also 402. Match on the exact string and the status.
- HeyGen create avatar from a text prompt API vs Sume
HeyGen POST /v3/avatars type prompt takes up to 1000 characters and an aspect_ratio. Sume creates a text-only avatar with a Prompt input on avatar-1.0/generate.
- HeyGen Stripe Projects API key vs how you get a Sume key
HeyGen lets an agent provision a key with stripe projects add heygen/api. Sume keys are created in the dashboard, workspace-scoped and shown once.
Written by Sume