Messages

By Orqestra · Published September 2, 2026

Overview

Send messages to a customer. One endpoint covers text, media, sticker and template sends — the type field selects which. Sends are limited to WhatsApp and Instagram; Web Chat, Telegram and TikTok Shop conversations are readable through the API but not addressable from here.

1 endpoint. Requires chats.reply on the token.

MethodPathWhat it does
POST/messagesSend a message

Endpoints

POST /messages

Send a message

Send a text, media, sticker, or template message via WhatsApp or Instagram. Use `channel` to select the channel type and `channelId` to target a specific OrgChannel instance. If no active session exists (WhatsApp), an `agentId` must be provided to start one.

Requires the chats.reply permission.

Request body

FieldTypeRequiredDescription
tostringrequiredRecipient identifier — phone number for WhatsApp, igId for Instagram
channelIdstringoptionalOrgChannel ID. If omitted, inferred from existing chat or org default.
channelWHATSAPP · INSTAGRAMoptionalChannel type. Defaults to WHATSAPP. Defaults to "WHATSAPP".
agentIdstringoptionalAgent user ID. Required if no active session exists (WhatsApp only).
takeOverbooleanoptionalSet true to force reassignment if contact has session with another agent
typetext · image · document · video · audio · sticker · templaterequiredMessage type
textstringoptionalText content (required for type text)
mediaIdstringoptionalWhatsApp media ID (required for media/sticker types)
mediaUrlstringoptionalMedia URL (alternative to mediaId)
captionstringoptionalMedia caption
fileNamestringoptionalDocument filename
templateNamestringoptionalTemplate name (required for type template)
templateLanguagestringoptionalTemplate language code (required for type template)
templateComponentsarray of anyoptionalTemplate variable components
previewUrlbooleanoptionalEnable URL preview in text messages
contextIdstringoptionalReply-to message WAMID for threading

Example

curl -X POST "https://orqestra.id/api/v2/messages" \
  -H "Authorization: Bearer $ORQESTRA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "628123456789",
    "type": "text"
  }'

Responds with 200 · 400 · 401 · 403 · 404 · 409 · 429. Try it in the playground →