> ## Documentation Index
> Fetch the complete documentation index at: https://heygen-1fa696a7.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# List Look Templates

> Returns the curated templates this workspace may apply with `POST /v3/avatars/looks`, so template ids can be discovered over the API instead of read out of the HeyGen app. Each item's `id` is the `template_id` to send and its `type` is the `type` to send with it: `look_pack` for a Look Pack, which generates the number of looks in `looks_count`, or `template` for a single look template, which generates two. Packs are curated per gender, so filter with `gender` to get the variant matching your avatar. Enterprise custom packs assigned to the workspace are listed alongside the public ones. Flattened pack members are not listed separately.



## OpenAPI

````yaml /openapi/external-api.json get /v3/avatars/look-templates
openapi: 3.1.0
info:
  title: HeyGen External API
  version: 1.0.0
  description: >-
    HeyGen's external API for programmatic AI video creation. See
    https://docs.heygen.com for full documentation.
  contact:
    name: HeyGen Product Infra
    url: https://heygen.com
servers:
  - url: https://api.heygen.com
    description: Production
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: Video Agent
    description: Create videos from text prompts using AI
  - name: Videos
    description: Create, list, retrieve, and delete videos
  - name: Templates
    description: Generate videos from reusable templates by replacing their variables
  - name: Voices
    description: Text-to-speech and voice management
  - name: Audio
    description: Search the background-music and sound-effects catalog
  - name: Video Translate
    description: Translate videos into other languages
  - name: AI Clipping
    description: Turn long-form videos into ready-to-share short clips with captions
  - name: Batches
    description: Create and track batches of videos.
  - name: Video Translation Batches
    description: Create and track batches of video translations.
  - name: Lipsync Batches
    description: Create and track batches of lipsyncs.
  - name: Asset Batches
    description: Create and track batches of direct-to-S3 asset uploads.
  - name: User
    description: Account information and billing
  - name: API Keys
    description: Inspect the API key authenticating the current request
  - name: Avatars
    description: List and manage avatars and looks
  - name: Assets
    description: Upload files for use in video creation
  - name: Webhooks
    description: Manage webhook endpoints and events
  - name: Lipsync
    description: Dub or replace audio on existing videos
  - name: Brand
    description: >-
      Brand-related resources — brand kits (colors, fonts, logos) and brand
      glossaries (custom term translations)
  - name: HyperFrames
    description: Render HyperFrames composition zips into video — separate from /v3/videos
  - name: Models
    description: ''
  - name: Filler Word Removal
    description: ''
