Skip to main content
Every outbound message goes through client.messages.send(params). The params shape is a discriminated — common fields (to, optional replyTo, optional bizOpaqueCallbackData) plus exactly one content key.

Recipient format

to is a WhatsApp ID — the recipient’s phone number in international format. Either +15551234567 or 15551234567 is accepted.

Text

Pass a string for quick sends, or a for richer options:

Media

Images, videos, audio, and documents all share the same shape. Send by referencing an uploaded id or a public link:
See Media for the upload flow and size limits.

Content types

Location

Contact cards

Send one or more vCard-style contact cards:

Reactions

React to an incoming message by ID. Use an empty string for emoji to remove a reaction.

Replies

Thread a reply by setting replyTo:

Interactive and templates

Rich messages — buttons, lists, product carousels, flows, and pre-approved templates — have their own pages:

Mark as read

Clear unread state on the recipient’s side:

Send result

Every send() returns a — record messageId if you plan to reply to, react to, or track status for that message.

Abort signal

Every method accepts an optional RequestOptions with an AbortSignal: