Get or regenerate a verification phrase
curl --request POST \
--url https://apistable.ai/api/v1/voices/verification_phrase \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"voice_upload_task_id": "<string>",
"language": "en"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({voice_upload_task_id: '<string>', language: 'en'})
};
fetch('https://apistable.ai/api/v1/voices/verification_phrase', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://apistable.ai/api/v1/voices/verification_phrase"
payload = {
"voice_upload_task_id": "<string>",
"language": "en"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"code": 200,
"msg": "<string>",
"data": {
"phrase_id": "<string>",
"phrase_text": "<string>",
"language": "<string>",
"expires_at": null
}
}Suno
Get verification phrase
Choose a language or regenerate a phrase.
POST
/
api
/
v1
/
voices
/
verification_phrase
Get or regenerate a verification phrase
curl --request POST \
--url https://apistable.ai/api/v1/voices/verification_phrase \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"voice_upload_task_id": "<string>",
"language": "en"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({voice_upload_task_id: '<string>', language: 'en'})
};
fetch('https://apistable.ai/api/v1/voices/verification_phrase', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://apistable.ai/api/v1/voices/verification_phrase"
payload = {
"voice_upload_task_id": "<string>",
"language": "en"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"code": 200,
"msg": "<string>",
"data": {
"phrase_id": "<string>",
"phrase_text": "<string>",
"language": "<string>",
"expires_at": null
}
}Operations are enabled individually by server configuration. Disabled operations return 503 without a task. Music credit deduction is currently disabled.
Input
First complete suno_voice_upload and wait for ready:true. Pass its voice_upload_task_id. Languages: en, zh, es, fr, pt, de, ja, ko, hi, ru; default en. This endpoint issues a phrase synchronously; it does not create a generation task.{
"voice_upload_task_id": "APIstable upload task ID",
"language": "en"
}
Output
expires_at:null does not mean unlimited validity. The phrase is tied to a sample session that expires 24 hours after successful preparation; the provider may expire the phrase earlier. After the session expires, upload a new sample. HTTP 404/409/410 identify missing, incompatible or expired resources; provider failures return 503 and malformed replies 502.{
"code": 200,
"msg": "success",
"data": {
"phrase_id": "APIstable phrase ID",
"phrase_text": "Read the returned phrase in your own voice.",
"language": "en",
"expires_at": null
}
}
Authorizations
Every valid key can submit and query its own account. Revoked keys are rejected.
Body
application/json