WhatsApp Flows API: forms inside the conversation
A WhatsApp Flow is a form that opens inside the conversation: several screens, fields and choices, without leaving WhatsApp. Nodium manages its life cycle at Meta through a REST API (create, version, preview, publish, send) and delivers each answer to your webhook.
What you can do
POST /flowscreates a draft at Meta; without JSON of your own it starts from a four-screen quote request.POST /flows/{id}/versionssaves a new version, which Meta validates:validationErrorssays what to fix.GET /flows/{id}/previewreturns the page Meta renders: the form as on a phone.POST /flows/{id}/publishis final: a published Flow can no longer be changed. To change it, duplicate it.- A dynamic Flow calls your own endpoint between screens: Nodium decrypts Meta's call, relays it to your HTTPS address and encrypts your answer.
Send a Flow
curl https://nodium.io/api/v1/messages \ -H "Authorization: Bearer $NODIUM_KEY" \ -H "Content-Type: application/json" \ -d '{ "channelId": "<channel id>", "to": "+33612345678", "type": "interactive", "form": { "kind": "flow", "flowId": "<meta flow id>", "buttonLabel": "Book a slot" }, "idempotencyKey": "booking-1042-form" }'An interactive Flow message goes out inside the 24-hour window. To open a Flow for someone who has not written, or in a broadcast, put it on a button of an approved template.
Read the answers
A completed form arrives as message.received with data.reply.kind set to flow, the fields the person filled, and your own flowToken when you sent one.
Frequently asked questions
Can I change a published Flow?
No, this is Meta's rule: a published Flow is final. Duplicate it into a new draft, change the draft, publish it, and deprecate the old one.
Does a Flow need my own server?
Not always. A static Flow carries everything in its JSON. A dynamic Flow, which fetches data between screens, calls an HTTPS endpoint of yours through Nodium.