Send Flow Message
Send a WhatsApp Flow as a session message. Tapping the CTA opens the Flow inside WhatsApp.
The Flow itself is authored and published in Meta Business Manager — this API only sends it.
Pass either flow_id or flow_name, never both.
flow_token is pass-through: whatever you set is echoed back verbatim when the customer
submits, so use it to correlate the submission with your own records. The submission arrives
as an inbound message with message_type: flow_response and is delivered to your webhook
through the message.incoming event.
Being a session message, this only reaches customers inside the 24-hour window. To open a Flow from a business-initiated message, send a template with a FLOW button instead.
Authorization
ApiKeyAuth API key from your dashboard (Settings > API Keys)
In: header
Header Parameters
Optional. Attribute this send to a specific agent, overriding the agent bound to the API key. The agent must belong to your account and be active (role AGENT, parent = your account) — otherwise the request returns 400. Drives customer assignment, agent allotment limits, and the wallet ledger entry.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/messages/send#flow" \ -H "X-AGENT-ID: agt_abc123" \ -H "Content-Type: application/json" \ -d '{ "to": "919876543210", "message": { "message_type": "flow", "text": "Book your appointment in a few taps.", "footer_text": "Takes under a minute", "flow": { "flow_id": "1572550654182298", "flow_token": "order-8891", "cta": "Book now", "action": "navigate", "screen": "RECOMMEND" } } }'{
"success": true,
"data": {
"id": "clx9abc123def456"
}
}{
"success": false,
"message": "to field is required"
}{
"success": false,
"message": "user not authenticated"
}{
"success": false,
"message": "insufficient balance to send message"
}{
"success": false,
"message": "internal server error"
}

