curl --location --request PATCH 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/projects/ip_.../draft' \
--header 'accessKey: <your_api_key>' \
--header 'Content-Type: application/json' \
--data '{
"expectedVersion": 1,
"sourceLanguage": "en",
"targetLanguages": ["es", "fr"],
"keyterms": ["MyVocal"],
"cloningStrength": 7
}'
{
"code": 1,
"message": "success",
"data": {
"projectId": "ip_...",
"settingsVersion": 2,
"state": "DRAFT",
"sourceLanguage": "en",
"keyterms": ["MyVocal"],
"cloningStrength": 7,
"targetLanguages": ["es", "fr"],
"sourceDurationMs": "0",
"sourceState": "DRAFT",
"requestId": "..."
}
}
Interpretation
Patch the interpretation draft
Update the source language, keyterms, cloning strength and target languages of a draft.
PATCH
/
sound_clone
/
api
/
v1
/
interpretation
/
projects
/
{projectId}
/
draft
curl --location --request PATCH 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/projects/ip_.../draft' \
--header 'accessKey: <your_api_key>' \
--header 'Content-Type: application/json' \
--data '{
"expectedVersion": 1,
"sourceLanguage": "en",
"targetLanguages": ["es", "fr"],
"keyterms": ["MyVocal"],
"cloningStrength": 7
}'
{
"code": 1,
"message": "success",
"data": {
"projectId": "ip_...",
"settingsVersion": 2,
"state": "DRAFT",
"sourceLanguage": "en",
"keyterms": ["MyVocal"],
"cloningStrength": 7,
"targetLanguages": ["es", "fr"],
"sourceDurationMs": "0",
"sourceState": "DRAFT",
"requestId": "..."
}
}
Updates only the fields you provide. This is a patch, not a replace.
Header
string
required
API key for authentication.
Path
string
required
The project identifier.
Body
number
Optional concurrency guard. If present and different from the current version, the request is rejected with
47116.string | null
null, an empty string or AUTO normalizes to automatic detection. Omitting the field keeps the stored value — it does not clear it.array
Replaces the whole list when provided. Up to 1000 entries; each up to 50 code points, up to 5 words, and without
< > { } [ ] \. An empty array clears the list.number
0–10. When omitted or null, the stored value is kept; 7 is only used as a fallback when the draft has no value at all.array
Replaces the whole list when provided. An empty array clears the selection.
Response
string
Project identifier.
number
The new draft version.
string
The project state.
string | null
The stored source language, or
null for auto-detection.array
The stored keyterms.
number | null
The stored cloning strength.
array
The stored target languages.
string
Source duration as a string (
"0" before a source is uploaded).string
The source state:
DRAFT, FROZEN or SUPERSEDED.curl --location --request PATCH 'https://api.myvocal.ai/sound_clone/api/v1/interpretation/projects/ip_.../draft' \
--header 'accessKey: <your_api_key>' \
--header 'Content-Type: application/json' \
--data '{
"expectedVersion": 1,
"sourceLanguage": "en",
"targetLanguages": ["es", "fr"],
"keyterms": ["MyVocal"],
"cloningStrength": 7
}'
{
"code": 1,
"message": "success",
"data": {
"projectId": "ip_...",
"settingsVersion": 2,
"state": "DRAFT",
"sourceLanguage": "en",
"keyterms": ["MyVocal"],
"cloningStrength": 7,
"targetLanguages": ["es", "fr"],
"sourceDurationMs": "0",
"sourceState": "DRAFT",
"requestId": "..."
}
}
“Field omitted or
null” keeps the current value for sourceLanguage, keyterms, cloningStrength and targetLanguages; a provided array — including an empty one — replaces the whole list. Do not use null to clear a field.Common errors
code = 47116:expectedVersiondoes not match the current version.code = 47123: the draft is frozen because a source version was already committed; remove the source first.code = 47101: an invalid value, for example a keyterm that is too long or contains a forbidden character.code = 47102: the project does not exist or is not owned by your account.
