Skip to main content
POST
/
voices
/
v1
/
voices
/
{voiceId}
:publish
cURL
curl --location 'https://api.inworld.ai/voices/v1/voices/<voice-id>:publish' \
--header "Authorization: Basic $INWORLD_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "displayName": "John",
  "description": "A warm, friendly voice for customer support.",
  "tags": ["support", "conversational"]
}'
{
  "name": "workspaces/your_workspace_id/voices/design-voice-38b05df9",
  "langCode": "EN_US",
  "displayName": "John",
  "description": "A warm, friendly voice for customer support.",
  "tags": [
    "support",
    "conversational"
  ],
  "voiceId": "your_workspace_id__design-voice-38b05df9",
  "source": "IVC"
}

Documentation Index

Fetch the complete documentation index at: https://docs.inworld.ai/llms.txt

Use this file to discover all available pages before exploring further.

Publishes a preview voice to your voice library. Use this after designing a voice to promote the chosen preview to your voice library. Once published, the voice can be used to synthesize speech like any other voice.

Authorizations

Authorization
string
header
required

Your API key. Read permissions are required for GET endpoints. Write permissions are required for POST, PATCH, and DELETE endpoints.

For Basic authentication, please populate Basic $INWORLD_API_KEY

Path Parameters

voiceId
string
required

Voice ID of the draft voice to publish. Expected format: {workspace}__{voice}.

Pattern: [^/]+

Body

application/json

Voice metadata to set when publishing.

displayName
string

The name of the voice shown in your voice library.

description
string

Description of the voice.

tags
string[]

Optional labels for filtering and discovery (e.g., "demo", "custom").

Response

A successful response.

Voice resource representing a voice configuration.

voiceId
string
read-only

Voice ID. SYSTEM voices use a simple name (e.g. Alex); IVC voices are workspace-prefixed ({workspace}__{voice}).

langCode
enum<string>

Primary language of the voice in upper-snake format (e.g. EN_US). Note that when filtering via lang_code, you can pass BCP-47 (en-US), underscore form (en_US), or a language prefix (en) — but the response always returns upper-snake.

Available options:
EN_US,
ZH_CN,
KO_KR,
JA_JP,
RU_RU,
AUTO,
IT_IT,
ES_ES,
PT_BR,
DE_DE,
FR_FR,
AR_SA,
PL_PL,
NL_NL,
HI_IN,
HE_IL
displayName
string

The human-readable name shown anywhere the voice is listed or selected.

description
string

Longer blurb that explains the voice's tone, accent, use cases, or other relevant attributes.

tags
string[]

Free-form labels for filtering, grouping, and discovery (e.g. british, calm).

name
string

Resource name. Format: workspaces/{workspace}/voices/{voice}.

source
enum<string>

Origin of the voice:

  • SYSTEM: Built-in voice provided by Inworld, visible to all workspaces.
  • IVC: Voice cloned from audio or created via Voice Design — owned by your workspace only.
  • PVC: Professional Voice Clone.
Available options:
SYSTEM,
IVC,
PVC
gender
enum<string>

Voice gender (male, female, neutral). Empty string if unspecified. Voices with no gender are excluded when filtering with an explicit gender = predicate.

Available options:
male,
female,
neutral,
ageGroup
enum<string>

Age group of the voice (young, middle_aged, elderly). Empty string if unspecified.

Available options:
young,
middle_aged,
elderly,
categories
enum<string>[]

Use-case categories the voice belongs to. Filterable with the : (has) operator.

Supported values: companions, enterprise, education_training, developer_assistants, healthcare, interactive_media.

Available options:
companions,
enterprise,
education_training,
developer_assistants,
healthcare,
interactive_media
promptLanguages
string[]

Languages the voice can handle, in BCP-47 format (e.g. en-US). May differ from langCode for multilingual voices.