Developers / Text to Speech
List available voices
https://api.echonova.ai/v1/text-to-speech/voicesLists the EchoNova voice library. Send a voice's id as voiceId when you generate speech.
Headers
Bearer, a space, then your API key, which starts with ek_. Create keys in the portal under Developers, API Keys.
Response
200 application/json Every response uses this envelope.
The result.
The items on this page.
The value to send as voiceId.
Engine identifier, e.g. "ae_ahmed".
Human label, e.g. "Ahmed". Falls back to name when unset.
ar for Arabic voices, en for English voices.
The gender label, for example Male.
A link to a short audio sample of the voice, when one exists.
The total number of items.
true for a successful call.
Repeats the HTTP status.
null on success.
Errors
Same envelope, with success false and data null. All errors
When. The Authorization header is missing or is not Bearer ek_..., no key matches the token, or the key is deleted, disabled or its account is closed.
Fix. Send Authorization: Bearer ek_... with an enabled key from this environment.
When. The workspace that owns the key has no subscription.
Fix. Check the workspace's plan in the portal.
When. The subscription is in a state other than active or trial.
Fix. Renew the subscription.
When. The key is restricted and Text to Speech is not among its services.
Fix. Edit the key and grant Text to Speech, or use another key.
When. The key made more than 100 requests to one endpoint in 60 seconds, or one IP address made more than 100 requests to one endpoint in 60 seconds (the IP limit is counted before the key is checked, so it can answer with no key at all); a Retry-After header carries the seconds to wait.
Fix. Wait Retry-After seconds, then retry.
When. An error the API did not classify.
Fix. Check the request, then retry after a short wait; contact support if it persists.
When. A transient outage inside the API.
Fix. Retry after a short wait.
When. A transient timeout inside the API.
Fix. Retry after a short wait.
curl "https://api.echonova.ai/v1/text-to-speech/voices" \
-H "Authorization: Bearer YOUR_API_KEY"{
"data": {
"items": [
{
"id": "66e5ef3a9c1d2b4f8a7e6c01",
"name": "ae_ahmed",
"displayName": "Ahmed",
"language": "ar",
"gender": "Male",
"previewUrl": "https://storage.example.com/voices/ae_ahmed-preview.wav"
}
],
"total": 1
},
"success": true,
"statusCode": 200,
"errorMessage": null
}