# SignalWire Documentation > Build voice, video, messaging, and AI applications with SignalWire developer tools and implementation guides. SignalWire is a programmable communications platform for building voice, video, messaging, and AI applications. Start with the navigation and development interfaces below, then choose the path that matches your task. ## Navigate the documentation - Treat the [root `llms.txt`](https://signalwire.com/docs/llms.txt) as an orientation page and directory, not an exhaustive list of documentation pages. The available documentation indexes appear under `## Products` at the bottom of the file. - Fetch a documentation page as clean Markdown by appending `.md` to its URL or requesting it with the HTTP header `Accept: text/markdown`. - Open the relevant documentation index to discover its page links. - If a page is not listed in the root index, check the relevant documentation index before concluding that the documentation does not contain it. ## Development interfaces and tools - [Server SDKs](/docs/server-sdks): Build and deploy AI agents, control calls through HTTP requests or real-time WebSocket connections, and send messages and manage platform resources through SignalWire's REST APIs. Available in multiple languages so you can integrate these capabilities into your application's backend. - [Browser SDK](/docs/browser-sdk/v4/guides/overview): Add voice, video, and chat to web applications, with controls for calls, participants, cameras, microphones, and screen sharing. Build a custom interface in JavaScript or embed prebuilt calling components. - [REST APIs](/docs/apis): Place and control calls, send messages, and manage phone numbers, subscribers, video rooms, and logs through HTTP requests. Integrate communication and account administration into backend services, scripts, or any application that can call an HTTP API. - [SignalWire Markup Language (SWML)](/docs/swml): Define call flows, message handling, and AI agent behavior in YAML or JSON, including prompts, routing, and replies. SignalWire executes the instructions from a hosted script or a document returned by your server. - [Call Flow Builder](/docs/call-flow-builder): Create voice applications and AI call flows visually in the Dashboard. Connect nodes for greetings, caller input, routing, and AI conversations, then test and version the flows that SignalWire hosts and runs. - [Compatibility API](/docs/compatibility-api): Migrate existing Twilio calling and messaging applications using TwiML-compatible XML instructions and REST endpoints. Adapt your application's credentials, API endpoints, and webhook configuration to run it on SignalWire. ## Ask before choosing a path Use these questions when the reader has not said what they are building or where it runs. Skip them for a specific lookup or a request that already answers them. Reuse anything the reader has said. Ask at most two questions at a time, in order, and stop as soon as one task under "Choose a path" fits. Accept plain language; the reader does not need product or API names. Then restate the goal and environment in one sentence, name the path, and link its starting guide plus any prerequisite. If the reader is unsure, state an assumption and give a starting guide anyway. Never ask for API tokens or passwords; ask for redacted errors instead. 1. What should someone be able to do? For example: place or answer phone calls, send and receive SMS/MMS or WhatsApp, chat inside an app, join a video meeting, talk to an AI agent, or manage numbers and logs. 2. Where will the code run: a backend server, a web browser, a mobile app (web, WebView, or native, and which framework), or serverless on SignalWire with no server of your own? 3. How do you want to build it: a visual builder, a hosted YAML/JSON script, or code in which language and framework? 4. Are you starting fresh, extending a SignalWire application, or migrating from another provider? Ask these only when the answer changes the recommendation: - Calls and messages: send, receive, or both? Between phone numbers, SIP endpoints, app users, or an AI agent? - Server-side call control: should SignalWire run a fixed flow ([hosted SWML](/docs/swml/guides)), fetch instructions from your server when a call arrives ([SWML from a web server](/docs/swml/guides/remote-server)), or let your server steer the live call ([Relay client](/docs/server-sdks/guides/relay-client))? Can your host accept incoming HTTP requests and hold a WebSocket open? - Browser apps: will users sign in, join as guests, or use a public widget ([authentication guide](/docs/browser-sdk/v4/guides/authentication))? Prebuilt or custom interface? - AI agents: voice, text, or both? Does it need to look up data or act in your systems ([tool calling](/docs/server-sdks/guides/swaig))? - Migrating from Twilio: use the [Compatibility API](/docs/compatibility-api) and confirm each feature is supported before saying it carries over. - Phone calls or SMS/MMS: which countries will you send from and reach? See [Phone numbers](/docs/platform/phone-numbers) and [Messaging](/docs/platform/messaging) sender registration. - Troubleshooting: what is already configured, and which step fails? ## Choose a path Find the task that matches what you want to build, how your application connects to SignalWire, or what you need to manage. Each task lists the interfaces and tools to use; their descriptions and documentation links are in Development interfaces and tools above. ### Learn the platform and get started - [Get started](/docs/platform/getting-started): Walkthrough of your Space, the build paths, and the core concepts. - [Create an account](/docs/platform/signing-up-for-a-space): Open a new Space on the SignalWire platform. - [API credentials](/docs/platform/your-signalwire-api-space): Find the Project ID and API token that SDKs and APIs use to authenticate. - [Resources](/docs/platform/resources): Communication entities such as AI agents, SignalWire Markup Language (SWML) scripts, Subscribers, and Video Rooms. - [Addresses](/docs/platform/addresses): The aliases, phone numbers, and Session Initiation Protocol (SIP) URIs that make a Resource reachable. - [Subscribers](/docs/platform/subscribers): Resources that represent users, and the basis of user management. - [Phone numbers](/docs/platform/phone-numbers): Buy, port, and configure phone numbers. - [Webhooks](/docs/platform/webhooks): Receive events about calls and messages over HTTP. ### Understand the communication channels - [Calling](/docs/platform/calling): Voice, video, fax, and AI on one platform. - [Voice](/docs/platform/voice): Programmable calling with integrated AI. - [Make and receive calls](/docs/platform/voice/make-and-receive-calls): Pick SWML, Relay, or the Browser SDK, then use it to call your own phone, answer a call to your SignalWire number, and track each call's progress. - [Video](/docs/platform/video): Programmable video conferencing. - [Fax](/docs/platform/fax): Send and receive faxes. - [Messaging](/docs/platform/messaging): Programmable Short Message Service (SMS) and Multimedia Messaging Service (MMS). - [WhatsApp](/docs/platform/messaging/whatsapp): Send and receive WhatsApp messages. - [WhatsApp calling](/docs/platform/voice/whatsapp): Take calls placed from WhatsApp on a business number. - [Chat](/docs/platform/chat): Programmable chat for applications. - [AI](/docs/platform/ai): Conversational agents directed by your code, data, and business rules. ### Run an AI agent in voice or text conversations Define the agent's behavior and tools, then connect it to a phone number or text conversation. The [AI quickstart](/docs/platform/ai/quickstart) shows how one agent configuration can serve both voice and AI Chat. - Server SDKs: [Build your first agent in code](/docs/server-sdks/guides/quickstart) and [add functions the agent can call](/docs/server-sdks/guides/swaig) to work with your backend. - SWML: Define prompts, languages, and functions in an [AI configuration](/docs/swml/reference/calling/ai). ### Build a voice application with low-code or no-code tools and no server of your own Host your call logic in SignalWire for flows such as greetings, menus, routing, and AI conversations. Choose a visual editor or a hosted script according to how you want to author the flow. - Call Flow Builder: [Connect call-flow nodes in the Dashboard](/docs/call-flow-builder) to define branches and actions visually. - SWML: [Create a hosted script and connect it to a phone number](/docs/swml/guides) so SignalWire runs the instructions when a call arrives. ### Send and receive SMS and MMS Send text and media messages from your application, and choose how to process incoming messages. The [platform messaging overview](/docs/platform/messaging) covers setup, examples, and sender registration. - Server SDKs: [Send SMS or MMS and track delivery](/docs/server-sdks/reference/python/relay/client/send-message), and register an incoming-message handler with the [Relay client](/docs/server-sdks/reference/python/relay/client). - SWML: [Handle incoming SMS and MMS with a messaging document](/docs/swml/reference/messaging) and [send a reply](/docs/swml/reference/messaging/reply). - REST APIs: [Send a message over HTTP](/docs/apis/rest/messages/create-message) and [receive delivery status callbacks](/docs/apis/rest/webhooks/message-status-callback). ### Browser or mobile app calling and chat Give users an identity, authorize their access, and connect them to other users or shared resources. Your backend manages subscribers and credentials; the client provides the calling and chat interface. - Browser SDK: For web clients, [place audio or video calls](/docs/platform/voice/make-and-receive-calls#place-a-call-from-a-browser), [answer inbound calls](/docs/platform/voice/make-and-receive-calls#answer-a-call-in-a-browser), and [send and display chat messages](/docs/browser-sdk/v4/guides/messaging-chat). - REST APIs: [Create subscribers](/docs/apis/rest/subscribers/create-subscriber) and [issue subscriber access tokens](/docs/apis/rest/subscribers/tokens/create-subscriber-token) from your backend. Follow the [Browser SDK authentication guide](/docs/browser-sdk/v4/guides/authentication) to connect a web client. ### Video conferences Build a browser conference interface or use a conference with a prebuilt interface. The [platform video overview](/docs/platform/video) explains rooms, participant permissions, and recordings. - Browser SDK: [Join a room with audio and video](/docs/browser-sdk/v4/guides/build-voice-video), then add [call controls](/docs/browser-sdk/v4/guides/call-controls), [screen sharing](/docs/browser-sdk/v4/guides/screen-sharing), and [participant layouts](/docs/browser-sdk/v4/guides/layouts). - REST APIs: [Create a video room](/docs/apis/rest/video/rooms/create-room) and [issue room access tokens](/docs/apis/rest/video/room-tokens/create-room-token), or [create a video conference with a prebuilt interface](/docs/apis/rest/video/video-conferences/create-video-conference). ### Migrate a Twilio application Run an existing TwiML application on SignalWire by repointing its credentials, API base URL, and webhooks. The [Compatibility API](/docs/compatibility-api) accepts TwiML and mirrors the Twilio REST endpoints. - Compatibility API: [Migrate a TwiML application](/docs/compatibility-api) using TwiML-compatible XML instructions and REST endpoints. ### Provision and manage numbers, resources, subscribers, and logs Automate account administration: buy numbers, manage communication resources and users, and query logs to investigate calls and messages. - Server SDKs: Use the REST client to manage platform resources from application code. The [REST client reference](/docs/server-sdks/reference/python/rest) includes examples for purchasing numbers, listing resources, and querying logs. - REST APIs: [Purchase a phone number](/docs/apis/rest/phone-numbers/purchase-phone-number), [list resources](/docs/apis/rest/resources/list-resources), [create a subscriber](/docs/apis/rest/subscribers/create-subscriber), and query [voice logs](/docs/apis/rest/voice-logs/list-voice-logs) or [message logs](/docs/apis/rest/message-logs/list-message-logs). - Space Administration API: With a [Personal access token](/docs/apis/authorization#personal-access-tokens), [manage members and their Project access](/docs/apis/rest/space/members/list-members), [read the balance and top it up](/docs/apis/rest/space/balance/get-balance), and [download monthly billing statements](/docs/apis/rest/space/billing/list-billing-statements). ### Act on a live call, or send a message, with a single HTTP request Trigger a communication action from a backend job, webhook handler, or existing application. For call control, supply the active call's identifier and the command to perform. - Server SDKs: Use the REST client's [call-control methods](/docs/server-sdks/reference/python/rest/calling) to play audio, record, transfer, or end a call from your application. - REST APIs: [Send a call command](/docs/apis/rest/calls/call-commands) or [send an SMS or MMS message](/docs/apis/rest/messages/create-message) directly over HTTP. ### Return call or messaging instructions from your server over HTTP Use this approach when your application needs to decide what should happen when a call or message arrives. SignalWire requests instructions from your URL, your server returns a document, and SignalWire executes it. - SWML: [Generate call instructions on your web server](/docs/swml/guides/remote-server), or return a [Messaging SWML document](/docs/swml/reference/messaging) to handle an incoming SMS or MMS. - Server SDKs for AI agents: Use the [agent framework](/docs/server-sdks/guides/architecture) to generate SWML from your agent's configuration and serve it over HTTP. ### Handle communication over a persistent WebSocket connection, issuing commands and reacting to events asynchronously Use an ongoing connection when your application needs to react to call events and issue commands throughout a conversation, such as playing prompts, collecting input, or changing participant controls. - Server SDKs, Relay client: [Build an event-driven call handler](/docs/server-sdks/guides/relay-client) that answers calls and controls their flow from your backend. - Browser SDK: [Handle incoming calls](/docs/browser-sdk/v4/guides/inbound-calls) and [update call controls](/docs/browser-sdk/v4/guides/call-controls) from the browser while observing call and participant state. ### Set up local development and testing Develop your agent locally, then give SignalWire a public URL for testing calls and webhooks. - Server SDKs: [Set up your development environment](/docs/server-sdks/guides/dev-environment), [run your first agent](/docs/server-sdks/guides/quickstart), and [expose its local HTTP server through a tunnel](/docs/server-sdks/guides/exposing-agents). ## Popular features Feature pages are grouped by channel. SDK pages come first when available, followed by SWML or platform pages when no SDK feature page exists. ### Calling - [Record calls](/docs/platform/voice/record-calls): Record a whole call in the background with SWML, Relay, the REST Calling API, or Call Flow Builder, then stop, pause, capture a single message or a conference, and manage the files with the Recordings API. - [Call transfer](/docs/server-sdks/guides/call-transfer): Transfer a call to a phone number, SIP endpoint, or SWML document. - [Real-time transcription](/docs/server-sdks/reference/python/relay/call/live-transcribe): Start or stop live transcription on a call. - [Live translation](/docs/server-sdks/reference/python/relay/call/live-translate): Start or stop live translation on a call. - [Stream call audio](/docs/platform/voice/call-streaming): Stream a live call to your own WebSocket server with SWML, Relay, or REST, then save or process the audio as it arrives, and play audio back into the call on a bidirectional stream. - [Conferencing](/docs/server-sdks/reference/python/relay/call/join-conference): Join a call to an ad-hoc audio conference. - [Secure payments](/docs/server-sdks/reference/python/relay/call/pay): Collect payment information on a call. - [Collect caller input](/docs/server-sdks/reference/python/relay/call/play-and-collect): Play audio and collect speech or key presses. - [Detect machines](/docs/platform/voice/machine-detection): Detect people, voicemail, and fax machines with SWML or Relay. Follow an AMD example and a fax example, handle results, and tune detection. - [Noise reduction](/docs/server-sdks/reference/python/relay/call/denoise): Start noise reduction on a call. - [Call queues](/docs/server-sdks/reference/python/relay/call/queue-enter): Place a call into a named queue. - [Text-to-speech voices](/docs/platform/voice/tts): Supported providers, voices, and languages. - [Caller ID and Calling Name (CNAM)](/docs/platform/voice/how-to-set-caller-id-or-cnam): Configure an outbound number and a caller name that supported carriers can display. - [STIR/SHAKEN caller verification](/docs/platform/voice/stir-shaken): STIR (Secure Telephone Identity Revisited) and SHAKEN (Secure Handling of Asserted information using toKENs) provide caller identity attestation for outbound calls. - [SIP](/docs/platform/voice/sip): SIP trunking, SIP credentials, and bring your own carrier. - [Receive WhatsApp calls](/docs/platform/voice/whatsapp/receive-calls): Answer your first WhatsApp call with a hosted SWML Script, then assign the number from the Dashboard or the REST API, answer from your own code with Relay, read the caller's number in an AI Agent, and find the calls in your logs. - [Web Real-Time Communication (WebRTC)](/docs/platform/voice/what-is-webrtc): How SignalWire uses WebRTC for real-time media. ### Video - [Voice and video in the browser](/docs/browser-sdk/v4/guides/build-voice-video): Build a calling or video experience with the Browser SDK. - [Screen sharing](/docs/browser-sdk/v4/guides/screen-sharing): Share a screen in a video call. - [Layouts and participant views](/docs/browser-sdk/v4/guides/layouts): Arrange participants in a video call. - [Device management](/docs/browser-sdk/v4/guides/device-management): Choose cameras, microphones, and speakers. - [Click-to-call widget](/docs/browser-sdk/v4/guides/click-to-call-widget): Add a call button to a public web page. - [Join a video room from a call](/docs/server-sdks/reference/python/relay/call/join-room): Join a video or audio room from a call. ### Messaging - [Chat in the browser](/docs/browser-sdk/v4/guides/messaging-chat): Add messaging and chat to a browser app. - [Send SMS and MMS](/docs/server-sdks/reference/python/relay/client/send-message): Send an outbound SMS or MMS message. - [Campaign Registry registration for 10-digit long code (10DLC) numbers](/docs/platform/messaging/campaign-registry/registration): Register a brand and campaign for business SMS in the United States. - [Toll-free verification](/docs/platform/messaging/toll-free-numbers): Verify a toll-free number for messaging. - [Hosted messaging](/docs/platform/messaging/hosted-messaging): Port messaging service only to SignalWire. - [Delivery best practices](/docs/platform/messaging/sms-best-practices): Improve message delivery rates. - [Character limits](/docs/platform/messaging/character-limits): How message segments are measured and priced. - [MIME types](/docs/platform/messaging/mime-types): Media types supported in MMS. ### AI - [Tool calling with the SignalWire AI Gateway (SWAIG)](/docs/server-sdks/guides/swaig): Let the agent call functions on your backend through webhooks. - [Skills](/docs/server-sdks/guides/understanding-skills): Add reusable capabilities to an agent without custom code. - [Prompts and the Prompt Object Model (POM)](/docs/server-sdks/guides/prompts-pom): Build structured prompts with sections, subsections, and bullets. - [Contexts and workflows](/docs/server-sdks/guides/contexts-workflows): Multi-step conversation flows with branching and validation. - [DataMap](/docs/server-sdks/guides/data-map): Call REST APIs from the agent without running code on your server. - [Search and knowledge](/docs/server-sdks/guides/search-knowledge): Add knowledge search to an agent with vector indexes. - [Model Context Protocol (MCP) Gateway](/docs/server-sdks/guides/mcp-gateway): Connect MCP servers to an agent. - [Multi-agent servers](/docs/server-sdks/guides/multi-agent): Run several agents on one server. - [Voice and language](/docs/server-sdks/guides/voice-language): Configure the agent's voice, language, and pronunciation. - [AI sidecar](/docs/swml/reference/calling/ai-sidecar): Attach a real-time AI observer to a live call. - [Prompt engineering](/docs/platform/ai/prompt-engineering): Where to place instructions and how to structure a prompt. - [Conversation analytics](/docs/platform/ai/analytics): Analyze conversations with post-prompt reports and debug webhooks. - [Sensitive content](/docs/platform/ai/content-redaction): Redact sensitive content from AI conversations. [Create a SignalWire account](https://signalwire.com/signup), or follow the [Platform getting-started guide](/docs/platform/getting-started) to configure an existing Space. ## Products - [Home](https://signalwire.com/docs/llms.txt): Overview and getting started - [Home](https://signalwire.com/docs.md) - [Platform](https://signalwire.com/docs/platform/llms.txt): Dashboard, configuration & administration - [Get started](https://signalwire.com/docs/platform/getting-started.md) - [Create an account](https://signalwire.com/docs/platform/signing-up-for-a-space.md) - [API credentials](https://signalwire.com/docs/platform/your-signalwire-api-space.md) - [Phone numbers](https://signalwire.com/docs/platform/phone-numbers.md) - [Resources](https://signalwire.com/docs/platform/resources.md) - [Call Flow Builder](https://signalwire.com/docs/call-flow-builder/llms.txt): Drag-and-drop call flows and AI agents - [Overview](https://signalwire.com/docs/call-flow-builder.md) - [Variables](https://signalwire.com/docs/call-flow-builder/guides/variables.md) - [Versioning](https://signalwire.com/docs/call-flow-builder/guides/version.md) - [Overview](https://signalwire.com/docs/call-flow-builder/reference/nodes.md) - [AI Agent](https://signalwire.com/docs/call-flow-builder/reference/ai-agent.md) - [Server SDKs](https://signalwire.com/docs/server-sdks/llms.txt): Build AI agents, control calls, send messages, and more - [SignalWire SDKs](https://signalwire.com/docs/server-sdks.md) - [Development Environment Setup](https://signalwire.com/docs/server-sdks/guides/dev-environment.md) - [Exposing Your Agent to the Internet](https://signalwire.com/docs/server-sdks/guides/exposing-agents.md) - [Installation](https://signalwire.com/docs/server-sdks/guides/installation.md) - [Quick Start: Your First Agent](https://signalwire.com/docs/server-sdks/guides/quickstart.md) - [Browser SDK](https://signalwire.com/docs/browser-sdk/llms.txt): Build voice, video and chat applications for the browser - [Overview](https://signalwire.com/docs/browser-sdk/v4/guides/overview.md) - [Authentication](https://signalwire.com/docs/browser-sdk/v4/guides/authentication.md) - [RxJS Primer](https://signalwire.com/docs/browser-sdk/v4/guides/rxjs-primer.md) - [Migrate from v3](https://signalwire.com/docs/browser-sdk/v4/guides/migrate-from-v3.md) - [Overview](https://signalwire.com/docs/browser-sdk/v4/guides/web-components.md) - [APIs](https://signalwire.com/docs/apis/llms.txt): Send SMS, manage calls, administer SignalWire - [Overview](https://signalwire.com/docs/apis.md) - [Authorization](https://signalwire.com/docs/apis/authorization.md) - [Base URL](https://signalwire.com/docs/apis/base-url.md) - [Data formats](https://signalwire.com/docs/apis/data-formats.md) - [Paging](https://signalwire.com/docs/apis/paging.md) - [SWML](https://signalwire.com/docs/swml/llms.txt): Write communication applications, call flows and AI agents - [Introduction to SWML](https://signalwire.com/docs/swml.md) - [Expressions](https://signalwire.com/docs/swml/reference/expressions.md) - [Template functions](https://signalwire.com/docs/swml/reference/template-functions.md) - [Variables](https://signalwire.com/docs/swml/reference/variables.md) - [Errors](https://signalwire.com/docs/swml/reference/errors.md) - [Compatibility API](https://signalwire.com/docs/compatibility-api/llms.txt): Migrate your TwiML™-based applications to SignalWire with ease - [Compatibility API](https://signalwire.com/docs/compatibility-api.md) - [cXML Specification](https://signalwire.com/docs/compatibility-api/cxml.md) - [Common webhook errors](https://signalwire.com/docs/compatibility-api/guides/common-webhook-errors.md) - [Webhook security](https://signalwire.com/docs/compatibility-api/guides/webhook-security.md) - [Receive SMS](https://signalwire.com/docs/compatibility-api/guides/receive-sms.md) --- The Compatibility API accepts TwiML for migrating existing Twilio applications to SignalWire. Twilio and TwiML are trademarks of Twilio, Inc.; SignalWire, Inc. and its products are not affiliated with, sponsored by, or endorsed by Twilio, Inc.