audio/wav API — call it from any language. Each endpoint has its own page with request/response schemas and a Try it playground you can run right here in the docs (the catalog endpoints work without a key).
Base URLs
Text-to-speech and speech-to-text are two separately scaled GPU services, so they answer on two hosts:The SDK hides this split — one client, one key, and
geko.tts.* / geko.stt.* route to the right host. You only need the table above when calling raw HTTP. Each endpoint page below is pinned to its correct host, so the playgrounds work as-is.Authentication
Every billable endpoint takes a bearer token — the same key on both hosts:
The
GET catalog endpoints are open — no key — so docs, playgrounds, and voice pickers render without one. Create keys in the console; see Authentication for handling them safely.
Conventions
- Audio out. Synthesis returns raw WAV —
audio/wav, 24 kHz, 16-bit PCM, mono. TheX-Tokay-Charsresponse header reports the billed character count. - Audio in. Transcription takes raw bytes as
application/octet-streamwith anx-filenameheader, or a?url=query param the server fetches. Responses report billing inX-Seta-Audio-SecondsandX-Seta-Credits. - JSON in. Synthesis sends
Content-Type: application/json. - Streaming.
POST /v1/tts/streamreturnsapplication/octet-streamframed aswav-frames-v1: a 4-byte big-endian length, then that many bytes of one complete WAV, repeated. See the streaming guide. - OpenAI-compatible.
POST /v1/audio/speechaccepts OpenAI’s speech shape (details);POST /v1/audio/transcriptionsaccepts OpenAI’s transcription shape (details).
Endpoints
POST /v1/tts
Synthesize text → WAV.
POST /v1/tts/stream
Sentence-by-sentence streaming.
POST /v1/transcribe
Transcribe audio → text.
POST /v1/audio/transcriptions
OpenAI-compatible transcription.
POST /v1/audio/speech
OpenAI-compatible synthesis.
GET /v1/voices
The voice catalog (open).
Errors
Errors come back as JSON with adetail string and the matching HTTP status:
See Errors & retries for the SDK’s error types and retry behavior.