HeyGen asset upload max size: 32 MB, and what Sume does instead
HeyGen's POST /v3/assets caps files at 32 MB, URLs included. Sume has no asset step: requests take public HTTPS URLs, and oversized bodies return 413.

HeyGen's upload-asset endpoint, POST /v3/assets, has a maximum file size of 32 MB, and the same limit applies to files provided by URL. Larger files go through HeyGen's direct upload flow. Sume has no upload step to size against: launch requests take public HTTPS URLs in the fields the OpenAPI schema lists.
HeyGen numbers are from its Usage Limits page; Sume behavior is from Media inputs and Errors and credits, read 2026-10-01.
What is the HeyGen asset upload limit?
The Usage Limits page lists a 32 MB maximum for POST /v3/assets and the types image (PNG, JPEG), video (MP4, WebM), audio (MP3, WAV) and PDF. For larger files it points to POST /v3/assets/direct-uploads, whose per-upload cap comes back as max_bytes in the initialize response.
Separately, resources passed to POST /v3/videos have their own caps: video 100 MB, image 50 MB, audio 50 MB, and the URLs must be publicly accessible.
Does Sume have an asset upload step?
No. The docs say launch generation requests accept media as public HTTPS URLs in the exact fields shown by the live OpenAPI schema, and that you do not need to create a separate Sume asset before submitting normal Avatar 1.0, Avatar Video, face-swap or caption requests.
Signed upload and download URLs and private object keys are not part of the launch public API contract, so there is no direct-upload route to move a large file through.
Which Sume fields take a URL?
The docs list them in a table, summarized here.
| Workflow | Field |
|---|---|
| Avatar 1.0 photo input | input.image_url |
| Avatar Video product branch | product_image |
| Avatar Video scene photo | scene.image_url |
| Scene background image | video_inputs[].background.url |
| Face swap (Beta) | video_url |
| Video captions | video_url |
What happens if the request body is too large?
The error table lists 413 with code payload_too_large: the request body exceeds the configured API limit. The docs do not give a byte figure on that page, so do not assume one. Because media travels as a URL, the JSON body stays small regardless of file size.
What should I do with a large file?
Host it at a public HTTPS URL you control, check that it can be fetched without authentication, and put that URL in the field above. See avatar video with your product and background for a request that uses image URLs.
Sources
Related posts
More in Developers
- HeyGen audio file size limit (MP3/WAV 32 MB) vs Sume 10 MB
HeyGen audio_asset_id takes MP3 or WAV up to 32 MB. Sume's Fabric audio_url must be on the Sume media host and at most 10 MB. What each rule means.
- HeyGen audio to video max length: 10 or 30 min vs Sume 300 s
HeyGen's pages say 30 minutes per audio-to-video request and 10 minutes for avatar audio input. Sume's Fabric route caps duration_seconds at 300.
- HeyGen avatar script limit: 5,000 characters vs Sume's 4-60 s
HeyGen caps avatar script text at 5,000 characters. Sume has no character cap in its docs: it accepts scripts estimated at 4-60 seconds inclusive.
- 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.
Written by Sume