Skip to main content
geko is a plain JSON + 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 URL

Authentication

POST /v1/tts, POST /v1/tts/stream, and POST /v1/audio/speech require a bearer token:
The GET catalog endpoints (/v1/models, /v1/voices, /health) 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 WAVaudio/wav, 24 kHz, 16-bit PCM, mono. The X-Tokay-Chars response header reports the billed character count.
  • JSON in. Send Content-Type: application/json.
  • Streaming. POST /v1/tts/stream returns application/octet-stream framed as wav-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/speech accepts OpenAI’s request shape — see OpenAI compatibility.

Endpoints

POST /v1/tts

Synthesize text → WAV.

POST /v1/tts/stream

Sentence-by-sentence streaming.

POST /v1/audio/speech

OpenAI-compatible alias.

GET /v1/voices

The voice catalog (open).

Errors

Errors come back as JSON with a detail string and the matching HTTP status:
See Errors & retries for the SDK’s error types and retry behavior.