> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getdial.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getdial.ai/_mcp/server.

# July 5, 2026

## Added

### Voice messages

A single audio attachment sent from an iMessage number is now delivered as a **native voice message** — playable inline in the recipient's thread, not a file to download. Pass `forceAudioFile: true` on [Send a message](/api-reference/rest-api/messages/send-message) to opt back into a regular file attachment. `body` is now optional whenever media is attached, so media-only sends work. In the CLI: `dial message --media <url>` with `--force-audio-file` to opt out.

### Vercel Chat SDK integration

The [`@getdial/chat-sdk-adapter`](/integrations/agent-clients/vercel-chat-sdk) package adds Dial as a channel to any bot built on Vercel's Chat SDK — the same handler that answers Slack or Discord also answers SMS, MMS, iMessage, and inbound voice through one adapter.

## Changed

### Media to SMS-only recipients falls back to links

Media sent from an iMessage number to a recipient that can only receive SMS is delivered as links in a text, so the message always arrives.

### Messages from iMessage numbers are billed at \$0

Per-message pricing applies to standard (SMS) numbers only — an iMessage number's subscription covers its messaging.

### New-contact rate limiting documented

Sends can return `429` (error code `rate_limited`): new contacts on iMessage numbers can only receive a limited number of messages until they reply — once they respond, the limit lifts. See [Send a message](/api-reference/rest-api/messages/send-message).