Send a message
Send a WhatsApp message to a recipient through a connected channel.
type, then fill content with the fields for that message shape.
Unlike Meta’s Cloud API (messaging_product, phone_number_id), Wazapin uses a channel-centric body: channel_id, to, type, and content.
Supported message types
- text — Plain text with optional quoted reply
- image — Images with optional caption
- video — Videos with optional caption
- audio — Audio files and voice notes
- document — PDFs and files with optional caption and filename
- sticker — WebP stickers
- location — Map pin with coordinates
- location_request — Ask the user to share their location
- contact — Contact card (vCard-style)
- template — Approved Meta templates (body, header, buttons)
- buttons — Interactive quick-reply buttons (up to 3)
- list — Interactive list picker
- reaction — Emoji reaction on an existing message
- mark_as_read — Mark a provider message as read
Authentication
Request body
wzp_abc123). List channels with GET /v1/channels.+ (for example 6281234567890).to. Prefer to in new integrations.to.content fields.type. Shape changes per message type — see Content by type.Supported type values
type | Required content fields | Notes |
|---|---|---|
text | body or text | content.text can be a string or { "body": "..." }. Optional reply_to.id. |
image | media_url | Optional caption. |
video | media_url | Optional caption. |
audio | media_url | AAC, AMR, MP3, M4A, OGG. Max 16 MB. |
document | media_url | Optional caption, file_name. Max 100 MB. |
sticker | sticker_url or media_url | WebP. Static ≤ 100 KB, animated ≤ 500 KB. |
template | template.name, template.language.code | Often needs template.components for variables. |
buttons | body, buttons | Up to 3 { id, title } buttons. |
list | body, button_text, sections | Sections contain rows with id, title, optional description. |
location | name, address, latitude, longitude | Decimal degrees. |
location_request | body or text | Prompts the user to share location. |
contact | full_name, phone | Optional organization. |
reaction | message_id, reaction | Optional from_me, participant. |
mark_as_read | message_id | Marks a provider message as read. |
Media field aliases
Forimage, video, audio, and document, Wazapin accepts compatibility aliases:
| Canonical field | Accepted aliases | Notes |
|---|---|---|
media_url | media, url | Prefer media_url in public integrations. |
media_type | mediaType, type, mediatype | Usually optional — inferred from top-level type. |
file_name | fileName | Mainly for document. |
Content by type
- Text
- Image
- Video
- Audio
- Document
- Template
- List
- Location
- Contact
- Reaction
| Field | Required | Description |
|---|---|---|
content.body | Yes* | Message text. Prefer for new integrations. |
content.text | Yes* | String or { "body": "..." } — compatibility alias. |
content.reply_to.id | No | Provider message ID to quote-reply. |
content.reply_to.participant | No | Required in some group or multi-device contexts. |
Response
On success the API returns201 Created with a queued message record:
GET /v1/messages/{messageID}/status. See Message lifecycle.
Advanced types
The API also supportscta_url, media_carousel, product_carousel, single_product, multi_product, catalog, link, poll, address, presence, edit_message, and delete_message. These are available in the implementation but not yet covered by getting-started guides.
Related
- Sending overview — session vs template window
- Channel support matrix — official vs unofficial behavior
- Webhooks — inbound replies and delivery events
- SDK messages — TypeScript helpers and builders
Authorizations
API key with wzp_ prefix
Body
Request body for sending a WhatsApp message through a connected channel.
Connected WhatsApp channel ID (e.g. wzp_abc123).
1Payload for the selected type. Shape varies by message type — see docs for required fields per type.
Message type: text, image, video, audio, document, sticker, template, buttons, list, location, location_request, contact, reaction, mark_as_read, and more.
1Optional conversation ID. If omitted, Wazapin resolves or creates the conversation for the destination.
Recipient phone number in international format without + (e.g. 6281234567890).
Alias for to. Prefer to in new integrations.
Response
Created