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

Select voice agent

Priya 🇮🇳
Hindi · Customer Success · Mumbai
Namaste! Main Priya hoon, Mumbai se aapki customer success specialist. Aaj main aapki kaise madad kar sakti hoon?
Capabilities

What you get

Every capability, shown — not just described.

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

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

International

English (US)
English (UK)
SpanishEspañol
FrenchFrançais
GermanDeutsch
Japanese日本語
Chinese中文
PortuguesePortuguês
Korean한국어
ItalianItaliano
Arabicالعربية
RussianРусский
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.