---
title: "Create Avatar Consent"
method: POST
path: "/v3/avatars/{group_id}/consent"
tags: ["Avatars"]
---

# Create Avatar Consent

`POST /v3/avatars/{group_id}/consent`

Initiates the consent flow for an avatar group and returns a URL for the user to complete approval in their browser. Required before a private avatar can be used for video generation.

## Path parameters

- `group_id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- CreateAvatarConsentRequest — Request body for POST /v3/avatars/{group_id}/consent.
  - `reroute_url` string, nullable — Callback URL where the user is redirected after completing consent. Defaults to HeyGen's consent completion page.
  - `consent_text` string, nullable — Custom consent text rendered on the consent page in place of the default HeyGen text. Available as a premium option for select Enterprise customers — e.g. to display co-branded language like "I, (Name), hereby allow HeyGen and {Company} to use footage of me...". Plain text only; rendered as text (not HTML). The characters `<` and `>` are rejected to prevent stored-HTML injection. To request access, please contact our support team.
  - `consent_video` union — Pre-recorded consent video to submit directly instead of visiting the browser consent page — provide as {"type": "url", "url": "https://..."} or {"type": "asset_id", "asset_id": "..."}. When supplied, no consent URL is returned and the video is submitted immediately for review; reroute_url and consent_text do not apply and cannot be combined with this field. Available only to enterprise API customers — contact support to request access.
    - object — Asset input via publicly accessible HTTPS URL.
      - `type` 'url', required — Input type discriminator
      - `url` string, required — Publicly accessible HTTPS URL for the asset
    - object — Asset input via HeyGen asset ID from the asset upload endpoint.
      - `type` 'asset_id', required — Input type discriminator
      - `asset_id` string, required — HeyGen asset ID from the asset upload endpoint
    - object — Asset input via base64-encoded content.
      - `type` 'base64', required — Input type discriminator
      - `media_type` string, required — MIME type of the encoded content (e.g. "image/png")
      - `data` string, required — Base64-encoded file content

## Response `200`

Successful response

- object
  - `data` CreateAvatarConsentResponse — Response body for POST /v3/avatars/{group_id}/consent.
    - `avatar_group` AvatarGroupItem, required — A single avatar group in the list response. Groups are containers for looks (outfits/styles). To determine avatar type and engine compatibility, fetch the looks via GET /v3/avatars/looks.
      - `id` string, required — Unique avatar group identifier.
      - `name` string, required — Display name of the avatar.
      - `preview_image_url` string, nullable — URL to the avatar preview image.
      - `preview_video_url` string, nullable — URL to the avatar preview video.
      - `gender` string, nullable — Gender of the avatar.
      - `created_at` integer, required — Unix timestamp (seconds) when the avatar was created.
      - `looks_count` integer, required — Number of looks (outfits/styles) available for this avatar.
      - `default_voice_id` string, nullable — Default voice ID for this avatar.
      - `consent_status` string, nullable — The status of consent for the group. None means consent is not required.
      - `status` 'processing' | 'pending_consent' | 'failed' | 'completed' — Training/creation status of an avatar group or look.
      - `error` AvatarError — Error details for a failed avatar creation.
        - `code` string, required — Machine-readable error code.
        - `message` string, required — Human-readable error description.
    - `url` string, nullable — URL to the consent page. Omitted when consent_video was submitted directly.

## Other responses

- `400` — Invalid request parameters
- `401` — Authentication failed
- `404` — Resource not found
- `409` — A prior request with this Idempotency-Key is still in progress. Wait for the original request to complete, then retry.
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/heygen/apis/heygen-external-api.md) · [All operations](https://skmtc.net/heygen/apis/heygen-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/heygen/heygen-external-api/revisions/e2e54726e210/schema)
