Create speech
Generate speech from text in one of this account's voice profiles. Returns immediately with a generation id and status "generating" — poll GET /v1/generations/{id} to retrieve the audio URL once it completes. Send an Idempotency-Key header to make a retried request safe: the same key with the same body replays the original response instead of generating a second time. Requires the `voice:generate` scope.
Generate speech from text in one of this account's voice profiles. Returns immediately with a generation id and status "generating" — poll GET /v1/generations/{id} to retrieve the audio URL once it completes. Send an Idempotency-Key header to make a retried request safe: the same key with the same body replays the original response instead of generating a second time.
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
Header Parameters
An optional client-generated key that makes a retry safe. Replaying the same key with the same body returns the ORIGINAL response byte-for-byte instead of doing the work a second time; replaying it with a different body is refused with idempotency_key_reused.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
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
application/problem+json
application/problem+json
curl -X POST "https://example.com/v1/speech" \ -H "Content-Type: application/json" \ -d '{ "text": "string" }'{ "id": "string", "status": "string", "voice": "string"}API Reference
The VoiceLabs /v1 REST API, operation by operation — generated from the published OpenAPI 3.1 document, with a request builder on every page.
Create speech (OpenAI-compatible) POST
The OpenAI `POST /v1/audio/speech` contract, served by VoiceLabs. Point any OpenAI SDK at `https://app.voicelabs.now/v1` as its base URL and pass a VoiceLabs API key as the API key — no other change is needed. Unlike `POST /v1/speech` this endpoint is SYNCHRONOUS: it holds the response open until the audio is ready and returns the bytes, because that is the contract an OpenAI client is written against. Every parameter VoiceLabs cannot honour is refused with a 400 naming it rather than accepted and ignored. Errors on this endpoint use OpenAI's `{"error": {...}}` envelope instead of the RFC 9457 problem document the rest of /v1 returns, so an OpenAI SDK raises a typed exception with a readable message; the `code` member still carries this API's own stable error token. Requires the `voice:generate` scope.