curl --request POST \
"https://api.inworld.ai/pronunciations/v1/workspaces/${INWORLD_WORKSPACE_ID}/pronunciationDictionaries" \
--header "Authorization: Basic ${INWORLD_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"displayName": "Product names",
"pronunciations": [
{
"displayHeadword": "Hello",
"languageCode": "en-US",
"phoneSymbols": ["h", "ə", "l", "oʊ"]
}
]
}'import os
import requests
workspace_id = os.environ["INWORLD_WORKSPACE_ID"]
url = (
"https://api.inworld.ai/pronunciations/v1/"
f"workspaces/{workspace_id}/pronunciationDictionaries"
)
response = requests.post(
url,
headers={"Authorization": f"Basic {os.environ['INWORLD_API_KEY']}"},
json={
"displayName": "Product names",
"pronunciations": [
{
"displayHeadword": "Hello",
"languageCode": "en-US",
"phoneSymbols": ["h", "ə", "l", "oʊ"],
}
],
},
)
response.raise_for_status()
print(response.json())const workspaceId = process.env.INWORLD_WORKSPACE_ID;
const url = `https://api.inworld.ai/pronunciations/v1/workspaces/${workspaceId}/pronunciationDictionaries`;
const response = await fetch(url, {
method: 'POST',
headers: {
Authorization: `Basic ${process.env.INWORLD_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
displayName: 'Product names',
pronunciations: [
{
displayHeadword: 'Hello',
languageCode: 'en-US',
phoneSymbols: ['h', 'ə', 'l', 'oʊ'],
},
],
}),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());{
"name": "workspaces/my-workspace/pronunciationDictionaries/2d470a1e-0262-4f22-9b46-5353d454d988",
"displayName": "Product names",
"pronunciations": [
{
"displayHeadword": "Hello",
"languageCode": "en-US",
"phoneSymbols": [
"h",
"ə",
"l",
"oʊ"
]
},
{
"displayHeadword": "World",
"languageCode": "en-US",
"phoneSymbols": [
"w",
"ɜː",
"l",
"d"
]
}
],
"etag": "tLKwUsvfq4TjPZQYhA9Dg3pM",
"createTime": "2026-08-14T18:22:31.145Z",
"updateTime": "2026-08-14T18:22:31.145Z"
}{
"code": 123,
"message": "<string>",
"details": [
{
"@type": "<string>"
}
]
}Create a pronunciation dictionary
Create a named pronunciation dictionary and validate its complete contents atomically.
curl --request POST \
"https://api.inworld.ai/pronunciations/v1/workspaces/${INWORLD_WORKSPACE_ID}/pronunciationDictionaries" \
--header "Authorization: Basic ${INWORLD_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"displayName": "Product names",
"pronunciations": [
{
"displayHeadword": "Hello",
"languageCode": "en-US",
"phoneSymbols": ["h", "ə", "l", "oʊ"]
}
]
}'import os
import requests
workspace_id = os.environ["INWORLD_WORKSPACE_ID"]
url = (
"https://api.inworld.ai/pronunciations/v1/"
f"workspaces/{workspace_id}/pronunciationDictionaries"
)
response = requests.post(
url,
headers={"Authorization": f"Basic {os.environ['INWORLD_API_KEY']}"},
json={
"displayName": "Product names",
"pronunciations": [
{
"displayHeadword": "Hello",
"languageCode": "en-US",
"phoneSymbols": ["h", "ə", "l", "oʊ"],
}
],
},
)
response.raise_for_status()
print(response.json())const workspaceId = process.env.INWORLD_WORKSPACE_ID;
const url = `https://api.inworld.ai/pronunciations/v1/workspaces/${workspaceId}/pronunciationDictionaries`;
const response = await fetch(url, {
method: 'POST',
headers: {
Authorization: `Basic ${process.env.INWORLD_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
displayName: 'Product names',
pronunciations: [
{
displayHeadword: 'Hello',
languageCode: 'en-US',
phoneSymbols: ['h', 'ə', 'l', 'oʊ'],
},
],
}),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());{
"name": "workspaces/my-workspace/pronunciationDictionaries/2d470a1e-0262-4f22-9b46-5353d454d988",
"displayName": "Product names",
"pronunciations": [
{
"displayHeadword": "Hello",
"languageCode": "en-US",
"phoneSymbols": [
"h",
"ə",
"l",
"oʊ"
]
},
{
"displayHeadword": "World",
"languageCode": "en-US",
"phoneSymbols": [
"w",
"ɜː",
"l",
"d"
]
}
],
"etag": "tLKwUsvfq4TjPZQYhA9Dg3pM",
"createTime": "2026-08-14T18:22:31.145Z",
"updateTime": "2026-08-14T18:22:31.145Z"
}{
"code": 123,
"message": "<string>",
"details": [
{
"@type": "<string>"
}
]
}name as the stable resource identifier and the returned etag for subsequent updates or deletion.Authorizations
Your authentication 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.
Path Parameters
ID of the workspace that owns the dictionary. It must match a workspace accessible to the API key.
1 - 61^[a-z0-9_-]+$"my-workspace"
Body
Non-blank human-readable dictionary name, containing at most 64 Unicode code points.
1 - 64"Product names"
Complete dictionary contents. A dictionary can contain up to 1,000 entries and must remain within the 512 KiB encoded dictionary limit. Entries must be unique after language-aware lexical canonicalization.
1000Show child attributes
Show child attributes
Response
The dictionary was created.
A workspace-owned named pronunciation dictionary with its complete contents.
Service-assigned resource name in the form workspaces/{workspace}/pronunciationDictionaries/{uuid}.
"workspaces/my-workspace/pronunciationDictionaries/2d470a1e-0262-4f22-9b46-5353d454d988"
Non-blank human-readable dictionary name, containing at most 64 Unicode code points.
1 - 64"Product names"
Complete dictionary contents. A dictionary can contain up to 1,000 entries and must remain within the 512 KiB encoded dictionary limit. Entries must be unique after language-aware lexical canonicalization.
1000Show child attributes
Show child attributes
Optimistic-concurrency token. Include the current value when updating or deleting the dictionary.
Time at which the dictionary was created.
Time at which the dictionary's metadata or contents last changed.