> ## 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.

# Create Brand Glossary

> Creates a brand glossary in your workspace. Pass the returned `brand_glossary_id` when creating a video or translation to apply it.

`name` must be unique within your workspace, compared without regard to case; a duplicate returns 409. `terms` may be omitted to create an empty glossary you fill in later with PATCH /v3/brand-glossaries/{brand_glossary_id}.

Pronunciations affect generated audio only — a term keeps its original spelling in captions and subtitles. Translation rules are managed in the HeyGen web app and cannot be set here.



## OpenAPI

````yaml /openapi/external-api.json post /v3/brand-glossaries
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: 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: Filler Word Removal
    description: ''
paths:
  /v3/brand-glossaries:
    post:
      tags:
        - Brand
      summary: Create Brand Glossary
      description: >-
        Creates a brand glossary in your workspace. Pass the returned
        `brand_glossary_id` when creating a video or translation to apply it.


        `name` must be unique within your workspace, compared without regard to
        case; a duplicate returns 409. `terms` may be omitted to create an empty
        glossary you fill in later with PATCH
        /v3/brand-glossaries/{brand_glossary_id}.


        Pronunciations affect generated audio only — a term keeps its original
        spelling in captions and subtitles. Translation rules are managed in the
        HeyGen web app and cannot be set here.
      operationId: createBrandGlossary
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBrandGlossaryRequest'
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/BrandGlossaryDetail'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/StandardAPIError'
              example:
                error:
                  code: invalid_parameter
                  message: '''name'' must be between 1 and 64 characters.'
                  param: name
                  doc_url: null
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/StandardAPIError'
              example:
                error:
                  code: authentication_failed
                  message: Invalid or expired API key. Verify your x-api-key header.
                  param: null
                  doc_url: null
        '409':
          description: >-
            Conflict — either the request conflicts with existing state, or a
            prior request with this `Idempotency-Key` is still in progress
            (`request_in_progress`).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/StandardAPIError'
              examples:
                conflict:
                  summary: Resource conflict
                  value:
                    error:
                      code: conflict
                      message: A brand glossary with this name already exists.
                      param: null
                      doc_url: null
                request_in_progress:
                  summary: Concurrent retry with same Idempotency-Key
                  value:
                    error:
                      code: request_in_progress
                      message: >-
                        A request with this Idempotency-Key is already in
                        progress. Retry shortly.
                      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:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Optional client-supplied key for safely retrying mutations. Subsequent
        calls within 24 hours that share this key replay the original response —
        even if the request body differs slightly (a warning is logged). A retry
        that arrives while the original is still in flight gets a 409
        `request_in_progress`. Keys must be 1–255 characters from
        `[A-Za-z0-9_:.-]`; a UUID is a safe default. Scope is per-endpoint and
        per-resource: the same key on a different route or path parameter is
        independent.
      schema:
        type: string
        pattern: ^[A-Za-z0-9_\-:.]{1,255}$
        maxLength: 255
        minLength: 1
      example: 550e8400-e29b-41d4-a716-446655440000
  schemas:
    CreateBrandGlossaryRequest:
      additionalProperties: false
      description: Request body for POST /v3/brand-glossaries.
      properties:
        name:
          description: >-
            Display name for the glossary. Surrounding whitespace is removed,
            and the trimmed name must be 1-64 characters and unique within your
            workspace, compared without regard to case.
          maxLength: 64
          minLength: 1
          title: Name
          type: string
        terms:
          default: []
          description: >-
            Term-to-pronunciation mappings. Omit it, or pass an empty array, to
            create a glossary you fill in later.
          items:
            $ref: '#/components/schemas/BrandGlossaryTerm'
          title: Terms
          type: array
      required:
        - name
      title: CreateBrandGlossaryRequest
      type: object
    BrandGlossaryDetail:
      description: >-
        A single brand glossary with its full term list (GET
        /v3/brand-glossaries/{id}).
      properties:
        brand_glossary_id:
          description: >-
            Unique brand glossary ID. Pass it as `brand_glossary_id` when
            creating a video or translation to apply this glossary.
          title: Brand Glossary Id
          type: string
        name:
          description: Display name of the brand glossary.
          title: Name
          type: string
        created_at:
          description: Creation timestamp (UTC).
          format: date-time
          title: Created At
          type: string
        updated_at:
          description: Last update timestamp (UTC).
          format: date-time
          title: Updated At
          type: string
        terms:
          description: >-
            Every term mapping in this glossary. Empty when the glossary has no
            terms yet, in which case applying it has no effect.
          items:
            $ref: '#/components/schemas/BrandGlossaryTerm'
          title: Terms
          type: array
      required:
        - brand_glossary_id
        - name
        - created_at
        - updated_at
        - terms
      title: BrandGlossaryDetail
      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
    BrandGlossaryTerm:
      description: 'One glossary entry: a written term and how it should be spoken.'
      properties:
        term:
          description: The term as written in a script, matched case-insensitively.
          title: Term
          type: string
        pronunciation:
          description: >-
            Respelling handed to the speech synthesizer in place of `term` (for
            example 'hey-jen' for 'HeyGen'). Affects generated audio only —
            captions and subtitles keep the original `term` spelling.
          title: Pronunciation
          type: string
      required:
        - term
        - pronunciation
      title: BrandGlossaryTerm
      type: object
    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.

````