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

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

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

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 AI Agent SDK 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

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

Personal access tokens accepted on the Projects and Project Tokens APIs

Create and delete root Projects over the API by authenticating Create a project and Delete a project with a Personal access token; omit parent_project_id to create a root Project. A root Project can be deleted only after its Subprojects are removed (subprojects_must_be_removed), and the last Project in a Space can’t be deleted (last_project_cannot_be_deleted). Then give the new Project its first credential with Create API token, naming it in project_id. With a Project API token, both APIs behave as before and remain limited to Subprojects.

apis

Multilingual agents that switch languages and voices in real time

The new multilingual AI parameter accepts an array of language-voice pairs. The AI agent continuously detects the other party’s language, and switches to the configured TTS voice (and language) whenever it changes.

The multilingual and languages objects within the AI method are mutually exclusive.

See ai.multilingual.

aiswml

AI agent text chat added

You can now chat by text with AI agents that were previously reachable only by voice. In the REST API, AI Chat is a single, unified JSON-RPC-style Send AI chat methods endpoint with six methods.

The Python Server SDK wraps the endpoint in AIChatClient and ChatGateway. JSON-RPC errors are listed with the rest of the error codes.

aiapis

Default TTS engine changed from Google to ElevenLabs

Voice id strings that don’t specify an engine now resolves against elevenlabs instead of gcloud.

Always declare your engine

Default engines can change. Ensure your agent continues using its configured voice by always declaring the engine explicitly.

aittsvoice

E911 self-service added to the REST API

Registering an emergency address and enabling E911 on a US phone number is now self-service, and no longer requires a support ticket.

Create a carrier-validated address, assign it to the number, then poll until e911_status reads active.

To get started, read the E911 guide and review the API reference.

e911voice

Six new text-to-speech engines

You can now use the Groq, Mistral, Grok, Smallest.ai, Fish Audio, and Speechify TTS engines on the SignalWire platform.

ttsvoice

playai-turbo is now groq-tts

Groq retired PlayAI in December 2025. The engine is renamed groq-tts and repointed at Canopy Labs’ Orpheus, defaulting to canopylabs/orpheus-v1-english.

Arabic voices are available by selecting the canopylabs/orpheus-arabic-saudi model, or its shorthand arabic. See Groq for the voice list.

ttsvoice

Rime's arcana model is deprecated, falls back to coda

Rime retired its arcana model. Applications that invoke it will fall back to coda, which shares voice names.

Additionally, the coda model now uses the same sampling parameters as other Rime models: repetition_penalty, temperature, top_p, and max_tokens.

See Rime.

ttsvoice

Alias address management added to the REST API

Create, rename, and delete alias addresses from your own code instead of the Dashboard. An alias is a named route in the public or private context, such as /public/support, that forwards calls and messages to the resource you point it at. Create alias address takes a name and the resource_id of its handler, Update alias address renames it or changes its channels, codecs, or context, and Delete alias address removes it. The handler can’t be changed after creation: delete the alias and create a new one instead.

apis