> 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.

# 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`.

A `body` may accompany media **only** when the attachment is an image or video; a body alongside audio or a document is rejected with `400`. A lone audio attachment is delivered as a **voice note** by default, and `forceAudioFile: true` delivers it as a regular audio file instead — mirroring how `forceAudioFile` already behaves on iMessage numbers. Supported attachment types are unchanged (images, audio, video, PDF, vCard, iCalendar); a vCard is delivered as a document, not a native contact card.

Nothing about the request shape changes — the fields already existed — so existing text-only WhatsApp sends are unaffected.

### WhatsApp: reply with a text body, and reply or react to group messages

`POST /api/v1/messages/{messageId}/reply` now supports a text `body` on WhatsApp numbers — delivered as a **native quoted reply** (the target message is quoted above your reply), matching how a reply looks when sent from the app. Previously only a `reaction` was supported on WhatsApp targets.

WhatsApp targets may now also be **group** messages: replying or reacting to a group message delivers the reply or reaction to that group. On other channels a group message still cannot be the target.

The request shape is unchanged — the same `body` / `reaction` fields — so existing replies are unaffected.