# tts-cache-router > tts-cache-router is a text-to-speech router for voice agents. It splits each reply into sentences, plays every sentence your org has synthesized before from a per-org cache, and sends the rest to your provider (Sarvam, Raya, ElevenLabs, OpenAI, Deepgram, xAI, Soniox, Smallest AI or Cartesia) with your own provider key, so repeated sentences cost nothing at the provider. The audio is the provider's own, never re-encoded. Connect with the LiveKit Agents plugin (`livekit-plugins-tts-cache-router`), the Pipecat service (`pipecat-tts-cache-router`), an OpenAI-shaped `POST /v1/audio/speech`, the `/v1/stream` WebSocket, or drop-in mirrors of each provider's own API that keep the provider's SDK. Authenticate with a `tcr_` API key from the dashboard, and store your provider keys there. - API base URL: `https://api.ttscacherouter.dev` (WebSocket `wss://api.ttscacherouter.dev`) - Dashboard (API keys, provider keys, usage): https://ttscacherouter.dev/dashboard - Every page in one file: https://docs.ttscacherouter.dev/llms-full.txt Where to start: - A LiveKit agent: [The LiveKit plugin](https://docs.ttscacherouter.dev/livekit.md), then your provider's page under LiveKit Agents. - A Pipecat bot: [The Pipecat service](https://docs.ttscacherouter.dev/pipecat.md). - Speech over HTTP from any language: [/v1/audio/speech](https://docs.ttscacherouter.dev/clients/speech.md). - Voice ids for a provider: [Voices](https://docs.ttscacherouter.dev/reference/voices.md); models, languages and options: [Models and options](https://docs.ttscacherouter.dev/reference/models.md). - Code that already calls a provider's API: that provider's drop-in under Other clients. ## Get started - [Overview](https://docs.ttscacherouter.dev/index.md): How the router serves each sentence from your cache or your provider, what it caches, and the ways to connect. - [Quickstart](https://docs.ttscacherouter.dev/quickstart.md): Sign up, store your provider key, and hear a sentence through the router: once from the provider, then from the cache. ## LiveKit Agents - [The LiveKit plugin](https://docs.ttscacherouter.dev/livekit.md): livekit-plugins-tts-cache-router: install it, construct TTS, change settings mid-session, and what it reports. - [Sarvam with LiveKit](https://docs.ttscacherouter.dev/livekit/sarvam.md): Sarvam Bulbul in a LiveKit agent: through our plugin, or through LiveKit's Sarvam plugin with a changed URL. - [Raya with LiveKit](https://docs.ttscacherouter.dev/livekit/raya.md): Raya Bakbak in a LiveKit agent: through our plugin, or through Raya's LiveKit plugin with a changed URL. - [ElevenLabs with LiveKit](https://docs.ttscacherouter.dev/livekit/elevenlabs.md): ElevenLabs in a LiveKit agent: through our plugin, or through LiveKit's ElevenLabs plugin with a changed URL. - [OpenAI with LiveKit](https://docs.ttscacherouter.dev/livekit/openai.md): OpenAI in a LiveKit agent: through our plugin, or through LiveKit's OpenAI plugin with a changed URL. - [Deepgram with LiveKit](https://docs.ttscacherouter.dev/livekit/deepgram.md): Deepgram's Aura and Flux in a LiveKit agent: through our plugin, or through LiveKit's Deepgram plugin with a changed URL. - [xAI with LiveKit](https://docs.ttscacherouter.dev/livekit/xai.md): xAI in a LiveKit agent: through our plugin, or through LiveKit's xAI plugin pointed at the router. - [Soniox with LiveKit](https://docs.ttscacherouter.dev/livekit/soniox.md): Soniox in a LiveKit agent: through our plugin, or through LiveKit's Soniox plugin with a changed URL. - [Smallest AI with LiveKit](https://docs.ttscacherouter.dev/livekit/smallestai.md): Smallest AI in a LiveKit agent: through our plugin, or through LiveKit's Smallest AI plugin with changed URLs. - [Cartesia with LiveKit](https://docs.ttscacherouter.dev/livekit/cartesia.md): Cartesia in a LiveKit agent: through our plugin, or through LiveKit's Cartesia plugin with a changed URL. ## Pipecat - [The Pipecat service](https://docs.ttscacherouter.dev/pipecat.md): pipecat-tts-cache-router: install it, construct TTSCacheRouterTTSService, change settings mid-session, and what it reports. ## Other clients - [/v1/audio/speech](https://docs.ttscacherouter.dev/clients/speech.md): Speech over HTTP, shaped like OpenAI's audio/speech: the OpenAI SDK works with the base URL and key changed. - [WebSocket protocol](https://docs.ttscacherouter.dev/clients/stream.md): /v1/stream, the protocol the LiveKit plugin speaks: stream text in, sentences and audio out, from any language. - [Sarvam API drop-in](https://docs.ttscacherouter.dev/clients/sarvam.md): Sarvam's own REST, HTTP stream and WebSocket APIs through the cache: keep the Sarvam SDK, change the URL and key. - [Raya API drop-in](https://docs.ttscacherouter.dev/clients/raya.md): Raya's own REST, SSE and voices APIs through the cache: keep your Raya client, change the URL and key. - [ElevenLabs API drop-in](https://docs.ttscacherouter.dev/clients/elevenlabs.md): ElevenLabs' own WebSockets, REST and voices APIs through the cache: keep the ElevenLabs SDK, change the URL and key. - [OpenAI API drop-in](https://docs.ttscacherouter.dev/clients/openai.md): OpenAI's own speech API through the cache: keep the OpenAI SDK, change the base URL and key. - [Deepgram API drop-in](https://docs.ttscacherouter.dev/clients/deepgram.md): Deepgram's own speak APIs, Aura and Flux, through the cache: keep the Deepgram SDK, change the base URL and key. - [xAI API drop-in](https://docs.ttscacherouter.dev/clients/xai.md): xAI's own text-to-speech API, REST and WebSocket, through the cache: change the base URL and key. - [Soniox API drop-in](https://docs.ttscacherouter.dev/clients/soniox.md): Soniox's own text-to-speech API, REST and real-time WebSocket, through the cache: keep Soniox's SDK, change the base URLs and key. - [Smallest AI API drop-in](https://docs.ttscacherouter.dev/clients/smallestai.md): Smallest AI's own text-to-speech API, REST, SSE and WebSocket, through the cache: keep Smallest AI's SDK, change the base URLs and key. - [Cartesia API drop-in](https://docs.ttscacherouter.dev/clients/cartesia.md): Cartesia's own text-to-speech API, bytes, SSE and WebSocket, through the cache: keep Cartesia's SDK, change the base URL and key. ## Reference - [Authentication](https://docs.ttscacherouter.dev/reference/authentication.md): API keys, where each surface takes them, and what a missing or wrong key gets back. - [Models, voices and formats](https://docs.ttscacherouter.dev/reference/models.md): Every provider, model, voice, language, sample rate, format and option the router accepts. - [Voices](https://docs.ttscacherouter.dev/reference/voices.md): GET /v1/voices: every voice your org can speak with at a provider, your account's own included, in one shape. - [Errors](https://docs.ttscacherouter.dev/reference/errors.md): The router's error codes, what each means, whether to retry, and how each surface reports them. - [Limits](https://docs.ttscacherouter.dev/reference/limits.md): Sizes and timeouts the router enforces, and the limits that come from your provider plan. - [REST API](https://docs.ttscacherouter.dev/reference/api.md): Every HTTP endpoint, from the router's OpenAPI document. ## Account - [The dashboard](https://docs.ttscacherouter.dev/dashboard.md): Connect, usage, billing, API keys, provider keys, members and roles, retention and your account. - [Pricing and billing](https://docs.ttscacherouter.dev/pricing.md): What the router charges for, the free credit, buying more, refunds, and what happens at zero. - [Security and data handling](https://docs.ttscacherouter.dev/security.md): How keys are stored, what the cache holds, what is logged, and where data lives. ## Optional - [OpenAPI document](https://api.ttscacherouter.dev/openapi.json): the HTTP API as OpenAPI 3.1, served by the API.