Messaging

WhatsApp messaging capabilities

This page lists what an integration can send and receive on WhatsApp through Tyxter today, and what is not supported yet. Check it before designing a feature or asking support whether something exists. The request and response shapes live in the Messages API reference, the inbound shapes in the webhooks guide, and attachments in the media guide.

Send

Every send is POST /v1/messages with channel: "whatsapp", a sender, a recipient and a message whose type is text, template, media, interactive or flow. Free-form types (everything except template) are accepted only inside the 24-hour customer-service window that the recipient's own inbound message opens; outside it, send an approved template.

What you want to sendSupportedHow
TextYesmessage: { "type": "text", "text": { "body": "…" } }
Image, document, audio, video, stickerYesmessage: { "type": "media", "media": { "kind": "image", "link": "https://…", "caption": "…" } }; the source is exactly one of link, asset_id, inline, id or, for audio, a TTS source. caption applies to image, document and video
Voice noteYesmedia.kind: "audio" with voice: true and an OGG/Opus mono file
Approved templateYesmessage.type: "template"; required outside the customer-service window
Reply buttons and listsYesmessage.type: "interactive" with interactive.type button or list
Native Pix order detailsYesmessage.type: "interactive" with interactive.type: "order_details"
WhatsApp FlowYesmessage.type: "flow", see the flows guide
Mark as read and show typingYesPOST /v1/messages/{message_id}/typing on the inbound message you are answering; not billed
Reaction emoji on a messageYestype: "reaction", reaction: { message_id: "<Tyxter inbound ID>", emoji: "👍" }; empty emoji removes it. Same conversation, target at most 30 days old, open 24-hour service window. Normal outbound billing; status stops at sent.
Reply quoting a specific messageYesTop-level reply_to: { message_id: "<Tyxter message ID>" } on any WhatsApp message type. The target must belong to the same environment and conversation
Location, contact cardNot yetNo outbound type
Message into a groupNoPOST /v1/messages takes an individual recipient; see WhatsApp Business groups for the separate beta

Receive

Inbound messages arrive as the message.received webhook, and every one can also be read with GET /v1/messages/{message_id}. content.type says which block carries the content.

What the customer sendsSupportedWhat you get
TextYescontent.type: "text", content.text.body
Image, document, audio, videoYescontent.type: "media" with media.kind, media.asset_id and media.download, the method and path that mint a five-minute download URL
StickerYescontent.type: "media" with media.kind: "sticker" and mime_type: "image/webp"; download it like any other attachment and pass the WebP to your own vision model. Tyxter does not describe images
Voice note or audioYesmedia.kind: "audio", with optional media.voice; speech-to-text is an opt-in call, POST /v1/messages/{message_id}/transcription
Button or list reply, template quick replyYescontent.type: "interactive", the selection under content.interactive
Reaction to a message in the conversationYesYours or the customer's own, as in WhatsApp. message.reaction_received preserves the target snapshot and adds data.reaction: { emoji, removed, from, reacted_message_id }. Sandbox inbound simulation supports the same shape.
Reply quoting an earlier message, forwardYescontent.context carries reply_to: { message_id, provider_message_id } (or null), forwarded and frequently_forwarded. An unresolved target has message_id: null. Detail and include=payload list reads expose top-level context
Location, contact card, order, system noticePartlycontent.type: "unknown" with unknown.provider_type; read the raw provider envelope with GET /v1/messages/{message_id}
Video note, poll, some view-once contentNocontent.type: "unsupported": Meta does not deliver these (error 131051), so there is nothing to fetch; ask the customer for a regular video, audio or text

Not supported yet

Outbound locations and contact cards are not yet supported. Instagram quoted replies are not supported. Tell us what you need with POST /v1/feedback.