Developer hub

Everything you can call, one table, and the guides that use each part. Plain HTTP and JSON; no package required.

Basics

  • Base URL: https://speakvora.com/api/v1
  • Auth: header x-api-key: YOUR_KEY (or Authorization: Bearer). Keep it on a server.
  • Format: JSON in, JSON out. Speech replies carry a url to the audio.
  • Limits: 500 characters per speak request; 15 requests per second free (100 paid); 20 brand-new sentences per minute free (120 paid).
  • Clients: single-file helpers at /sdk/speakvora.js and /sdk/speakvora.py. Packages are on the way.

Endpoints

MethodPathAuthWhat it does
GET/v1/voicesnoneList voices, tiers, languages and whether each is live
GET/v1/languagesnoneLanguages with clip counts and review status
GET/v1/search?q=&lang=&limit=keySearch the checked phrase library
POST/v1/speakkeySpeak text with a catalog voice or your own cv_ voice
POST/v1/preparekeyGet up to 200 sentences ready ahead of time (not billed)
POST/v1/listenkeyTranscribe an audio file
GET/v1/packsnoneList industry packs (new packs are coming)
GET/v1/packs/{id}/downloadkeyA signed link to a purchased pack
POST/v1/agents/{id}/turn | sessions | interruptagent key or tokenVoice agents (beta)
POST/api/mcpkey for toolsMCP server: speak, list_voices, search_phrases
WebSocketsee docskey in first frameLive transcription, streamed speech, agent turns

Full schema: OpenAPI · reference · llms.txt.

Guides by job

Add speech to a web app

A server route that speaks text and a page that plays it, without exposing your API key.

Combine reusable phrases with live speech

Search the library first, speak a library line instantly, and fall back to live generation for everything else.

Use your own voice through the API

Create a voice in the portal, wait until it is ready, and speak with its cv_ id.

Build an interruptible voice agent (beta)

Create an agent in the portal, mint a browser token on your server, and report what was actually played when a caller interrupts.

Transcribe an audio file with the API

Send a recording as base64, get text and the billed seconds back, and handle the size limit and errors.

Stream live transcription over a WebSocket

Authenticate, stream 16 kHz PCM audio in short frames, and read final text shortly after speech stops.

Connect the Speakvora MCP server to Claude Code and Cursor

Add the remote server, pass your key as a header, and let an assistant speak text and search the phrase library.

Handle errors, retries and rate limits

Every error has a code and a fix. Which to retry, how long to wait, and a retry helper that respects retry_after_seconds.

Store and reuse generated audio without paying twice

Which links last, which expire, and a pattern that fetches an audio link once and serves your own copy.

Use your own voice in your apps

Make the voice once in the portal, then speak with it from a web app, a mobile app or a kiosk without exposing your key.

Speak text in a Next.js app with a route handler

A server route handler that calls the speech API with your key, plus a client button that plays the returned link.

Add a speech endpoint to a FastAPI service

A FastAPI route that validates text, calls the speech API and returns the audio link, with the errors mapped to useful status codes.

Prepare prompts ahead of time so they play instantly

Send up to 200 sentences per call to /v1/prepare, then speak them later without waiting for generation.

Test your speech integration without spending quota

Mock the API in unit tests, and run one tiny live smoke test that reads the key from the environment and never prints it.

Understand the product

How generation works · How billing counts usage · Your own voice · Speech to text · Speed · Status