Power dialer for developers

Your agents make calls.
You don't touch telephony.

One middleware, one hook. Upload contacts, start a campaign, and your team is live — with real-time transcripts, AI summaries, and every compliance rule enforced automatically.

Backend server.js
// The only backend code you write
import { DialerAuth } from '@dialer/node'

app.use(DialerAuth({
  apiKey: process.env.DIALER_API_KEY,
  getAgentId: (req) => req.user.id
}))
Frontend Agent.jsx
// The only frontend code you write
import { useDialer, CallCard } from '@dialer/react'

export default function Agent() {
  const { activeCall, endCall } =
    useDialer({ authUrl: '/dialer-auth' })

  return activeCall
    ? <CallCard call={activeCall} onEnd={endCall} />
    : <div>Waiting for a call...</div>
}

Everything else — dialing, bridging, transcription, compliance — is the platform's job.

How it works

What happens
when a call connects

The platform dials. When a human answers, the bridge connects in under two seconds. No dead air.

01 Platform dials the contact. AMD runs in the background — no waiting, no silence for the person who picked up.
02 Human answers. Bridge connects instantly. Agent hears the contact in their browser within 2 seconds.
03 Transcript appears word by word. Dual-channel — agent and contact labeled separately in real time.
04 Voicemail detected. Dropped silently. No agent time wasted. Optional SMS follow-up sent automatically.
05 AI summary arrives ~30s after the call. Suggested disposition included. Agent picks their outcome in one click.

Events stream over SSE — no webhooks, no public URLs.
Works on localhost without ngrok.

your-app.com/agent
Sarah Chen
+1 (415) 555-0182 · Acme Corp · deal_stage: Negotiation
2:14
contact Hi, I was looking at your pricing and had questions about the enterprise tier.
agent Happy to walk you through it — are you thinking about rolling this out to your whole team?
contact Yeah, we've got about 15 reps and we're looking to
Mute
Hold
Transfer
End
AI summary · arrived 28s after call
Sarah is evaluating for a 15-rep rollout. Strong intent, interested in annual pricing. Suggested: callback. Follow up within 24h.
The platform's job

Everything you
didn't want to build

Your team writes two files. The rest runs on the platform and never goes wrong on a call.

Telephony
Parallel dialing
Multiple contacts per agent slot simultaneously. 3× the connect rate of sequential dialing.
asyncAmd
Zero dead air
AMD runs in the background while the call bridges. Humans connect instantly, machines drop silently.
Transcription
Live transcription
Streaming during the call, high-accuracy batch after. Both channels labeled separately.
AI Summary
AI summary
2–3 sentence summary and suggested disposition ~30s after every call. Never blocks workflow.
Numbers
Auto-provisioned
3 dedicated numbers per agent, provisioned when billing starts. You never configure a number.
Compliance
DNC · hours · frequency
Every dial checked. Calling hours by area code. 3 attempts/day. All server-side, always on.
Compliance

On by default.
Not a configuration.

You don't turn compliance on. You'd have to actively work to turn it off — and we don't let you.

DNC checked at dial time, not upload time. A contact can be added to DNC after upload. The check happens immediately before every single dial — with a fail-safe: DB error means we don't dial.
Calling hours enforced by contact timezone. 8am–9pm, derived from area code. Unknown codes default to Eastern — the most restrictive. Contacts outside the window are held, not dropped.
3 attempts per day, 10 per month. Enforced atomically — concurrent dials can't race past the limit. Configurable up to 5/day if you have written TCPA consent.
SMS STOP auto-adds to DNC. A contact replies STOP to any outbound SMS — added to your DNC list immediately. All future dials blocked.
1 campaign running at a time. No accidental parallel blasts. A second start returns a clear error, not a silent queue.
Webhook signatures validated on every callback. Spoofed events are rejected before touching any business logic.
Pricing

One number.
No surprises.

A seat fee covers normal usage. Overage only kicks in when your team is working hard — which is a good problem to have.

$99
per seat  /  per month
Included minutes2,000 / seat
Overage$0.08 / min
SMS included500 / seat
Recording + transcription + AIincluded
Annual billing$79 / seat (−20%)
Max agents10
What 2,000 minutes looks like
3 agents · 25 connected calls/day · 3-minute average = ~1,650 min/seat/month. Most teams stay under the included allowance.
Everything in the seat fee
Numbers provisioned automatically. Live transcription. AI summaries. Recording storage. DNC enforcement. No add-ons.
Get started
Full access to all features. When you are ready to run real campaigns, add billing.
API

The API is the product.

Everything the dashboard can do, the API can do. Secret key auth, full TypeScript types, 100 req/min.

Real-time
GET
/events
SSE — all org events
GET
/agent/events
SSE — scoped to one agent
Campaigns
POST
/campaigns
Create a campaign
POST
/campaigns/:id/contacts
Upload contacts — 10k per request
POST
/campaigns/:id/start
Start dialing
POST
/campaigns/:id/pause
Pause — reversible
Call data
GET
/calls/:id/transcript
Full dual-channel transcript
GET
/calls/:id/summary
AI summary + suggested disposition
GET
/calls/:id/recording
Pre-signed URL · 1hr expiry
Auth
POST
/auth/token
Mint short-lived agent tokens
POST
/auth/rotate-key
Instant rotation — old key dies immediately
Secret key auth (sk_...)  ·  SHA-256 hashed
100 req/min  ·  Full TypeScript types
OpenAPI spec  ·  Docker Compose test environment

Ready to ship
your calling team?

Sign up, upload contacts, start your first campaign. No telephony experience required.

$99/seat/month · cancel anytime