Skip to main content
Before you can generate video with a digital twin (type: "digital_twin"), HeyGen needs proof that the person depicted agreed to be cloned. This protects the avatar subject, your account, and HeyGen — and it’s what lets you use a real person’s likeness responsibly at scale.
Consent applies only to digital twin avatars. Photo avatars (type: "photo") and prompt-to-avatar characters (type: "prompt") depict no real, identifiable person and do not require consent.

The three levels of access

Consent is offered as three increasing levels of access. Each level removes friction from the flow, and each is unlocked for a progressively narrower set of accounts. Higher levels are more powerful and correspondingly more restricted.
LevelFlowWho it’s forAvailability
1. Record via webcamThe avatar subject records a short consent statement on camera through HeyGen’s hosted consent page.All customersAvailable today in v3
2. Upload a consent videoYou supply a pre-recorded consent video instead of recording live — more flexible, but consent is still explicitly captured.Enterprise only, whitelisted accountsAvailable today in v3 — contact sales
3. Skip the consent flowConsent collection is waived entirely for accounts that have signed an indemnity agreement.Enterprise only, whitelisted accountsContact sales
One endpoint drives both Level 1 and Level 2: POST /v3/avatars/{group_id}/consent. By default it starts the webcam flow and returns a URL for the avatar subject; whitelisted enterprise accounts can pass a pre-recorded consent_video instead.

Record via webcam (Level 1)

curl -X POST "https://api.heygen.com/v3/avatars/group_xyz789/consent" \
  -H "X-Api-Key: $HEYGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reroute_url": "https://heygen.com/consent-done"
  }'
ParameterTypeRequiredDescription
reroute_urlstringNoRedirect URL after the subject completes consent. Defaults to HeyGen’s own completion page. Applies to the webcam flow only.

Response

{
  "data": {
    "avatar_group": {
      "id": "group_xyz789",
      "name": "My Digital Twin",
      "consent_status": "pending",
      "looks_count": 1,
      "created_at": 1717000000
    },
    "url": "https://heygen.com/consent/abc123..."
  }
}
FieldTypeDescription
urlstringConsent page URL. Send this to the avatar subject to complete approval. Returned for the webcam flow; when you upload a consent_video, the group is all you need, so the field is omitted.
avatar_group.consent_statusstringCurrent consent status (e.g. "pending").
Whitelisted enterprise accounts can submit a pre-recorded consent statement directly — same endpoint, with consent_video in place of the flow parameters:
curl -X POST "https://api.heygen.com/v3/avatars/group_xyz789/consent" \
  -H "X-Api-Key: $HEYGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "consent_video": { "type": "url", "url": "https://example.com/consent.mp4" }
  }'
ParameterTypeRequiredDescription
consent_videoobjectYes, for this flowThe pre-recorded consent video, as {"type": "url", "url": "https://..."} or {"type": "asset_id", "asset_id": "..."} (see Upload Assets for uploading).
The video is submitted immediately for review — the subject never visits a consent page, so the response contains the avatar_group alone and no url. Because there is no hosted page in this flow, send consent_video on its own, without the webcam-flow parameters. This flow requires a whitelisted account — please reach out to sales or your account team to request access. Because the upload flow has no hosted page prompting the subject, you provide the statement yourself. Consent is validated semantically — the subject names themselves and explicitly allows HeyGen to use their footage — so minor wording differences are fine. A clear version of the statement:
“I, [Full Name], hereby allow HeyGen to use the footage of me to build a HeyGen avatar.”
RequirementDetail
Consent statementThe subject says the line above: their name plus explicit permission for HeyGen to use their footage.
Same personMust be the same person as the training footage (identity-matched).
One visible faceA single, clearly visible face on camera.
AudioClearly audible.
LengthA short clip is enough.
FormatA standard video file (for example MP4), supplied as a public HTTPS URL or an uploaded asset_id.
No passcode is required for the upload path — a spoken code applies only to the interactive webcam flow (Level 1).
Check consent_status on the avatar group via GET /v3/avatars/{group_id} to know when consent is complete. It is null for photo and prompt avatars, which never require consent.
Consent is one step in the digital twin flow. To create the avatar itself, see Create Avatar; to browse the resulting characters and looks, see Avatars and Avatar Looks.