---
title: "Get Voice"
method: GET
path: "/voices/{voice_id}"
tags: ["voices"]
---

# Get Voice

`GET /voices/{voice_id}`

## Request

- Base URL: `https://api.moda.app/v1`
- URL: `https://api.moda.app/v1/voices/{voice_id}`
- Auth: HTTP bearer

One voice with its provider defaults and the caller's favorite flags.

A voice cloned from a member of the caller's team adds ``kind: "cloned"`` and ``clone``
(``status``, ``owner_user_id``); another team's cloned voice is the unknown-id ``404``.

Revoked voices answer ``200`` with ``availability.status: "revoked"`` so historical takes can
show a name. ``voice_id`` is decoded here, so a malformed id is the same ``404
voice_not_found`` as an unknown one.

## Path parameters

- `voice_id` string, required

## Headers

- `X-Voice-Engines` string, nullable: The voice engines this client understands, comma-separated: elevenlabs,fishaudio,inworld. ElevenLabs is always on; Fish Audio models and voices appear only for a client that lists fishaudio (or, on GET /v1/voices, asks for provider=fishaudio or a featured/community category), and Inworld's only for a client that lists inworld (or asks for provider=inworld).
- `Moda-Version` '2026-04-12' | '2026-05-01'

## Response `200`

Successful Response

- union
  - ClonedVoiceDetail: ``GET /v1/voices/{voice_id}`` for a cloned voice: the detail plus ``kind`` and ``clone``.
    - `object` 'voice'
    - `id` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `provider` 'elevenlabs' | 'fishaudio' | 'inworld', required
    - `category` string, required
    - `source` string, required
    - `creator_name` string, nullable, required
    - `labels` VoiceLabels, required
      - `accent` string, nullable, required
      - `age` string, nullable, required
      - `gender` string, nullable, required
      - `use_case` string, nullable, required
      - `descriptive` string, nullable, required
    - `languages` VoiceLanguage[], required
      - `language` string, required
      - `accent` string, nullable, required
      - `locale` string, nullable, required
    - `compatible_models` string[], required
    - `recommended_models` string[], required
    - `preview` VoicePreview, required
      - `url` string, required
      - `mime_type` string
      - `expires_at` string, nullable
    - `availability` VoiceAvailability, required
      - `status` string, required
      - `reason` string, nullable, required
      - `revoked_at` string, nullable, required
    - `catalog_refreshed_at` string, required
    - `settings_defaults` VoiceSettingsDefaults, required
      - `stability` number, nullable, required
      - `similarity_boost` number, nullable, required
      - `style` number, nullable, required
      - `use_speaker_boost` boolean, nullable, required
      - `speed` number, nullable, required
    - `favorite` VoiceFavoriteFlags, required
      - `user` boolean, required
      - `workspace` boolean, required
      - `workspace_default` boolean, required
    - `kind` 'cloned', required
    - `clone` VoiceClone, required: What only a cloned voice has. The source recording is private and never serialized.
      - `status` string, required
      - `owner_user_id` string, required
  - VoiceDetail: ``GET /v1/voices/{voice_id}``: the list form plus defaults and favorite flags.
    - `object` 'voice'
    - `id` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `provider` 'elevenlabs' | 'fishaudio' | 'inworld', required
    - `category` string, required
    - `source` string, required
    - `creator_name` string, nullable, required
    - `labels` VoiceLabels, required
      - `accent` string, nullable, required
      - `age` string, nullable, required
      - `gender` string, nullable, required
      - `use_case` string, nullable, required
      - `descriptive` string, nullable, required
    - `languages` VoiceLanguage[], required
      - `language` string, required
      - `accent` string, nullable, required
      - `locale` string, nullable, required
    - `compatible_models` string[], required
    - `recommended_models` string[], required
    - `preview` VoicePreview, required
      - `url` string, required
      - `mime_type` string
      - `expires_at` string, nullable
    - `availability` VoiceAvailability, required
      - `status` string, required
      - `reason` string, nullable, required
      - `revoked_at` string, nullable, required
    - `catalog_refreshed_at` string, required
    - `settings_defaults` VoiceSettingsDefaults, required
      - `stability` number, nullable, required
      - `similarity_boost` number, nullable, required
      - `style` number, nullable, required
      - `use_speaker_boost` boolean, nullable, required
      - `speed` number, nullable, required
    - `favorite` VoiceFavoriteFlags, required
      - `user` boolean, required
      - `workspace` boolean, required
      - `workspace_default` boolean, required

## Other responses

- `401`: Authentication required.
- `402`: Insufficient credits for a metered operation.
- `403`: Permission denied for this scope.
- `404`: Resource not found.
- `409`: Conflict (idempotency / resource state).
- `422`: Request validation failed.
- `429`: Rate limit exceeded.
- `500`: Internal error.

## Changes

- **2026-11-03** `9ac6a3abc0f8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/moda/apis/moda-public-api/changes/voices/:voice_id/get.md)

---

[API](https://skmtc.dev/moda/apis/moda-public-api.md) - [All operations](https://skmtc.dev/moda/apis/moda-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/moda/apis/moda-public-api/revisions/9ac6a3abc0f8?raw)
