HeyGen photo avatar API: create one from a photo
Create a HeyGen avatar from one still with POST /v3/avatars, poll the look until it is ready, then use avatar_id in a video. Fields, errors, and Sume's route.
To create a HeyGen avatar from a photo through the API, call POST /v3/avatars with "type": "photo", a name and a file, save avatar_item.id, wait until that look leaves processing, and pass the id as avatar_id when you create a video. HeyGen says no recording session and no consent step is involved.
The HeyGen steps are from its Photo to Avatar page, read 2026-09-29. Sume's equivalent is described in Create new avatar and Generate avatar video.
What does the create request take?
The photo goes in file as a URL, an asset_id from HeyGen's asset upload, or base64 content. To add the photo as another look on a character you already have, pass avatar_group_id.
curl -X POST "https://api.heygen.com/v3/avatars" \
-H "X-Api-Key: $HEYGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "photo",
"name": "Sarah",
"file": { "type": "url", "url": "https://example.com/sarah-headshot.png" }
}'How do I know the avatar is ready?
Poll GET /v3/avatars/looks/{look_id} until status leaves processing. A completed look returns a preview_image_url and the supported_api_engines it can render on. A failed look carries an error.code of training_failed or moderation_failed, with the reason in error.message. Photo avatars also accept motion_prompt and expressiveness on POST /v3/videos, which direct how much the subject moves while speaking.
Which photo should I use, and can I add looks?
HeyGen recommends a clear, front-facing portrait in even lighting, whole head in frame, one person, at as high a resolution as you have. The image becomes the visual reference the character is remembered by. Later looks in a new outfit or setting join the same character through Prompt to Avatar or a Look Pack.
Why does my photo avatar fail?
Two failure codes are documented, training_failed and moderation_failed, and the reason is in error.message. Because a failed look still returns a response, check status every time instead of assuming the avatar is usable after the create call returns.
A working order of operations is: create the avatar, poll the look, read supported_api_engines to confirm which engine renders it, then submit the video with the saved avatar_id. Keep the avatar_id and the look_id in your own database next to the source photo URL, so a later look can be added with avatar_group_id instead of creating a second character.
How does the same job look on Sume?
| Step | HeyGen | Sume |
|---|---|---|
| Create | POST /v3/avatars with type: photo and file | POST /v1/avatar-1.0/generate with an avatar_handle and input.type: photo with image_url |
| Photo source | URL, asset_id, or base64 | A fetchable public HTTPS image URL; localhost and private-network URLs are rejected |
| Wait | Poll the look | Poll the job at /v1/jobs/{id}/status |
| Use | avatar_id in a video | avatar_handle in POST /v1/avatar-1.0/talking-video |
Do I need permission to use the photo?
Yes in practice, whichever vendor you use. HeyGen notes that the image is still of a real person, so you should have their permission. Sume's avatar docs page checked has no consent step, so the same responsibility sits with you. For the consent side, see how HeyGen treats your avatar and voice.
Sources
Related posts
More in Sume Avatar 1.0
- HeyGen transparent background video: the WebM switch
HeyGen returns a transparent avatar video only when output_format is webm and the avatar was trained with matting. The rules, the errors, and Sume's limits.
- HeyGen vs Higgsfield: avatar platform or multi-model studio
HeyGen is built around talking avatars and translation; Higgsfield is a multi-model video and image studio with a lip-sync app. Plans and API compared.
- HeyGen vs Kling: script avatars or image-plus-audio clips
HeyGen turns a script into an avatar video and voices it. Kling's Avatar API animates one image to your 2–300 s audio. Inputs and API prices compared.
- Instagram AI-generated profile label: who has to add it
Instagram renamed the AI creator label to AI-generated profile and may limit reach for unlabeled AI people. Who needs it, how to add it, how to appeal.
Written by Sume