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 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.
Both hosts serve a GET /v1/models, and they return different shapes. The TTS host lists synthesis models and their voices; the STT host lists transcription models with languages, code_switching, and credits_per_audio_second. The reference page below documents the TTS shape — for the STT one, use geko.stt.models().

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.
  • Audio in. Transcription takes raw bytes as application/octet-stream with an x-filename header, or a ?url= query param the server fetches. Responses report billing in X-Seta-Audio-Seconds and X-Seta-Credits.
  • JSON in. Synthesis sends 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 speech shape (details); POST /v1/audio/transcriptions accepts 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 a detail string and the matching HTTP status:
See Errors & retries for the SDK’s error types and retry behavior.