Embedded Phones and VoiceAI for Platforms.
A REST API, TypeScript SDK, and webhook firehose for multi-tenant phone systems in vertical SaaS.
import { DialStack } from '@dialstack/sdk';
const ds = new DialStack(process.env.DIALSTACK_KEY);
const account = { dialstackAccount: 'acct_jones_chiro' };
// Ring the team during business hours. After hours — or any overflow — the
// AI receptionist picks up and books the appointment.
await ds.dialPlans.create(
{
name: 'Main number',
entry_node: 'hours',
nodes: [
{
id: 'hours',
type: 'schedule',
config: { schedule_id: 'sch_business_hours', open: 'ring_team', closed: 'ai_reception' },
},
{ id: 'ring_team', type: 'ring_all_users', config: { timeout: 25, next: 'ai_reception' } },
{ id: 'ai_reception', type: 'internal_dial', config: { target_id: 'va_ai_receptionist' } },
],
},
account,
);
Pick your integration tier
Three paths, one platform. Start where you are; adjust as you grow.
White Label
Branded portal, zero UI dev.
Launch a fully branded phone-system portal for your customers without building any front-end.
Explore →Embedded
Native feel inside your app.
Drop React components and Web Components into your product so voice feels like a first-class feature.
Explore →Direct API
Raw power, 100% control.
Talk directly to the REST and WebSocket APIs. Build exactly the experience you want.
Explore →The four feature pillars
What your customers actually feel when voice is embedded right.
VoiceAI: BYO or Native
Bring your own agent, or use ours. Same dial plan, same webhook surface.
Build for your vertical
Pre-built patterns for the industries we know best.
How it fits together
A REST API, a webhook firehose, and a call surface. That's the whole picture.


