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, do_not_translate_terms and forced_translations may each be omitted to create an empty glossary you fill in later with PATCH /v3/brand-glossaries/.
Pronunciations affect generated audio only — a term keeps its original spelling in captions and subtitles. do_not_translate_terms and forced_translations apply only when the glossary is used by a translation feature (video translation, Studio script translation, on-screen text translation), in every target language; they have no effect on video generation or text-to-speech requests. Tone settings are managed in the HeyGen web app and cannot be set here.
Authorizations
HeyGen API key. Obtain from your HeyGen dashboard.
Headers
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.
1 - 255^[A-Za-z0-9_\-:.]{1,255}$Body
Request body for POST /v3/brand-glossaries.
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.
1 - 64Term-to-pronunciation mappings. Omit it, or pass an empty array, to create a glossary you fill in later.
Terms to keep untranslated when this glossary is used by a translation feature. Omit it, or pass an empty array, to add none.
Force Translate rules: terms translated into an exact replacement when this glossary is used by a translation feature. Omit it, or pass an empty array, to add none. A term should not appear in both this list and do_not_translate_terms; behavior is undefined if it does.
Response
Created.
A single brand glossary with its full term list (GET /v3/brand-glossaries/{id}).

