Ensure the default voice
Make sure this account has VoiceLabs' default built-in voice ("Heart", the Kokoro preset `af_heart`), creating it only if it is missing, and return it. Safe to call on every start: a second call returns the same voice with `created: false` and creates nothing. Use it when GET /v1/voices comes back empty, then pass the returned id as `voice_id` (POST /v1/speech) or `voice` (POST /v1/audio/speech). It adds a built-in voice only; it never clones anyone's voice. Requires the `voice:generate` scope.
Make sure this account has VoiceLabs' default built-in voice ("Heart", the Kokoro preset af_heart), creating it only if it is missing, and return it. Safe to call on every start: a second call returns the same voice with created: false and creates nothing. Use it when GET /v1/voices comes back empty, then pass the returned id as voice_id (POST /v1/speech) or voice (POST /v1/audio/speech). It adds a built-in voice only; it never clones anyone's voice.
Requires the voice:generate scope.
A VoiceLabs API key, sent in the x-api-key header. Keys begin with vl_sandbox_. This is the simplest way to authenticate and is what most callers should use.
Create one in the developer console at https://voicelabs.now/connections, on the API keys tab, choosing the scopes it carries. A key does exactly what its scopes allow: one without voice:generate is answered 403 insufficient_scope on the generation operations and cannot spend the account's allowance. The secret is shown once, at creation; revoking a key takes effect on its very next request.
In: header
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/v1/voices/default"{ "id": "string", "name": "string", "created": true, "voice_type": "string", "engine": "string", "language": "string"}Create a transcription POST
Transcribe a base64-encoded audio clip to text. Returns the transcript along with the id of the capture it created, which stays retrievable through GET /v1/captures. Send an Idempotency-Key header to make a retried request safe. Requires the `voice:generate` scope.
Clone a voice POST
Create a cloned voice on this account from a recording: a name, the language, the exact text spoken, and the audio either inline as base64 (`audio`) or as an https:// URL (`audio_url`). The recording must be 2–30 seconds of clear speech. Returns the new profile's id, name, voice type and engine; use the id as `voice_id` on POST /v1/speech. A duplicate name is refused, so send an Idempotency-Key header to make a retry safe. On the free plan the account keeps one saved cloned voice; Pro is unlimited. Only clone a voice whose owner has agreed to it. Requires the `voice:clone` scope.