Evom Labs API Reference

Developer platform

Voice enrollment

Creates a voice from an audio sample and returns its voice key. The account key authorises the call; the new voice key is returned once, in plaintext.

POST/api/v1/voices
On this page

Code examples

curl -X POST https://studio.evomlabs.com/api/v1/voices \
  -H "Authorization: Bearer vc_ak_live_YOUR_KEY" \
  -F "file=@sample.wav" \
  -F "name=Authorized sample voice" \
  -F "gender=female" \
  -F "consent=true"

Authorization

Bearer credential

Send the credential in the Authorization header. Account and voice keys are accepted only where the endpoint contract permits them.

Request

FieldTypeRequiredDefaultDescription
filefileYes-Audio file, up to 10 MiB.
namestringYes-Voice name, not empty, up to 64 characters.
consentstringYes-Must be true. Confirms the speaker authorised the clone.
descriptionstringNo-Free-text note stored with the voice.
genderstringNofemaleOne of male, female or other.

Consent is required

Enrollment is only for a voice whose speaker authorised the clone. The consent field records that authorisation and the request fails without it.

Response

JSON
{
  "ok": true,
  "data": {
    "voice_id": "voice_id",
    "name": "Authorized sample voice",
    "status": "ready",
    "deduped": false,
    "gender": "female",
    "description": "",
    "file_name": "sample.wav",
    "file_size": 482310,
    "created_at": "2026-08-03T00:00:00.000Z",
    "key_status": "created",
    "api_key": {
      "key": "vc_sk_live_NEW_KEY",
      "last_four": "ABCD",
      "scopes": ["tts.generate", "tts.stream", "usage.read"]
    }
  }
}

Errors

REST failures use the documented error envelope. Handle the error code instead of matching the human-readable message.

Error codes

Was this page helpful?

Evom Labs API documentation