Skip to main content
Custom dictionaries let you control how the TTS pipeline pronounces specific words. Each dictionary is scoped to a project and contains word → replacement/IPA mappings that are applied before synthesis. Use these endpoints to sync dictionaries from your own data sources (PIM, CMS, internal glossary). The TTS-side cache is invalidated after every mutation, so the next synthesis request picks up your changes immediately.
Authentication uses your project-scoped API key. Master-key callers must supply ?project_id=<id> on every request because the master key is not pinned to a project.

Common Request Fields

The project_id query parameter is omitted from the examples because ordinary Dashboard API keys are already project-scoped.

Response Objects

Dictionary responses contain: Entry responses contain: Wrapper responses contain:

List Dictionaries

Return every dictionary in the caller’s project.

Query Parameters

integer
Required for master-key callers; rejected for project-scoped keys whose value disagrees with the key’s project.

Response

Example


Create Dictionary

Body

string
required
Display name (1-200 characters). Must be unique within the project.
string
Free-form description (maximum 2000 characters). Omit or send an empty string for no description.
string
BCP-47 language tag (en, de-DE, …), maximum 16 characters. Omit or send an empty string for all languages.

Example


Get Dictionary

Returns the dictionary record. Returns 403 Forbidden if the dictionary belongs to a project your API key is not scoped to.

Update Dictionary

Only the provided fields are changed.

Body

string
New name (1-200 characters).
string
New description (maximum 2000 characters). Send an empty string to clear it; null leaves it unchanged.
string
New language tag (maximum 16 characters). Send an empty string to clear it; null leaves it unchanged.
boolean
Disable a dictionary without deleting it.

Example


Delete Dictionary

Deletes the dictionary and all its entries.

Response


List Entries

Query Parameters

Case-insensitive substring filter on word.
integer
default:"100"
Page size, 1-500.
integer
default:"0"
Pagination offset.

Response


Add Entry

Body

string
required
Word to match (≤ 200 chars).
string
required
Text the engine pronounces instead (≤ 1000 chars).
string
Optional IPA transcription (maximum 200 characters). Takes precedence over replacement when set.
boolean
default:"false"
Match the original case exactly.

Example


Bulk Replace Entries

Replace every entry in the dictionary. Entries currently in the dictionary whose word is not in the supplied list are deleted. The operation is idempotent — calling twice with the same payload converges to the same final state.

Body

array
required
Array of { word, replacement, ipa?, case_sensitive? } items. word and replacement are required on every item; their limits and case_sensitive: false default match Add Entry. Duplicate word values within the payload are rejected.

Response

Example


Update Entry

Only non-null fields are sent.

Body

string
New word (1-200 characters).
string
New replacement (1-1000 characters).
string
New IPA transcription (maximum 200 characters). Send an empty string to clear it; null leaves it unchanged.
boolean

Delete Entry

Response

Deletion is idempotent after the parent dictionary has been authorized: a missing entry_id also returns { "deleted": true }.

Error responses