---
title: "update pronunciation dictionary"
method: PUT
path: "/v1/pronunciation-dictionaries/{id}"
tags: ["Pronunciation Dictionaries"]
---

# update pronunciation dictionary

`PUT /v1/pronunciation-dictionaries/{id}`

## Request

- Base URL: `https://api.anam.ai`
- URL: `https://api.anam.ai/v1/pronunciation-dictionaries/{id}`
- Auth: HTTP bearer

Updates a pronunciation dictionary's name, entries or both. `entries` replaces the whole list. The save is live: sessions that start afterwards use the new entries, and running sessions keep the entries they started with.

Without `expectedRevision`, the update applies to the current revision and the last write wins. With it, the update is rejected with 409 `REVISION_CONFLICT` if the dictionary has been saved since that revision.

Entries are validated as a whole: if any entry is invalid, nothing is saved and the response lists every error by one-based row.

## Path parameters

- `id` string, uuid, required

## Request body

- union: Provide `name`, `entries` or both.
  - object
    - `name` string, required: New display name
    - `entries` PronunciationEntry[]: The complete new list of entries. An empty array removes every entry.
      - `text` string, required: Word or phrase to replace, at most 100 Unicode characters.
      - `kind` 'sounds_like' | 'ipa': - `sounds_like`: `pronunciation` is a respelling, such as `annum`. Works with every voice. - `ipa`: `pronunciation` is Cartesia IPA markup, such as `<<ˈ|ɑ|n|ə|m>>`. Voices whose model reads IPA (Cartesia Sonic 3, ElevenLabs v3 and v4) speak it; other voices speak `soundsLike`, or leave the text unchanged without it.
      - `pronunciation` string, required: How to say the text, at most 200 Unicode characters. A sounds-like respelling can't contain `<<` or `>>`.
      - `soundsLike` string: IPA entries only. Respelling spoken by voices whose model can't read IPA.
      - `caseSensitive` boolean: Match the text only with the same capitalization.
    - `expectedRevision` integer: The revision you last read. Optional.
  - object
    - `name` string: New display name
    - `entries` PronunciationEntry[], required: The complete new list of entries. An empty array removes every entry.
      - `text` string, required: Word or phrase to replace, at most 100 Unicode characters.
      - `kind` 'sounds_like' | 'ipa': - `sounds_like`: `pronunciation` is a respelling, such as `annum`. Works with every voice. - `ipa`: `pronunciation` is Cartesia IPA markup, such as `<<ˈ|ɑ|n|ə|m>>`. Voices whose model reads IPA (Cartesia Sonic 3, ElevenLabs v3 and v4) speak it; other voices speak `soundsLike`, or leave the text unchanged without it.
      - `pronunciation` string, required: How to say the text, at most 200 Unicode characters. A sounds-like respelling can't contain `<<` or `>>`.
      - `soundsLike` string: IPA entries only. Respelling spoken by voices whose model can't read IPA.
      - `caseSensitive` boolean: Match the text only with the same capitalization.
    - `expectedRevision` integer: The revision you last read. Optional.

## Response `200`

Successfully updated pronunciation dictionary

- PronunciationDictionary: A pronunciation dictionary and its entries. Saves are live: sessions that start after a save use the saved entries, and running sessions keep the entries they started with.
  - `id` string, uuid: Pronunciation dictionary ID. Pass it as `voiceGenerationOptions.pronunciationDictionaryId` when creating a session token.
  - `name` string: Display name
  - `revision` integer: Starts at 1 and increases with every save. Send it as `expectedRevision` to reject a write if someone else saved first.
  - `createdAt` string, date-time: When the dictionary was created
  - `updatedAt` string, date-time: When the dictionary was last saved
  - `entries` PronunciationEntry[]
    - `text` string, required: Word or phrase to replace, at most 100 Unicode characters.
    - `kind` 'sounds_like' | 'ipa': - `sounds_like`: `pronunciation` is a respelling, such as `annum`. Works with every voice. - `ipa`: `pronunciation` is Cartesia IPA markup, such as `<<ˈ|ɑ|n|ə|m>>`. Voices whose model reads IPA (Cartesia Sonic 3, ElevenLabs v3 and v4) speak it; other voices speak `soundsLike`, or leave the text unchanged without it.
    - `pronunciation` string, required: How to say the text, at most 200 Unicode characters. A sounds-like respelling can't contain `<<` or `>>`.
    - `soundsLike` string: IPA entries only. Respelling spoken by voices whose model can't read IPA.
    - `caseSensitive` boolean: Match the text only with the same capitalization.

## Other responses

- `400`: Bad request - The body is not valid JSON
- `401`: Unauthorized - Invalid or missing API key
- `403`: Forbidden - API key lacks write access to pronunciation dictionaries
- `404`: Not Found - No pronunciation dictionary with this ID in your organization, or it was archived
- `409`: Conflict - `REVISION_CONFLICT`, the dictionary was saved since `expectedRevision`
- `422`: Unprocessable - The name or one or more entries are invalid, or neither was provided. Nothing was saved. Without `entries`, the saved entries are re-saved; if they fail rules added since they were saved, `code` is `DICTIONARY_OUTDATED` and `details` lists the rows to fix and send.
- `429`: Too many requests - Your organization made more than 60 pronunciation dictionary writes (creates, imports, updates and archives) this minute. Rejected writes count too.
- `500`: Server error
- `503`: The API key could not be checked because of a temporary server problem. The key may be valid; retry after `Retry-After` seconds.

## Changes

- **2026-10-26** `e85ef0cd491e`: 1 info
  - added the non-success response with the status `503`
- **2026-10-14** `5ae8f3dbfe52`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/anam/apis/anam-ai-api/changes/v1/pronunciation-dictionaries/:id/put.md)

---

[API](https://skmtc.dev/anam/apis/anam-ai-api.md) - [All operations](https://skmtc.dev/anam/apis/anam-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anam/apis/anam-ai-api/revisions/3e535ea89083?raw)
