Build voice agents in a few lines of code

Place and receive human-like calls programmatically. One API for agents, telephony, knowledge, and webhooks — with official SDKs and self-hosting.

place-a-call.ts
import { Pollax } from 'pollax'

const pollax = new Pollax({ apiKey })

const call = await pollax.calls.create({
  agent_id: 'ag_fee_reminder',
  to_number: '+91 98765 43210',
  variables: { name: 'Ankit' },
})
// → { call_sid, status: 'initiated' }
Call connected
Live demo

See it in action

Live Demo

Click to talk

Voice library

Ready
Priya
HindiFemaleIndian

46 voices

नमस्ते! मैं आपका AI सहायक हूं। आज मैं आपकी कैसे मदद कर सकता हूं?
Capabilities

What you get

await pollax.calls.create({…})

Programmatic agents

Create, update, and run agents over a REST API or our official SDKs — no dashboard required.

Inbound Outbound

Inbound & outbound

Place outbound calls and answer inbound ones with the same agent, number, and logic.

Englishहिन्दीதமிழ்తెలుగుবাংলাಕನ್ನಡ+17

23 languages

English plus 23 Indic languages, switchable mid-call based on the caller.

knowledge.pdf
get_balance()book_slot()

Knowledge & tools

Attach documents and function-calling tools so agents answer accurately and take action.

call.initiated
call.answered
call.completed

Webhooks & idempotency

Signed event webhooks for every call lifecycle stage, with idempotent requests for safe retries.

OllamavLLMOpenAI-compatibleYour VPC

Self-hosted models

Bring your own LLM via Ollama, vLLM, or any OpenAI-compatible endpoint. Your data stays yours.

At a glance

Built for real-time, at scale

<0ms
Response latency
0
Indian languages
0.00%
Uptime
Realtime session

Voice-to-voice controls, explained

Click a concept to see how the live session works — and the event shapes that drive it.

Session ID

session_id

Every conversation has identity. One session_id holds history, settings, and live speaker state across the call.

Live example

session_id: abc123
history12 turns
settingsvoice · hi-IN
speaker statelistening
Event / request
{
  "type": "session.create",
  "session": {
    "model": "pollax-realtime",
    "voice": "anushka",
    "modalities": ["audio", "text"]
  }
}
Event / response
{
  "type": "session.created",
  "session": {
    "id": "abc123",
    "stores": ["history", "settings", "speaker_state"]
  }
}
How it works

Three calls, end to end

01

Create an agent

Define the prompt, voice, and language once — via API or dashboard.

02

Place the call

POST /calls with the number and variables. Pollax dials and runs the agent.

03

Receive events

Signed webhooks stream status, transcript, recording, and outcome to your server.

How it works

Emotion-aware call handling

Resolve every ticket with high customer satisfaction thanks to agents that can form decision logic and route responses based on emotional signals, like urgency, profanity, and more.

how?…I've been on hold for 30 minutes, this is ridiculous!…I want to

Service delay mentioned
Urgency indicator detected
Profanity + high emotion

Meet your customers with empathy at every turn

Designed to make every conversation feel natural. Pollax's voice AI lets agents follow rapid shifts in conversation, sentiment, pitch, and tone — so they match the mood of every interaction across 23 languages.

Personalized Voices

Tailored to match your unique brand

Dynamic interrupts

Adapted to a variety of accents and languages

Ultra-low latency

Industry-leading voice response time

Languages

22 Indian languages, 36+ in total

Native pronunciation and scripts — with the ability to switch language mid-call based on the speaker.

Indian languages

English (India)
Hindiहिन्दी
Bengaliবাংলা
Tamilதமிழ்
Teluguతెలుగు
Marathiमराठी
Gujaratiગુજરાતી
Kannadaಕನ್ನಡ
Malayalamമലയാളം
Punjabiਪੰਜਾਬੀ
Odiaଓଡ଼ିଆ
Assameseঅসমীয়া
Urduاُردُو
Bodoबरो
Dogriडोगरी
Kashmiriکٲشُر
Konkaniकोंकणी
Maithiliमैथिली
ManipuriMeitei
Nepaliनेपाली
Sanskritसंस्कृतम्
SantaliSantali
Sindhiسنڌي

International

English (US)
English (UK)
English (Australia)
English (Canada)
English (Singapore)
English (South Africa)
English (Philippines)
SpanishEspañol
Spanish (Mexico)Español
FrenchFrançais
GermanDeutsch
ItalianItaliano
Portuguese (Brazil)Português
DutchNederlands
PolishPolski
RussianРусский
UkrainianУкраїнська
Arabic (UAE)العربية
Arabic (Saudi)العربية
Japanese日本語
Korean한국어
Chinese (Mandarin)中文
Thaiไทย
VietnameseTiếng Việt
TurkishTürkçe
IndonesianBahasa Indonesia
MalayBahasa Melayu
FilipinoFilipino
FAQ

Questions, answered

How do I authenticate?⌄

Every request uses a Bearer API key (sk_live_… or sk_test_… for the sandbox). Keys are scoped per tenant, so each account only sees its own agents and calls.

Which SDKs are available?⌄

Official TypeScript and Python SDKs — npm i pollax and pip install pollax. Both wrap agents, calls, campaigns, and webhook signature verification.

How do I get call results?⌄

Subscribe a webhook URL. Pollax POSTs signed events (call.initiated → answered → completed/failed) with transcripts, recordings, and outcomes. Verify the signature with the SDK helper.

Can I test without placing real calls?⌄

Yes. Use a sk_test_ key for the sandbox — calls are simulated with magic numbers driving the outcome, and the same webhooks fire so you can build end-to-end before going live.

Ship your first call today

Grab an API key, install the SDK, and place a call in minutes.