Skip to navigation
New features, improvements, and fixes to Dial

Notable changes to Dial — new capabilities, improvements, and fixes. Filter by tag, or subscribe via RSS.

November 12, 2026

Added

A published versioning and deprecation policy

The REST API now has a written versioning and deprecation policy: breaking changes ship under a new path version, and anything deprecated in /v1 keeps working for at least 6 months, announced with Deprecation and Sunset response headers.

api

October 29, 2026

Changed

WhatsApp groups count as one recipient for sending limits

A WhatsApp group is now treated like a single contact by the WhatsApp sending limits: the per-recipient cap counts what your number sent into the group, and the unanswered limit counts your messages since anyone in the group last wrote. A message from any member counts as a reply. Past either, a send into the group is rejected with 429 (rate_limited). It applies to every group your number is in, whether it created the group or was added to it.

api

October 28, 2026

Changed

Name the channel when you create a group

Create a group now takes a channel field (--channel in the CLI), so a request says which channel the group is created on. Only whatsapp is supported today, and it’s the default, so requests that leave it out keep working. Any other value is rejected with 400. Read more.

apicli

October 25, 2026

Added

Webhooks can cover chosen phone numbers

A webhook can now be limited to specific numbers: pass phoneNumberIds when you create it, and it receives events only for those numbers. Omit it and the webhook still covers every number on the account. A new PATCH /api/v1/webhooks/{id} endpoint lets you change a webhook’s URL, event types, or numbers without recreating it, and the signing secret stays the same. Read more.

apicli

October 20, 2026

Added

Allow lists for inbound calls

Decline inbound calls from anyone who isn’t on a list you keep. A list covers every number on the account or just the numbers you pick, and a number’s own list replaces the account-wide one. Manage lists under Policies in the dashboard, with /api/v1/policies, the dial policy commands, the MCP tools, or the SDKs. A declined call is recorded with the new terminationType blocked and a blockedByPolicyId, and emits call.status_changed and call.ended like any other call. Phone numbers now report the list screening them as inboundCallPolicy. Read more.

apicli

October 18, 2026

Added

Add a number to an existing 10DLC campaign

Business accounts can now put another number under a 10DLC campaign they already registered — no form and no fee. GET /api/v1/10dlc/brands lists each brand’s campaigns, and POST /api/v1/numbers/{id}/10dlc accepts { "campaignId": "…" }. On an approved campaign the number is ready within moments; on one still in review it’s approved together with the campaign. Read more.

api

October 13, 2026

Added

A paused WhatsApp status

When Dial temporarily pauses WhatsApp sending on a line, its whatsapp.status now reports paused instead of staying ready, and you get a number.status_changed event for it. When sending resumes, the status returns to ready with a second event. Previously the line kept reporting ready while sends failed with 503 whatsapp_unavailable, and nothing told you when they would start working again.

api

October 11, 2026

Added

Inbound contact cards on iMessage and WhatsApp

A contact card someone shares with your iMessage or WhatsApp line now arrives as a regular media item on the message.received event and on GET /api/v1/messages, with contentType: "text/vcard" and a url that serves the .vcf file itself. Previously an iMessage contact card was dropped and the message arrived empty. See Receive an SMS and WhatsApp.

api

October 8, 2026

Changed

WhatsApp typing stops at about 30 seconds

The “typing…” a WhatsApp text message or text reply shows before it arrives is now capped at about 30 seconds. It still lasts about 200-250 ms per character, so a short message is unchanged, but a long message no longer keeps the send waiting for minutes. The message itself is sent in full, however long it is. See WhatsApp.

api

October 6, 2026

Added

channel: "sms" on Send a message and typing

Send a message and Set a typing indicator accept channel: "sms" to name the SMS rail explicitly. On a standard number it is the same as omitting channel, so existing requests need no change. A number with a monthly SMS sending allowance answers 429 once that allowance is spent.

api

September 30, 2026

Changed

WhatsApp messages type before they’re sent

A WhatsApp text message, and a WhatsApp text reply, now shows “typing…” to the recipient for about 200-250 ms per character before it arrives. The request returns once the message is sent, so a WhatsApp send takes that much longer to answer: about 7 seconds for a 30-character message. Sends with an attachment, reactions, and other channels are unchanged. See WhatsApp.

api

September 28, 2026

Added

Calls say why they failed

A call now carries failureReason when it ends as failed and Dial knows the cause. The same value is on the call.ended and call.status_changed events. Today the reasons come from a Self-Hosted audio target: self_hosted_key_rejected (Pipecat Cloud rejected your public key), self_hosted_agent_not_found, self_hosted_at_capacity, and self_hosted_unreachable. It is null on every other call. More values may be added, so treat an unknown value like null. See When a call fails.

api

September 27, 2026

Added

Self-Hosted audio: connect to a Pipecat Cloud agent

The audio config on POST /api/v1/self-hosted now accepts pipecatCloud: { agentName, publicKey } in place of wsUrl. Before every connection, including a reconnect mid-call, Dial fetches a single-use token from the agent’s /start endpoint, so Pipecat’s WebSocket token auth can stay on. See Pipecat Cloud.

api

September 23, 2026

Added

Groups report their channel

Each entry from GET /api/v1/groups now carries channel — whatsapp or imessage, the same value its messages carry — so you can tell which channel’s rules apply to a group before you send into it.

{ "id": "grp_123", "channel": "whatsapp", "name": "Planning bday party", "createdAt": "2026-09-01T10:22:04.000Z" }
api

September 22, 2026

Changed

A WhatsApp line in a cooling-off period now retries itself

When WhatsApp puts a number in a cooling-off period before it will accept another verification request, setup fails and whatsapp.retryAvailableAt says when the period lifts. Until now that was where it stopped: the line sat failed until somebody asked for a retry, and a period that expired overnight was noticed the next morning.

api

September 7, 2026

Changed

WhatsApp can now send media

POST /api/v1/messages on a WhatsApp line (channel: "whatsapp") now accepts a single media attachment — the same media / mediaUrls fields as every other channel — where before it was text-only. More than one attachment is rejected with 400.

api

September 4, 2026

Fixed

Replying to a message that arrived over SMS answers 400, not 500

A threaded reply attaches to its target by the message id the target’s channel carries, and only iMessage and RCS carry one. When the other party has neither, an inbound message reaches your iMessage line over the SMS fallback — and a body reply to that message had nothing to attach to. Reply to a message reported that as 500 Internal server error, which read as a fault on our side for a request that simply isn’t supported.

api

September 3, 2026

Added

WhatsApp lines (beta)

WhatsApp is now a channel you can connect to a Dial iMessage number, documented at WhatsApp lines. It’s enabled per account while in beta — talk to us to request access, and until it’s granted the WhatsApp provisioning endpoints answer 404 rather than 403, because to an account without access the capability doesn’t exist.

apiplatform

August 20, 2026

Added

Know when a message is delivered, rejected, or read

Sending a message told you Dial accepted it, and nothing more — the carrier’s actual verdict arrived later with no way to hear about it. A new message.status_changed event now publishes each advance on the account stream, so you can react the moment a message lands or is rejected instead of polling GET /api/v1/messages.

apiplatform

August 14, 2026

Changed

Self-Hosted mode is approved per account

Self-Hosted mode hands live calls to a server Dial doesn’t run, so new accounts now request access before they can point calls at one. Accounts already using Self-Hosted are unaffected — they keep it, and nothing about their configuration changes.

apiplatform