> ## Documentation Index
> Fetch the complete documentation index at: https://dev.docs.inworld.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete a pronunciation dictionary

> Delete a named pronunciation dictionary and all of its entries.

The request must include the current `etag`. A stale value returns HTTP `409 Conflict`; get the dictionary again before retrying the deletion. Set `allowMissing=true` when an already-absent dictionary should be treated as a successful deletion; a non-empty `etag` is still required.


## OpenAPI

````yaml delete /pronunciations/v1/workspaces/{workspaceId}/pronunciationDictionaries/{pronunciationDictionaryId}
openapi: 3.0.0
info:
  title: Inworld Pronunciation Dictionaries API
  version: v1
  description: >-
    Create and manage named pronunciation dictionaries. Each dictionary contains
    its complete set of pronunciation entries; create and update validate the
    supplied contents before committing them atomically.
  contact:
    name: Inworld AI
    url: https://inworld.ai
    email: support@inworld.ai
servers:
  - url: https://api.inworld.ai
security:
  - inworld_basic: []
tags:
  - name: Pronunciation dictionaries
    description: Manage workspace-owned named pronunciation dictionaries.
paths:
  /pronunciations/v1/workspaces/{workspaceId}/pronunciationDictionaries/{pronunciationDictionaryId}:
    delete:
      tags:
        - Pronunciation dictionaries
      summary: Delete a pronunciation dictionary
      description: >-
        Deletes a named pronunciation dictionary and all of its entries. Supply
        the current `etag` for optimistic concurrency control.
      operationId: Pronunciations_DeletePronunciationDictionary
      parameters:
        - $ref: '#/components/parameters/workspaceId'
        - $ref: '#/components/parameters/pronunciationDictionaryId'
        - name: etag
          in: query
          required: true
          description: >-
            Current dictionary `etag` from a get, list, create, or update
            response.
          schema:
            type: string
            minLength: 1
        - name: allowMissing
          in: query
          required: false
          description: >-
            When `true`, deleting a dictionary that is already absent succeeds.
            A non-empty `etag` is still required, but it is not compared when
            the dictionary is absent.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: The dictionary was deleted.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
              example: {}
        '409':
          $ref: '#/components/responses/etagConflict'
        default:
          $ref: '#/components/responses/error'
      x-codeSamples:
        - lang: bash
          label: cURL
          source: |-
            curl --request DELETE \
              "https://api.inworld.ai/pronunciations/v1/workspaces/${INWORLD_WORKSPACE_ID}/pronunciationDictionaries/${PRONUNCIATION_DICTIONARY_ID}?etag=${PRONUNCIATION_DICTIONARY_ETAG}" \
              --header "Authorization: Basic ${INWORLD_API_KEY}"
        - lang: python
          label: Python
          source: |-
            import os
            import requests

            workspace_id = os.environ["INWORLD_WORKSPACE_ID"]
            dictionary_id = os.environ["PRONUNCIATION_DICTIONARY_ID"]
            url = (
                "https://api.inworld.ai/pronunciations/v1/"
                f"workspaces/{workspace_id}/pronunciationDictionaries/{dictionary_id}"
            )
            response = requests.delete(
                url,
                headers={"Authorization": f"Basic {os.environ['INWORLD_API_KEY']}"},
                params={"etag": os.environ["PRONUNCIATION_DICTIONARY_ETAG"]},
            )
            response.raise_for_status()
        - lang: javascript
          label: JavaScript
          source: >-
            const { INWORLD_API_KEY, INWORLD_WORKSPACE_ID,
            PRONUNCIATION_DICTIONARY_ID, PRONUNCIATION_DICTIONARY_ETAG } =
            process.env;

            const url = new
            URL(`https://api.inworld.ai/pronunciations/v1/workspaces/${INWORLD_WORKSPACE_ID}/pronunciationDictionaries/${PRONUNCIATION_DICTIONARY_ID}`);

            url.searchParams.set('etag', PRONUNCIATION_DICTIONARY_ETAG);


            const response = await fetch(url, {
              method: 'DELETE',
              headers: { Authorization: `Basic ${INWORLD_API_KEY}` },
            });


            if (!response.ok) throw new Error(await response.text());
components:
  parameters:
    workspaceId:
      name: workspaceId
      in: path
      required: true
      description: >-
        ID of the workspace that owns the dictionary. It must match a workspace
        accessible to the API key.
      schema:
        type: string
        minLength: 1
        maxLength: 61
        pattern: ^[a-z0-9_-]+$
        example: my-workspace
    pronunciationDictionaryId:
      name: pronunciationDictionaryId
      in: path
      required: true
      description: Service-assigned UUID from the dictionary's resource `name`.
      schema:
        type: string
        format: uuid
        example: 2d470a1e-0262-4f22-9b46-5353d454d988
  responses:
    etagConflict:
      description: >-
        The supplied `etag` is stale. Get the dictionary again, reconcile your
        changes with the current resource, and retry using its new `etag`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/rpcStatus'
          example:
            code: 10
            message: Pronunciation dictionary etag does not match
            details: []
    error:
      description: The request failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/rpcStatus'
  schemas:
    rpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: gRPC status code.
        message:
          type: string
          description: Developer-facing error message.
        details:
          type: array
          description: >-
            Structured error details. Validation failures can include
            `google.rpc.BadRequest` field violations without echoing
            customer-authored pronunciation content.
          items:
            $ref: '#/components/schemas/protobufAny'
    protobufAny:
      type: object
      properties:
        '@type':
          type: string
          description: A URL identifying the serialized protocol-buffer message type.
      additionalProperties: true
  securitySchemes:
    inworld_basic:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your [authentication](../../../api-reference/introduction) credentials.
        For Basic authentication, send `Basic $INWORLD_API_KEY`. Use a Standard
        API key for the target workspace. Voices Read access permits list and
        get; Voices Write access permits all five methods.

````