paths:
  /v3/avatars/look-templates:
    get:
      tags:
        - Avatars
      summary: List Look Templates
      description: >-
        Returns the curated templates this workspace may apply with `POST
        /v3/avatars/looks`, so template ids can be discovered over the API
        instead of read out of the HeyGen app. Each item's `id` is the
        `template_id` to send and its `type` is the `type` to send with it:
        `look_pack` for a Look Pack, which generates the number of looks in
        `looks_count`, or `template` for a single look template, which generates
        two. Packs are curated per gender, so filter with `gender` to get the
        variant matching your avatar. Enterprise custom packs assigned to the
        workspace are listed alongside the public ones. Flattened pack members
        are not listed separately.
      operationId: listLookTemplates
      parameters:
        - name: type
          in: query
          required: false
          description: >-
            Filter by generation method: 'look_pack' for Look Packs, 'template'
            for single look templates. Omit for both.
          schema:
            type: string
            enum:
              - look_pack
              - template
        - name: gender
          in: query
          required: false
          description: >-
            Filter to templates built for 'male' or 'female'. Templates with no
            gender of their own are returned for either value. Omit for all.
          schema:
            type: string
            enum:
              - male
              - female
        - name: limit
          in: query
          required: false
          description: Maximum number of items to return per page (1-50).
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 20
        - name: token
          in: query
          required: false
          description: Opaque cursor token for the next page.
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/LookTemplateItem'
                  has_more:
                    type: boolean
                    description: Whether more pages are available
                  next_token:
                    type:
                      - string
                      - 'null'
                    description: Opaque cursor for the next page
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/StandardAPIError'
              example:
                error:
                  code: invalid_parameter
                  message: '''limit'' must be between 1 and 50.'
                  param: limit
                  doc_url: null
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/StandardAPIError'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired API key. Verify your x-api-key header.
                  param: null
                  doc_url: null
        '403':
          description: >-
            Forbidden — `error.code` is one of: `insufficient_api_key_scope`,
            `resource_access_denied`, `forbidden`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/StandardAPIError'
              examples:
                insufficient_api_key_scope:
                  summary: The API key lacks the avatars:read scope
                  value:
                    error:
                      code: insufficient_api_key_scope
                      message: >-
                        This API key does not have permission to perform this
                        action. Required scope: avatars:read.
                      param: null
                      doc_url: null
                workspace_role_denied:
                  summary: The caller's workspace role cannot read avatar templates
                  value:
                    error:
                      code: resource_access_denied
                      message: >-
                        Your account does not have permission to access this
                        resource. Ask your Space Admin for further details.
                      param: null
                      doc_url: null
                workspace_session_unavailable:
                  summary: The active workspace session is unavailable
                  value:
                    error:
                      code: forbidden
                      message: >-
                        The active workspace session is unavailable.
                        Reauthenticate and try again.
                      param: null
                      doc_url: null
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/StandardAPIError'
              example:
                error:
                  code: rate_limit_exceeded
                  message: >-
                    Too many requests. Retry after the duration specified in the
                    Retry-After header.
                  param: null
                  doc_url: null
          headers:
            Retry-After:
              description: Seconds to wait before retrying
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
components:
  schemas:
    LookTemplateItem:
      description: >-
        One template the caller may pass as ``template_id`` to POST
        /v3/avatars/looks.
      properties:
        id:
          description: >-
            Template identifier. Pass it as template_id to POST
            /v3/avatars/looks, with the type this item reports.
          examples:
            - 5a8e6be843ee4321a014946bf62aa322
          title: Id
          type: string
        type:
          $ref: '#/components/schemas/LookTemplateType'
          description: The type to send on POST /v3/avatars/looks to apply this template.
          examples:
            - look_pack
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Display name of the template.
          examples:
            - Modern Corporate
          title: Name
        gender:
          anyOf:
            - $ref: '#/components/schemas/LookTemplateGender'
            - type: 'null'
          default: null
          description: >-
            Gender the template's looks are built for. Null when the template
            suits any avatar.
          examples:
            - female
        preview_image_url:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Cover image for the template, showing what the generated looks
            resemble.
          examples:
            - >-
              https://resource2.heygen.ai/avatar_remix_template/modern_corporate_female/profile.png
          title: Preview Image Url
        looks_count:
          description: >-
            How many looks applying this template generates. A Look Pack's size
            varies by pack; a single look template generates two.
          examples:
            - 5
          title: Looks Count
          type: integer
      required:
        - id
        - type
        - looks_count
      title: LookTemplateItem
      type: object
    StandardAPIError:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code
          example: invalid_parameter
        message:
          type: string
          description: Human-readable error message
          example: Video not found
        param:
          type:
            - string
            - 'null'
          description: Which request field caused the error
        doc_url:
          type:
            - string
            - 'null'
          description: Link to error documentation
        errors:
          type: array
          description: >-
            Per-item error details for batch/multi-node failures (e.g. graph
            compilation errors by node).
          items:
            $ref: '#/components/schemas/StandardAPIErrorDetail'
      required:
        - code
        - message
    LookTemplateType:
      description: >-
        What a template is, named by the ``type`` that applies it on POST
        /v3/avatars/looks.


        Deliberately NOT the ``avatar_remix_templates.template_type`` wire
        values ('pack' / 'single'):

        the whole point of the listing is that the value you read is the value
        you send back.
      enum:
        - look_pack
        - template
      title: LookTemplateType
      type: string
    LookTemplateGender:
      description: Gender a template's curated looks are built for.
      enum:
        - male
        - female
      title: LookTemplateGender
      type: string
    StandardAPIErrorDetail:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code
          example: unknown_node_type
        message:
          type: string
          description: Human-readable error message
          example: Unknown node type
        node_id:
          type: string
          description: Graph node id this error pertains to, if applicable
        port:
          type: string
          description: Port name on the node this error pertains to, if applicable
        path:
          type: string
          description: Field path within the item this error pertains to, if applicable
      required:
        - code
        - message
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: HeyGen API key. Obtain from your HeyGen dashboard.
    BearerAuth:
      type: http
      scheme: bearer
      description: OAuth2 bearer token.

````