Skip to navigation

What’s new and what changed across the SignalWire platform.

To follow along in a feed reader, append .rss to this page’s URL.

Search added to the Set an Emergency Address screen

Search your E911 addresses by label and address on the Set an Emergency Address screen in the Dashboard, instead of scrolling through every record to find the one to assign.

To manage emergency addresses and assign them to phone numbers, read Set up E911 in the Dashboard.

e911

transport added to dial requests for external SIP destinations

Choose UDP, TCP, or TLS for SIP signaling when you dial a SIP URI outside SignalWire with Send call commands. The transport also controls media encryption: udp and tcp send unencrypted RTP, while tls offers SRTP. A request returns 422 when transport conflicts with a ;transport= parameter in the to URI.

apiscompliancefabricmessagingvoice

Self-service move of Platform Free Trial numbers to your own 10DLC Campaign added

Move the US 10DLC number you used for Platform Free Trial to your own approved 10DLC Campaign yourself: assign the number to the Campaign, and SignalWire moves it off Platform Free Trial with no Support ticket needed. Once moved, the trial restrictions no longer apply, and the number’s messaging limits are those of the Campaign you assigned it to.

apiscompliancefabricmessagingvoice

Fixed: WhatsApp document template headers sent with the wrong id when the URL contained "id"

WhatsApp template messages with a document HEADER were sent with the wrong id when the document URL contained “id”. This is now fixed.

apiscompliancefabricmessagingvoice

Fixed: A phone number kept its old handler Resource after switching handlers

Switching a phone number’s handler to a different Resource left the number linked to the Resource it used before, so you couldn’t delete that Resource. The number now releases its previous handler Resource, and you can delete it.

apiscompliancefabricmessagingvoice

Fixed: Using send_sms in a messaging SWML script returned an unclear error

Using the voice-only send_sms method in a messaging SWML script returned an error message that didn’t explain what went wrong. This is now fixed.

messagingswml

Fixed: Relay calling.pay ignored play prompts and used the default prompts

Relay calling.pay silently ignored a play prompt and used the default prompts instead. This is now fixed.

Set custom prompts with the prompts parameter of pay in the Python or TypeScript Relay SDK.

sdksvoice

Project API token list and regenerate endpoints added to the REST API

Rotate a Project API token without recreating it: Regenerate API token replaces a token’s value and keeps its ID, name, and permissions. The previous value stops working immediately, and the new one is returned only in that response. To find the ID of each token you can manage, use List API tokens, which never returns token values.

Every REST API Project token response, including Create API token and Update API token, now includes last_used_at, the time the token last authenticated a request, and revoked_at, the time SignalWire revoked the token’s value. A revoked token no longer authenticates until you regenerate it.

apis

Semantic gates added to SWAIG functions

Require a yes/no check on the conversation before your AI agent can run a SWAIG function. You attach a question, such as “Has the caller explicitly asked to cancel their ride?”, and a decision model answers it before the function runs. If the answer doesn’t clear your threshold, the function doesn’t run and the agent gets a response you wrote instead.

aisdksswml

Fixed: Platform Free Trial is including Canadian 10DLC numbers

Automated Platform Free Trial campaign registration has been corrected to trigger for US-10DLC numbers only.

compliancemessaging

Phone number release allowance changed to two early releases per month

Non-trial accounts can release up to two phone numbers each month within 14 days of purchase. Any additional number you release that month is subject to the standard 14-day hold after purchase, with no exceptions, to help prevent fraud and abuse.

Release a number from its page in the Phone Numbers section of the Dashboard.

messagingvoice

Fixed: Dashboard SIP codec configuration had unclear Opus bitrate options

The Dashboard SIP codec configuration had unclear Opus bitrate options. This is now fixed.

voice

Fixed: SWML errors when a YAML document contains an alias to an anchor

SWML errored when a YAML document contained an alias to an anchor. This is now fixed.

swml

AI Sidecar added to SWML

Attach an AI observer to a live call with the ai_sidecar SWML method. The sidecar listens to both sides, evaluates the conversation after each customer turn, and sends agent-facing output to your application as webhook callbacks. It never speaks on the call.

  • Define what to watch for with prompt, and set which leg is the customer with customer_role.
  • Output arrives as webhook events, including insight, turn, tool_call, and final.
  • Tool calling through SWAIG functions and MCP servers lets the sidecar act on your systems mid-call.
aiswmlvoice

Project API token format changed to a swapi_ prefix

New Project API tokens begin with swapi_ and are 42 characters long, replacing the previous PT prefix and 50-character length. Personal Access Tokens and Project Signing Keys keep their existing format.

Every token created before this change keeps working, with no deprecation and no end date, so there is nothing to migrate. A Project can hold tokens in both formats at once, and both authenticate identically through HTTP Basic auth. Treat a token as an opaque string rather than matching it against a pattern or assuming a fixed length.

apismessagingvoice

Phone number address management added to the REST API

Link, re-point, or remove the resource that handles a phone number’s calls or messages without opening the Dashboard. Every number you own has one address per channel, so List phone number addresses shows each number’s calling and messaging addresses and the resource assigned to each. Link a resource to a phone number assigns a resource to an unassigned channel, Update the resource for a phone number re-points or renames it, and Remove the resource from a phone number unassigns it while keeping the number.

apismessagingvoice

Default AI voice changed to ElevenLabs "Mark"

AI agents that don’t specify a voice now speak with ElevenLabs’ “Mark”, a higher quality voice included in the regular AI agent price. The default voice can change over time, so applications that need a specific voice should set one explicitly.

Set a voice in the Server SDKs or with voice strings in SWML, and browse and audition available voices.

aittsvoice

Caller ID name management added to the REST API

Set, check, and remove the caller ID name (CNAM) shown to call recipients for your project’s phone numbers, without opening the Dashboard. Request a caller ID name queues the name for compliance review, Get the caller ID name returns its status while you wait for a decision, and Clear the caller ID name removes an applied name.

Caller ID name is available only for numbers whose carrier offers it; requests for other numbers return 422. See Caller ID & CNAM for how the name reaches call recipients.

apisvoice

Failed status callback added for calls blocked before dialing

Your StatusCallback URL now receives a final callback with CallStatus set to failed when SignalWire stops a call you created with Create a call before dialing it, as long as StatusCallbackEvent includes completed. Previously, these calls sent no callback. Rate-limited calls include ErrorCode 20429, and the voice status callback lists every reason.

apisvoice

Space Administration API added to the REST API

Manage your Space over REST instead of in the Dashboard: rename it, set its geographic permissions, invite and remove members and choose which Projects each member can reach, read the balance and top it up, configure low balance notifications and auto top-up, maintain the billing profile, list and download monthly statements as JSON, CSV, or PDF, and read usage, payment history, and payment methods. Every endpoint lives under /api/space, so none takes a Project in its path.

apis