# PyAI - the best voice AI for telephony > PyAI is a developer platform for telephony-grade voice AI. Core models behind > one OpenAI-compatible API: Hear (speech-to-text), Speak (text-to-speech + voice > cloning), and Omni, the all-in-one voice agent model: a hybrid speech-to-speech > engine with a fused LLM brain, tool calling, knowledge-base grounding, and > emotion-aware voices, all over one WebSocket. ~390 ms median turn-taking, > per-minute pricing from $0.003/min, $50 in free credits, no card required. ## Start here - Get a free key: https://console.pyai.com - Docs (quickstart, guides, API reference): https://docs.pyai.com - OpenAPI spec (source of truth): https://api.pyai.com/openapi.json - Agent index (curated, kept in sync with production): https://api.pyai.com/llms.txt - SDKs: `npm install @pyai/sdk` (TypeScript) - `pip install pyai-sdk` (Python) ## Models - [Hear](https://pyai.com/hear): Speech-to-text, telephony-native (8 kHz), Whisper-compatible, streaming partials + async batch. `POST /v1/audio/transcriptions`. $0.003/min ($0.0015/min batch). - [Speak](https://pyai.com/speak): Text-to-speech, streaming first-byte ~32-98 ms, 36 stock voices, free voice cloning + design. `POST /v1/audio/speech`. $0.06/min. - [Omni](https://pyai.com/omni): The all-in-one voice agent model, hybrid speech-to-speech with a fused LLM brain. One socket does it all: hearing, reasoning, tool/function calling, knowledge-base grounding, emotion-aware voices, built-in call control (transfer, DTMF, hold, end-call), ~390 ms turn-taking, barge-in. `wss://api.pyai.com/v1/omni`. $0.05/min, all-in. Ships prebuilt hosted tools (search_knowledge, web_search, weather, currency, unit_convert, math, datetime, geocode, news) enabled by name; bring your own via a signed webhook. Guide: https://docs.pyai.com/guides/omni-tools. - [Cue](https://pyai.com/cue): Turn detection + grounded context for bring-your-own LLM/voice pipelines. $0.015/min. - [AMD](https://pyai.com/amd): Answering-machine detection (AMD API) that tells a dialer who/what answered (human, voicemail, IVR, iPhone/Google screening, dead number, fax) in a fraction of Twilio's dead-air dwell, with the reason. A one-line-TwiML Twilio Media Streams drop-in (`answered_by_twilio` maps to Twilio's enum). `wss://api.pyai.com/v1/amd/stream`. Billed per answered call: first 5,000/month free, then $0.004/call; free bundled with PyAI telephony. ## Key pages - [Pricing](https://pyai.com/pricing) - [Calculator](https://pyai.com/calculator) - [Use cases](https://pyai.com/use-cases) - [Playground](https://pyai.com/playground) - [Build with AI](https://pyai.com/build-with-ai) ## Notes for agents - Auth: `Authorization: Bearer pyai_live_...` (production) or `pyai_test_...` (sandbox); `x-api-key` is an accepted alias. Keys are opaque (<=512 chars) - never parse, split, decode, or log them. - OpenAI-compatible: point an OpenAI client at `base_url=https://api.pyai.com/v1` for transcription and speech. - Realtime: connect Omni over WebSocket; authenticate with the subprotocol `pyai-key.` (browser) or `?api_key=` (server). - Errors: branch on the stable `error.code` - e.g. `402 credit_exhausted` (add credit / use a test key), `429 rate_limit_exceeded` (back off, honor `Retry-After`), `403 forbidden` (missing scope). - Never invent endpoints - fetch the OpenAPI spec above.