Patchwork-Connection if you route by connection. Provider keys are ours; the browser only ships and plays audio.
If the workspace’s API has no voice provider configured, every endpoint here returns 503 voice_unavailable. That is a normal deployment state, not a fault.
Transcribe
POST /v1/voice/transcribe
multipart/form-data, not JSON.
file
required
The recorded utterance.
string
Optional hint. Detected when omitted.
string
required
The transcript. Empty for a silent take.
number
Provider confidence, when it reports one.
Speak
POST /v1/voice/speak
string
required
What to say.
string
default:"markdown"
What the text is, not what comes back.
markdown is rendered into something worth hearing before synthesis; plain is spoken as given. Anything else is 422 voice_invalid_format.string
A voice from
GET /v1/voice/voices. The platform default applies when omitted.string
Optional language hint.
Content-Type is whatever the provider produced.
Patchwork-Voice-Cache: hit | miss says whether the clip was served from cache, so repeated playback of the same reply costs nothing.
Text that renders to nothing — markdown that was all formatting, say — is 422 voice_empty_text.
Voices
GET /v1/voice/voices
string
required
Pass as
voice_id to Speak.string
required
Display name for a picker.
string
Provider grouping.
string
A sample clip, for auditioning inside the picker.
Errors
Endpoints
Each has its own page in the sidebar, generated from the spec:POST /v1/voice/transcribe— audio in, text outPOST /v1/voice/speak— text in, audio outGET /v1/voice/voices— available voices