For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Log inSign up
Support
PlatformCallingAIMessagingTools
PlatformCallingAIMessagingTools
    • Get started
  • Setup
    • Create an account
    • API credentials
    • Port phone numbers to SignalWire
    • Trial mode
  • Core
    • Webhooks
    • Allow SignalWire IPs through your firewall
    • International support
    • Media URL protection
    • Default limits
    • Segment IDs
  • Architecture
    • Resources
    • Addresses
    • Subscribers
  • Phone numbers
    • Overview
    • E911
    • What is E.164?
  • Integrations
LogoLogoSignalWire Docs
Log inSign up
Support
On this page
  • Your SignalWire Space
  • Start building
  • What are you trying to build?
  • Quick start with Agents SDK:
  • Do you need real-time control?
  • Quick start for no-code:
  • What’s compatible:
  • Migration steps:
  • Core concepts
  • Communication channels
  • Phone numbers
  • Resources
  • Addresses
  • Subscribers
  • Next Steps

Get started

The SignalWire platform
|View as Markdown|Open in Claude|
Was this page helpful?
Edit this page

Create an account

Next
Built with

SignalWire is a programmable unified communications platform that unifies voice, messaging, video, and AI into a single control plane. SignalWire’s APIs and SDKs enable developers to build state-of-the-art realtime communication experiences without needing to manage complex telecom infrastructure or stitch together disconnected tools.

This guide will help you set up your account, explore the core APIs, and launch your first application.

Your SignalWire Space

When you create a SignalWire account, you also create a Space, like spacename.signalwire.com. Your Dashboard is located at that subdomain. In your Dashboard, you can:

  • Buy and configure phone numbers
  • Create and manage your applications
  • View call logs and analytics
  • Access your API credentials
  • Set up AI agents, call flows, and more

The SignalWire Dashboard

Start building

Let’s begin by figuring out the best way for you to build. The right approach depends on what you’re creating and how you prefer to work.

What are you trying to build?

AI Application

You want to build an AI-powered voice agent that handles phone calls.

This is common for:

  • Automated customer service
  • Appointment scheduling and reminders
  • FAQ bots and information lines
  • Lead qualification and surveys
  • Virtual receptionists

Agents SDK - A Python framework for building sophisticated AI voice agents. You get full control over prompts, custom functions (SWAIG) dedicated to AI, customizeable conversation flow, and seamless LLM integration. Best for complex agents that need to perform actions like booking appointments, looking up data, or integrating with your systems.

AI Agent (Dashboard) - Configure an AI agent directly in your Dashboard without writing code. Set up prompts, choose a voice, add functions, and connect it to a phone number. Great for getting started quickly or simpler use cases.

SWML with AI - Add AI capabilities to your SWML scripts using the ai method. Good when you want AI as part of a larger call flow that includes other logic.

Agents SDK

Python, full control

SWML AI Method

AI in call flows

Dashboard AI Agent

No-code setup

Quick start with Agents SDK:

$pip install signalwire-sdk
1from signalwire import AgentBase
2
3class MyAgent(AgentBase):
4 def __init__(self):
5 super().__init__(name="Assistant", route="/agent")
6 self.prompt_add_section("main", body="You are a helpful assistant for Acme Corp.")
7
8agent = MyAgent()
9
10if __name__ == "__main__":
11 agent.run()
Agents SDK Quickstart

Build your first AI voice agent

Browser or Mobile App

You want voice, video, or chat directly in a web browser or mobile app.

This is common for:

  • Click-to-call buttons on websites
  • In-app voice or video calling
  • Browser-based contact centers
  • Video conferencing applications

Browser SDK - Our JavaScript SDK for building custom WebRTC experiences. You get full control over the UI and user experience. Best when you need video conferencing, custom calling interfaces, or real-time chat.

Browser SDK Guide

Build voice, video, and chat in the browser

Server Application

You’re building a backend service that handles calls or messages.

This is common for:

  • IVR systems and phone menus
  • Automated call routing
  • SMS notifications and two-factor auth
  • Call centers and support systems
  • AI voice agents

Do you need real-time control?

If you need simple call handling (IVRs, call forwarding, playing messages), use SWML. Your server responds to webhooks with JSON/YAML instructions. It’s stateless, works with any programming language, and is the simplest approach for most use cases.

If you need real-time control (live call monitoring, mid-call transfers, complex orchestration), use the Realtime SDK. It maintains a persistent WebSocket connection for instant, bi-directional communication. Best for applications that need to react to events as they happen.

If you’re building AI voice agents, use the Agents SDK. It’s a Python framework specifically designed for creating conversational AI that handles phone calls. It handles the complexity of integrating with LLMs and managing conversations.

Agents SDK

AI voice agents, Python

SWML

HTTP webhooks, any language

Realtime SDK

WebSocket, Node.js

No-Code / Low-Code

You want to build without writing much (or any) code.

This is common for quick prototypes, simple IVRs, and small businesses needing basic call handling.

Call Flow Builder - A visual, drag-and-drop interface for building call handling logic. No code required. You connect nodes to define what happens when someone calls - play a message, gather input, route to different people, etc.

SWML Scripts - Write simple JSON or YAML scripts directly in your Dashboard. It’s not quite “no code” but it’s very low code, and you don’t need to run any servers. SignalWire hosts the scripts for you.

