I'm building a WhatsApp Flow with a data_exchange action. When validating user input (e.g. time format on the BIRTH_DETAILS screen), I return a 200 OK response with the expected JSON format:
{
"version": "3.0",
"screen": "BIRTH_DETAILS",
"data": {
"error_messages": {
"birth_time": "Time format invalid — please use 14:30"
}
}
}
The birth_time field is correctly defined in the Flow screen:
"error_messages": {
"type": "object",
"__example__": {
"birth_time": "Please enter a valid time (e.g., 14:30)"
}
}
.............................
{
"type": "TextInput",
"name": "birth_time",
"required": true,
"label": "Your birth time"
}
My endpoint encrypts the response as expected using AES-128-GCM and returns it directly in the body (with isBase64Encoded: false).
✅ What works:
❌ What doesn’t work:
I'm wondering if this is:
Has anyone successfully displayed field-level errors in WhatsApp Flows during data_exchange?
Thanks for all those details. I just had a look at your Flow, and you need to either:
Wrap your components in a Form, and provide "error-messages" as a property.
Provide each error individually to each component with the property "error-message".
Right now you've defined "error_messages" in "data", but you are not making use of it.