> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getdial.ai/_mcp/server. # Self-hosted audio protocol ## Docs - [Self-hosted audio protocol](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/overview.md): The WebSocket protocol your server speaks in Self-Hosted audio mode — Dial pipes the raw call audio to you, full duplex, and your stack does the rest. - [media](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/media.md): Audio frames, both directions — caller audio to your server, agent audio back to the caller. - [ping_pong](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/ping-pong.md): Keepalive between Dial and your server — Dial pings, you echo it back. - [call_connected](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/call-connected.md): Sent when Dial connects to your server — on every connection, including mid-call reconnects. - [dtmf](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/dtmf.md): A keypad digit the caller pressed. - [duration_warning](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/duration-warning.md): The call is approaching its maximum-duration cap — wrap up before Dial ends it. - [mark & clear](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/playback-control.md): Playback checkpoints and barge-in — how your server tracks and interrupts what the caller is hearing. - [end_call & call_ended](https://docs.getdial.ai/api-reference/self-hosted-audio-protocol/ending-calls.md): Hanging up from your side, and how Dial tells you the call is over.