POST /v3/avatars/looks dresses an avatar you already own in curated looks. Give it one existing look as the identity reference and a curated template_id, and the new looks join that look’s character.
Where prompting gives you one look at a time in your own words, a pack gives you a whole coordinated set in one call.
1
Pick a method
2
Pick a template id
Eight packs from the gallery. Style packs, the first four, keep the setting neutral and move the wardrobe and palette. Role packs, the last four, put your avatar into a job with the wardrobe and setting that go with it.






Template ids are 32-character hex strings, and every pack ships as a female and a male variant, so pick the one matching your avatar.

Modern Corporate

Stylish Business-Casual

Scandinavian Minimal

Cool Tech / Slate

Healthcare

Keynote Power Presenter

Fitness

Automotive Dealership
The full gallery is browsable in the HeyGen app, covering real estate, legal, teaching, construction and more. Enterprise workspaces can have custom packs built and assigned to them, which then work here exactly like the rest. To have one assigned, contact sales.
3
Send the request
- Look Pack
- Single template
16:9. Pass aspect_ratio: "9:16" and the delivered frames are center-cropped to portrait as the final step, which is worth knowing when you plan the framing of the reference look.reference_look_id is any look you own, from a digital twin, a photo, or a prompt. Its character is where the results land, so there is no group field to set.4
Poll the new looks
The response names the character the looks joined and gives one id per look being generated:Each id starts at
processing. Poll GET /v3/avatars/looks/{look_id} until it reports completed, at which point the preview is available and the id is usable as avatar_id for POST /v3/videos, or failed, where error.message gives the reason.To see every look on the character at once, including the originals, call GET /v3/avatars/looks?group_id=group_xyz789.Template access
A template id your workspace has access to resolves normally. One that belongs to another workspace returns403, and an id that matches no template returns 400. Sending a pack id with type: "template", or a single template id with type: "look_pack", returns a 400 naming the method that would have taken it.
