Send a message
Create or reuse a Bow Chat conversation, send a free-form or approved template message, and store the returned message identity.
OpenAPI contractBefore sending
You need an account_id, inbox_id, contact_id, and the contact's source_id for that inbox. Choose content permitted by the channel:
- WhatsApp Business Platform: use an approved template when the customer-service window or message type requires it.
- WhatsApp Web: keep sends low-volume, expected, and consented; this connection is not a bulk API.
- Customer Rooms and other provisioned channels: follow the channel contract agreed for the workspace.
Create the conversation
curl --request POST \
--url https://app.bow.chat/api/v1/accounts/ACCOUNT_ID/conversations \
--header 'api_access_token: BOW_CHAT_TOKEN' \
--header 'content-type: application/json' \
--data '{"source_id":"40722123456","inbox_id":14001,"contact_id":84291,"status":"open"}'
Store the returned id as the conversation display ID. Reuse the same contact/inbox conversation instead of creating a new thread for every notification.
Send free-form content
curl --request POST \
--url https://app.bow.chat/api/v1/accounts/ACCOUNT_ID/conversations/CONVERSATION_ID/messages \
--header 'api_access_token: BOW_CHAT_TOKEN' \
--header 'content-type: application/json' \
--data '{"content":"Your appointment is confirmed for 14:30.","message_type":"outgoing","private":false}'
Free-form content works only where the selected channel permits it.
Send an approved WhatsApp template
curl --request POST \
--url https://app.bow.chat/api/v1/accounts/ACCOUNT_ID/conversations/CONVERSATION_ID/messages \
--header 'api_access_token: BOW_CHAT_TOKEN' \
--header 'content-type: application/json' \
--data '{"content":"Your appointment is confirmed for 14:30.","message_type":"outgoing","private":false,"template_params":{"name":"appointment_confirmation","category":"UTILITY","language":"ro","processed_params":{"body":{"1":"14:30"}}}}'
The template name, language, category, and parameters must match the approved template in the WhatsApp Business account. Meta can reject or reclassify templates.
Store these fields
- Your business-event ID, such as
appointment:84291:2026-09-10T14:30. - Bow Chat
message.id. - Conversation display ID.
- Sender inbox ID and channel.
- Initial acceptance time and latest delivery state.
- Any terminal error and the one fallback decision, if one was made.
A 200 response means Bow Chat accepted the request. It is not proof of delivery. Continue with Webhooks and Delivery and fallback.