Send flow message
Send a published flow as an interactive message with a CTA button. When the recipient taps the button, the flow opens natively in WhatsApp. Flow responses are received via webhooks.
API key authentication - use your Zernio API key as a Bearer token
In: header
WhatsApp social account ID
Recipient phone number (E.164 format, e.g. +1234567890)
Published flow ID
CTA button text (e.g. 'Book Now', 'Sign Up')
length <= 20Action type: navigate opens a screen directly, data_exchange hits your endpoint first
"navigate""navigate" | "data_exchange"Unique token to correlate responses. Auto-generated UUID if omitted.
length <= 200Message body text
Optional footer text
Set true to test an unpublished (DRAFT) flow
Response Body
application/json
application/json
curl -X POST "https://zernio.com/api/v1/whatsapp/flows/send" \ -H "Content-Type: application/json" \ -d '{ "accountId": "507f1f77bcf86cd799439011", "to": "+1234567890", "flow_id": "1234567890", "flow_cta": "Get a Quote", "flow_action": "navigate", "flow_action_payload": { "screen": "LEAD_FORM" }, "body": "Hi! Fill out this quick form to get a personalized quote." }'{
"success": true,
"messageId": "string"
}{
"error": "Unauthorized"
}Publish flow POST
Publish a DRAFT flow. **This is irreversible.** Once published, the flow and its JSON become immutable and the flow can be sent to users. To update a published flow, create a new flow (optionally cloning this one via `cloneFlowId`).
Upload flow JSON PUT
Upload or update the Flow JSON for a DRAFT flow. The Flow JSON defines all screens, components (text inputs, dropdowns, date pickers, etc.), and navigation. Meta validates the JSON on upload and returns any validation errors. See: https://developers.facebook.com/docs/whatsapp/flows/reference/flowjson