Welcome to the SignalWire REST API. Every capability on the platform — placing calls, sending messages, managing phone numbers, running video rooms, building AI agents — is reachable through a consistent set of HTTP endpoints under your Space’s subdomain.
Requests and responses are JSON over HTTPS, authenticated with your Project ID and API token. Endpoints follow standard REST conventions: predictable resource URLs, conventional HTTP verbs, and structured status codes for every outcome — including errors.
Before making your first call, get oriented with the shared conventions across every endpoint:
Authenticate with Basic Auth using your Project ID and API token, or use Bearer tokens for client-side apps.
Every request goes through your Space’s subdomain over HTTPS. See how to find your subdomain and how request URLs are structured.
UTC ISO 8601 timestamps, E.164 phone numbers, and case-sensitive parameter names across every request and response.
List endpoints return paged results. Use the links envelope to walk through the full set safely.
HTTP status codes, the structured error response shape, and a full reference of error code values.
The SignalWire Server SDKs wrap every REST endpoint in idiomatic, type-safe client libraries — use them in production code instead of crafting HTTP requests by hand. Each SDK exposes the full REST surface (phone numbers, calling, messaging, video, fabric resources, and more) through namespaced resource objects with standard CRUD operations. Pick the language that matches your stack from the Server SDKs overview.
For developers who prefer working in Postman, we maintain an official collection that mirrors every REST endpoint with pre-built requests, example payloads, and a configurable environment for your SignalWire credentials. It’s a fully supported alternative to the API playground built into these docs.
Click Run in Postman to fork the collection into your own Postman workspace.
Open the collection’s Variables tab and fill in the three values from the API pane of your SignalWire Dashboard:
A small number of endpoints — those scoped to an individual subscriber rather than a project — authenticate with a Subscriber Access Token (SAT) instead of Basic Auth. If you plan to call those, also set the subscriber_token variable to a token generated via the Create Subscriber Token endpoint. Endpoints that need it have their Authorization tab set to Bearer Token referencing {{subscriber_token}}; you don’t need to set it to use the rest of the collection.
Be sure to subscribe to the SignalWire Community for information on new features and changes to the API and language libraries.