Realtime TTS-2 is live. Built for realtime conversation that feels human. Learn more

VoiceService

Publish a voice

Publishes a preview voice to your voice library.

POST/voices/v1/voices/{voiceId}:publish

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

Authorizationstringrequired

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. You can create a key in one command with the Inworld CLI: inworld workspace add-key.

Path Parameters

voiceIdstringrequired

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

Body

application/json

displayNamestring

The name of the voice shown in your voice library.

descriptionstring

Description of the voice.

tagsstring[]

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

Response

200 - application/json

voiceIdstring

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

langCodeenum<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_USZH_CNKO_KRJA_JPRU_RUAUTOIT_ITES_ESPT_BRDE_DEFR_FRAR_SAPL_PLNL_NLHI_INHE_IL

languageCodestring

Canonical wire form of the voice's primary language as a single string (e.g. en-US, es-MX, vi). Populated on every read alongside the legacy langCode enum. Immutable after creation.

displayNamestring

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

descriptionstring

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

tagsstring[]

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

namestring

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

sourceenum<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:SYSTEMIVCPVC

genderenum<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:malefemaleneutral

ageGroupenum<string>

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

Available options:youngmiddle_agedelderly

categoriesenum<string>[]

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

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

promptLanguagesstring[]

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