Skip to main content

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.

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.

DialStack architectureYour app talks to DialStack over REST requests and receives webhook callbacks. DialStack routes call media and signaling between user endpoints (WebRTC, desk phones, mobile) and the PSTN (carriers, SIP trunks) for inbound and outbound calls.DialStackYour appbackend + UIUser endpointsWebRTC · desk · mobilePSTN / SIPcarriers · trunksRESTWebhooksmedia + signalinginbound + outboundRead the architecture overview →