AI Agent - Configure a conversational AI agent through your Dashboard. Set up prompts, choose a voice, and connect it to a phone number. The AI handles conversations autonomously.

Call Flow Builder

Visual drag-and-drop

SWML Scripts

Simple JSON/YAML

AI Agent

Dashboard AI setup

Quick start for no-code:

  1. Buy a phone number - Go to Phone Numbers in your Dashboard
  2. Create a Call Flow - Use Call Flow Builder to design what happens when someone calls
  3. Assign it to your number - Edit the number settings and select your Call Flow
  4. Call your number - Test it out!
Migrating from Twilio*

You have an existing Twilio application and want to move to SignalWire.

Good news, SignalWire’s Compatibility API is designed as a drop-in replacement. In most cases, you can switch by changing a few lines of code.

What’s compatible:

TwilioSignalWire
TwiMLcXML (same syntax)
REST APICompatibility REST API
Helper LibrariesCompatibility SDKs (Node, Python, Ruby, C#)
Account SIDProject ID
Auth TokenAPI Token

AI is not supported in the Compatibility API. Check out the AI Application section instead.

Migration steps:

  1. Create a SignalWire account at signalwire.com/signup
  2. Get your credentials from Dashboard > API > API Tokens
  3. Update your code to use SignalWire’s SDK and credentials
  4. Update webhook URLs if needed (cXML syntax is identical to TwiML)
  5. Buy or port phone numbers to SignalWire
  6. Test your application
1// Change from this (Twilio)
2const twilio = require("twilio");
3const client = twilio(ACCOUNT_SID, AUTH_TOKEN);
4
5// To this (SignalWire)
6const { RestClient } = require("@signalwire/compatibility-api");
7const client = RestClient(PROJECT_ID, API_TOKEN, {
8 signalwireSpaceUrl: "your-space.signalwire.com"
9});
Compatibility API Guide

Complete migration documentation


Core concepts

Communication channels

SignalWire supports the following communication channels:

Voice

Phone calls, IVRs, recording, conferencing

Video

Video rooms, screen sharing, recordings

Messaging

SMS and MMS text messages

Chat

Real-time chat for web and mobile apps

AI

Intelligent voice agents powered by LLMs

Fax

Send and receive faxes programmatically

Most channels can work over different transports depending on how you want to connect:

TransportWhat it isCommon uses
PSTNThe traditional phone networkCalling regular phone numbers, receiving calls from landlines and cell phones
SIPVoice over IP protocolConnecting PBX systems, desk phones, softphones, and VoIP carriers
WebRTCBrowser-based real-time communicationIn-app calling, video conferencing, browser-based contact centers

For example, a voice call could come in via PSTN (someone dialing your number), SIP (from a desk phone), or WebRTC (from your web app). SignalWire will handle all three.

Phone numbers

To make or receive calls and messages through the phone network, you’ll need SignalWire phone numbers. You can buy local numbers, toll-free numbers, or short codes directly from your Dashboard or the API.

Each number can be configured to handle incoming calls and messages differently - whether that’s forwarding to another number, running a script, connecting to an AI agent, or triggering your own application.

Learn more about Phone Numbers

How to buy, configure, and manage your numbers

We also offer the option of purchasing phone numbers programmatically via our Purchase a Phone Number API Endpoint.

Resources

In SignalWire, a Resource is anything that can handle communications - an AI agent, a script, a SIP connection, or your own application. When a call or message comes in, you tell SignalWire which Resource should handle it.

Common resource types include:

  • SWML Scripts - Simple JSON/YAML instructions hosted in your Dashboard
  • AI Agents - Conversational AI that handles calls autonomously
  • Call Flows - Visual drag-and-drop call routing
  • Relay Applications - Your own server applications connected via WebSocket
Learn more about Resources

Understanding the different resource types

Addresses

Every Resource has an Address. This is a unique identifier that lets you target and interact with it. Think of addresses as the phone number for any resource, but broader in scope.

Addresses can be:

  • Phone numbers - Traditional numbers like +14155551234 for PSTN calls
  • SIP addresses - For VoIP connections like sip:user@domain.com
  • Aliases - Custom names like /support-queue or /main-conference that are easy to remember

A single Resource can have multiple addresses, and you can change them anytime. For example, you might point both a phone number and a custom alias to the same AI agent.

Learn more about Addresses

How addressing works in SignalWire

Subscribers

Subscribers are end users who authenticate with SignalWire to make and receive calls. If you’re building a contact center, business phone system, or video conferencing app for example, your users become Subscribers.

SignalWire manages these users for you. You create, update, and delete them through our REST APIs, and each Subscriber gets:

  • Authentication - Secure credentials and tokens for logging in
  • A callable address - They can be reached directly at /private/username
  • Multi-device support - They can answer calls from a browser, mobile app, or desk phone

This means you don’t have to build user management, authentication, or device registration yourself - SignalWire handles it.

Learn more about Subscribers

User management and authentication


Next Steps

Once you’ve chosen your path, here are some resources to help you along the way:

  • Discord Community - Join 8,000+ developers. Great for questions and sharing what you’re building.
  • GitHub - Example code, SDKs, and open source tools.
  • API Reference - Detailed documentation for all our APIs.

If you get stuck or have questions, our support team is here to help at support@signalwire.com.


*Twilio and TwiML are trademarks of Twilio, Inc. SignalWire, Inc. and its products are not affiliated with or endorsed by Twilio, Inc.