# Build with .wave.

APIs for real-time speech: hold a full-duplex voice conversation with a model, or transcribe live audio as people speak.

[Create an account](https://api.dotwave.ai/auth/signup) · [Read the quickstart](https://dotwave.ai/docs/quickstart/)

> **Public beta.** The API and its events may change before general availability. A session can be refused when capacity is reached, with a 503 `unavailable` error or close code `4429`: retry after a short wait. Service can be interrupted during the beta, and introductory prices may change. Test with audio like yours, keep a fallback for anything critical, and report problems to [info@dotwave.ai](mailto:info@dotwave.ai).

## Choose the API

Choose by what you need back, speech or text, and by the client you use.

- [Live API](https://dotwave.ai/docs/live/) (Speech to speech · full duplex): Hold a spoken conversation with a model that listens while it speaks. Stream audio in, and receive its speech and transcripts of both sides in the same session. Socket: `wss://api.dotwave.ai/v1/live/sessions`. Works with: Any WebSocket client.
- [Realtime API](https://dotwave.ai/docs/realtime/) (Speech to text · OpenAI Realtime format): Transcribe live audio as people speak, with OpenAI’s Realtime transcription events. The OpenAI SDK connects by changing its base URL. Socket: `wss://api.dotwave.ai/v1/realtime`. Works with: The OpenAI SDK for Python and TypeScript.
- [Deepgram-compatible API](https://dotwave.ai/docs/deepgram/) (Speech to text · Deepgram format): Transcribe live audio with clients built for Deepgram’s live transcription API. The Deepgram plugins of LiveKit Agents and Pipecat connect by changing their base URL. Socket: `wss://api.dotwave.ai/v1/listen`. Works with: LiveKit Agents and Pipecat.

Each model’s page in [Models](https://dotwave.ai/docs/models/) names the API that serves it.

## Base URLs

- **REST**: `https://api.dotwave.ai/v1`: client secrets, models, sessions, usage and your project. See the [API reference](https://dotwave.ai/docs/api/).
- **Live API**: `wss://api.dotwave.ai/v1/live/sessions`
- **Realtime API**: `wss://api.dotwave.ai/v1/realtime`
- **Deepgram-compatible API**: `wss://api.dotwave.ai/v1/listen`

Authenticate with your API key from your server, or with a short-lived client secret from a browser. See [Authentication](https://dotwave.ai/docs/authentication/).

## Start building

1. **Create an account**: Your API key is shown once after [signup](https://api.dotwave.ai/auth/signup). New accounts start with free credits, no card required.
2. **Make a first call**: The [quickstart](https://dotwave.ai/docs/quickstart/) checks your key and runs a first session with each API.
3. **Prepare for production**: Handle [errors and retries](https://dotwave.ai/docs/errors/), and check [pricing and limits](https://dotwave.ai/docs/pricing-and-limits/).

## Connection handling

- **Capacity**: If a request returns `Retry-After`, wait before trying again. Start sending audio only after the session connects.
- **Audio timing**: Send microphone audio as it is captured. Stream recorded audio at playback speed, not as a single upload.
- **Reconnects**: After an interruption, open a new session and let the user know. Do not resend audio from the previous session.
- **API keys**: Keep API keys on your server. For a browser client, create a short-lived client secret on the server.

## Guides

- [Python](https://dotwave.ai/docs/guides/python/) (Live API): Stream microphone audio and play the model’s speech from an async event loop.
- [TypeScript](https://dotwave.ai/docs/guides/typescript/) (Live API): Connect from a server, send PCM, and handle audio and transcript events.
- [OpenAI SDK](https://dotwave.ai/docs/guides/openai-sdk/) (Realtime API): Transcribe with the OpenAI SDK for Python or TypeScript, with only its base URL changed.
- [LiveKit Agents and Pipecat](https://dotwave.ai/docs/deepgram/plugins/) (Deepgram-compatible API): Point the frameworks’ Deepgram speech-to-text plugins at .wave.
