Skip to main content

Error Codes

Flow Management API Error Codes

When managing (creating, updating, deleting, or publishing) your Flows, you may run into the occasional error. The following table outlines the different error codes you might see, and what you can do to fix the problem. Don’t see your error code listed below? Check out this list of Cloud API error codes.

Business Endpoint Error Codes

If the Flow is using a business-provided endpoint, that endpoint may return specific HTTP response codes in case of certain types of errors to trigger appropriate client-side behavior.

On-Premise WhatsApp Business API Client Error Codes

Flow specific error codes returned by On-Premise Client. For the full list of On-Premise error codes see this page.

Cloud API Error Codes

Flow specific error codes returned by Cloud API. For the full list of Cloud API error codes see this page.

Error Types Reported via WebHook Alerts or Propagated Back to Endpoint

These error codes might be sent through business endpoint from client devices or be included in webhook alert payload.

Static Validation Errors

The following tables detail the static validation errors that may be returned while developing Flow JSON.

Schema Validation Errors

FLow JSON Version Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_FLOW_JSON_VERSION | Invalid Flow JSON version. | | json&lt;br /&gt;&#123;<br /> "version": "2024.0",<br /> ...<br />&#125;&lt;br /&gt; |
| MISSING_FLOW_JSON_VERSION | Flow JSON version is not specified. | Specifying the Flow JSON version is necessary. | json&lt;br /&gt;&#123;<br /> "data_api_version": "3.0",<br /> "screens": [<br /> ...<br /> ]<br />&#125;&lt;br /&gt; |
| UNSUPPORTED_FLOW_JSON_VERSION | Unsupported Flow JSON version. | Flow JSON versions which are not supported anymore. | json&lt;br /&gt;&#123;<br /> "version": 100,<br /> "screens": [<br /> ...<br /> ]<br />&#125;&lt;br /&gt; |
| UNAVAILABLE_FLOW_JSON_VERSION | The Flow JSON version is not available for your WABA ID. | Some versions are enabled only for Beta users and may not be enabled for public use. | json&lt;br /&gt;&#123;<br /> "version": "A.B",<br /> "screens": [<br /> ...<br /> ]<br />&#125;&lt;br /&gt; |
| NO_SUPPORTED_DATA_API_VERSION | No supported Data API version found for given Flow JSON version. | Data api version is required for data_exchange action.
This error should ideally never be shown in production flows if the Flow JSON version is valid. | json&lt;br /&gt;&#123;<br /> "version": "A.B",<br /> "data_api_version": "C.D",<br /> "screens": [<br /> ...<br /> ]<br />&#125;&lt;br /&gt; |
\

Routing Model Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_ROUTING_MODEL | Following screens are missing in the routing model: (screenIDs). | In data channel flow json, when screen is not present in routing_model | json&lt;br /&gt;&#123;<br /> "routing_model": {"ABC":[]},<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br />...<br /> |
| INVALID_ROUTING_MODEL | Invalid screens found in the routing model: (screenIDs). | In data channel flow json, when source screen id of routing_model does not exist | json&lt;br /&gt;&#123;<br /> "routing_model": {"ABC":[]},<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br />...<br /> |
| INVALID_ROUTING_MODEL | Following screens are not connected to any of the screens: (screenIDs). A connection is formed by the navigate screen action. | In data channel less flow json, when screen id not present in routing_model generated by actions data | json&lt;br /&gt;&#123;<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "layout": {<br /> "children": [<br /> { "type": "Footer", <br /> "on-click-action": { <br /> "name": "data_exchange", <br />...<br /> |
| INVALID_ROUTING_MODEL | Following screens are not connected with the rest of the screens : (screenIDs). All screens should be connected. | In data channel flow json, when some screens can not be reached out starting from other screens | json&lt;br /&gt;&#123;<br /> "routing_model": {<br />"FIRST_SCREEN":["SECOND_SCREEN"],<br />"THIRD_SCREEN":[]<br />},<br />...<br /> |
| INVALID_ROUTING_MODEL | Following screens are not connected with the rest of the screens via navigate screen action: (screenIDs). All screens should be connected. | In data channel less flow json, when some screens can not be reached out starting from other screens, via ‘navigate’ actions | json&lt;br /&gt;&#123;<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Footer",<br /> "on-click-action": {<br /> "name": "navigate",<br /> "next": {<br /> "name": "SECOND_SCREEN",<br /> "type": "screen"<br /> },<br /> }<br /> }<br /> ]<br /> }<br /> },<br /> {<br /> "id": "SECOND_SCREEN",<br /> ...<br /> },<br /> {<br /> "id": "THIRD_SCREEN",<br /> ...<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_ROUTING_MODEL | No entry screen found in the routing model. Expected a screen with no inbound edges as the entry screen. | In data channel flow json, when there is no entry screens, which do not have incoming screen | json&lt;br /&gt;&#123;<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Footer",<br /> "on-click-action": {<br /> "name": "navigate",<br /> "next": {<br /> "name": "SECOND_SCREEN",<br /> "type": "screen"<br /> },<br /> }<br /> }<br /> ]<br /> }<br /> },<br /> {<br /> "id": "SECOND_SCREEN",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Footer",<br /> "on-click-action": {<br /> "name": "navigate",<br /> "next": {<br /> "name": "FIRST_SCREEN",<br /> "type": "screen"<br /> },<br /> }<br /> }<br /> ]<br /> },<br /> ...<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_ROUTING_MODEL | No entry screen found in the routing model. Add a screen that is not used as the next screen in any of the navigate actions. | In data channel less flow json when there is no entry screen i.e. a screen which does not have an incoming screen. | json&lt;br /&gt;&#123;<br /> "routing_model": {<br />"FIRST_SCREEN":["SECOND_SCREEN"],<br />"SECOND_SCREEN":["FIRST_SCREEN"]<br />},<br />...<br /> |
| INVALID_ROUTING_MODEL | Loop detected in the routing model for screens: (screenIds). | In data channel flow json, when there is no loop between two screens. | json&lt;br /&gt;&#123;<br /> "routing_model": {<br />"FIRST_SCREEN":["SECOND_SCREEN"],<br />"SECOND_SCREEN":["FIRST_SCREEN"]<br />},<br />...<br /> |
| INVALID_ROUTING_MODEL | Invalid screen found in the routing model: (screenId). | In data channel flow json, when a screen is not present in destinations in routing_model. | json&lt;br /&gt;&#123;<br /> "routing_model": {"FIRST_SCREEN": []},<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "terminal": true,<br /> ...<br /> },<br /> {<br /> "id": "SECOND_SCREEN",<br /> ...<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_ROUTING_MODEL | Number of branches exceeds the max limit of 10 for screen: (screenId). | In data channel flow json, a screen cannot have more than 10 outgoing screens. | json&lt;br /&gt;&#123;<br /> "routing_model": {<br />"FIRST_SCREEN":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],<br />...<br />},<br />...<br /> |
| INVALID_ROUTING_MODEL | Number of branches exceeds the max limit of 10 for screen: (screenId). Reduce navigate actions for the screen. | In data channel less flow json, when a screen has more than 10 outgoing screens calculated by ‘navigate’ actions | json&lt;br /&gt;&#123;<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Footer1",<br /> "on-click-action": {<br /> "name": "navigate",<br /> "next": {<br /> "type": "screen",<br /> "name": "1",<br /> ...<br /> },<br /> {<br /> "type": "Footer2",<br /> "on-click-action": {<br /> "name": "navigate",<br /> "next": {<br /> "type": "screen",<br /> "name": "2",<br /> ...<br /> }, <br /> ... <br /> {<br /> "type": "Footer11",<br /> "on-click-action": {<br /> "name": "navigate",<br /> "next": {<br /> "type": "screen",<br /> "name": "11",<br /> ...<br /> },<br /> ...<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_ROUTING_MODEL | Backward route [(destination)-)(source)] corresponding to forward route [(source)-)(destination)] is not allowed in the routing model. Only forward routes can be specified. | In data channel flow json, when there is a route from A -) B then B -) A. | json&lt;br /&gt;&#123;<br /> "routing_model": {<br />"FIRST_SCREEN":["SECOND_SCREEN", ...],<br />"SECOND_SCREEN":["FIRST_SCREEN", ...]<br />},<br />...<br /> |
| INVALID_ROUTING_MODEL | Missing direct route from screen 'sourcetoscreen{source}' to screen '' in the routing model, while it exists in the navigate screen action of screen ’$’. | In data channel flow json, when the routes formed by navigate actions are not present in the routing model supplied in the template | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "routing_model": {"FIRST_SCREEN":[]},<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Footer",<br /> "on-click-action": {<br /> "name": "navigate",<br /> "next": {<br /> "type": "screen",<br /> "name": "SECOND_SCREEN"<br /> },<br /> ...<br /> },<br /> {<br /> "id": "SECOND_SCREEN",<br /> ...<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
\

On-click Action Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_ON_CLICK_ACTION_PAYLOAD | Missing Form component &#123;expression&#125; for screen '{screenId}’. | Form binding does not exist | json&lt;br /&gt;&#123;<br /> "type": "Form",<br /> "name": "PASS_CUSTOM_VALUE",<br /> "children": [<br /> &#123;<br /> "type": "Footer",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;<br /> "input": "$&#123;form.not_present&#125;"<br /> &#125;<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_ON_CLICK_ACTION_PAYLOAD | Missing dynamic data ‘&#123;expression&#125;' in the data model for screen {screenId}.
Missing dynamic data ‘&#123;expression&#125;' in the screen data model. | Data binding does not exist | ```json&lt;br /&gt;&#123;<br /> "type": "Form",<br /> "name": "PASS_CUSTOM_VALUE",<br /> "children": [<br /> &#123;<br /> "type": "Footer",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;<br /> "input": "{data.not_present}”
}
}
}
]
}<br />|\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | In the complete action payload, PhotoPicker can only be used if the value of the 'max-uploaded-photos' property doesn't exceed 1. | PhotoPicker’s 'max-uploaded-photos' property value has to be 1 to be used in top level of on-click-action payload |json<br />{
“children”: [
{
“type”: “PhotoPicker”,
“name”: “photo”,
“label”: “PASS_CUSTOM_VALUE”
},
{
“type”: “Footer”,
“label”: “PASS_CUSTOM_VALUE”,
“on-click-action”: {
“name”: “complete”,
“payload”: {
“photo”: ”${screen.FIRST_SCREEN.form.photo}”
}
}
}
]
}<br />|\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | In the complete action payload, DocumentPicker can only be used if the value of the 'max-uploaded-documents' property doesn't exceed 1. | DocumentPicker 'max-uploaded-documents' property value has to be 1 to be used in top level of on-click-action payload |json<br />{
“children”: [
{
“type”: “DocumentPicker”,
“name”: “doc”,
“label”: “PASS_CUSTOM_VALUE”
},
{
“type”: “Footer”,
“label”: “PASS_CUSTOM_VALUE”,
“on-click-action”: {
“name”: “complete”,
“payload”: {
“doc”: ”${screen.FIRST_SCREEN.form.doc}”
}
}
}
]
}<br />|\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | The PhotoPicker component's value is not allowed in the payload of the navigate action. | The native component's value is not allowed in the payload of the navigate action. |json<br />{
“children”: [
{
“type”: “PhotoPicker”,
“name”: “photo”,
“label”: “PASS_CUSTOM_VALUE”
},
{
“type”: “Footer”,
“label”: “PASS_CUSTOM_VALUE”,
“on-click-action”: {
“name”: “navigate”,
“payload”: {
“photo”: ”${screen.FIRST_SCREEN.form.photo}”
}
}
}
]
}<br />|\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | The DocumentPicker component's value is not allowed in the payload of the navigate action. | The native component's value is not allowed in the payload of the navigate action. |json<br />{
“children”: [
{
“type”: “DocumentPicker”,
“name”: “doc”,
“label”: “PASS_CUSTOM_VALUE”
},
{
“type”: “Footer”,
“label”: “PASS_CUSTOM_VALUE”,
“on-click-action”: {
“name”: “navigate”,
“payload”: {
“doc”: ”${screen.FIRST_SCREEN.form.doc}”
}
}
}
]
}<br />``` |
\

Complete Action Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_COMPLETE_ACTION | On-click-action ‘complete’ can only be configured on a terminal screen. | Complete action can only be in terminal screens | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "Footer",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
\

| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_NAVIGATE_ACTION_PAYLOAD | No data model is defined in the next screen ‘(screenName)’. | Navigate action’s target screen does not have a data model.
In data channel less flows, data passed from the current screen must be used on the navigate action’s target screen.
If it is not required on the next screen but some screen later in the Flow, use global dynamic data binding to access the data from version 4.0 and above. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> ...<br /> &#123;<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "SECOND_SCREEN"<br /> &#125;,<br /> "payload": &#123;<br /> "name": "some name"<br /> &#125;<br /> &#125;<br /> &#125;<br /> &#125;,<br /> &#123;<br /> "id": "SECOND_SCREEN",<br /> "layout": &#123;<br /> ...<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_NAVIGATE_ACTION_PAYLOAD | Following fields are missing in the next screen’s data model: [fieldNames]. | Fields in the navigation action payload are missing in the next screen’s data model. | json<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> ...<br /> &#123;<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "SECOND_SCREEN"<br /> &#125;,<br /> "payload": &#123;<br /> "name": "some name"<br /> &#125;<br /> &#125;<br /> &#125;<br /> &#125;,<br /> &#123;<br /> "id": "SECOND_SCREEN",<br /> "data": &#123;&#125;,<br /> "layout": &#123;<br /> ...<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_NAVIGATE_ACTION_PAYLOAD | Following fields are expected in the next screen’s data model but missing in payload: [fieldNames]. | Fields in the next screen’s data model are missing from navigate action’s payload. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> ...<br /> &#123;<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "SECOND_SCREEN"<br /> &#125;,<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> &#125;,<br /> &#123;<br /> "id": "SECOND_SCREEN",<br /> "data": &#123;<br /> "name": &#123;"type": "string"&#125;<br /> &#125;,<br /> "layout": &#123;<br /> ...<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_NAVIGATE_ACTION_PAYLOAD | Schema of payload data at ‘&#123;payloadField&#125;' on screen '{payloadScreen}’ is not matching with schema of data model field on screen ‘&#123;dataModelScreen&#125;'. Property is expecting '{dataModelFieldType}’ but got ‘&#123;payloadFieldType&#125;'. | Type of field in navigate action payload do not match that in next screen’s data model | ```json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> ...<br /> &#123;<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "SECOND_SCREEN"<br /> &#125;,<br /> "payload": &#123;<br /> "name": 123<br /> &#125;<br /> &#125;<br /> &#125;<br /> &#125;,<br /> &#123;<br /> "id": "SECOND_SCREEN",<br /> "data": &#123;<br /> "name": &#123;"type": "string"&#125;<br /> &#125;,<br /> "layout": &#123;<br /> ...<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt;``` |\ | `INVALID_NAVIGATE_ACTION_NEXT_SCREEN_NAME` | Same screen navigation is not allowed. Loop detected at \[ScreenNames\]. | The source and target screen of navigate action are the same | ```json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> ...<br /> &#123;<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "FIRST_SCREEN"<br /> &#125;,<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt;``` |\ | `INVALID_NAVIGATE_ACTION_NEXT_SCREEN_NAME` | Unknown screen ids found: \[screenNames\]. | The target screen of navigate action not present in flow json | ```json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> ...<br /> &#123;<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "not_present"<br /> &#125;,<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt;``` |\ | `INVALID_NAVIGATE_ACTION_PAYLOAD` | Schema of dynamic data '{payloadFieldValue}’ is not matching schema of data model field ‘&#123;payloadField&#125;' on screen '{dataModelScreen}’. Property is expecting ‘&#123;dataModelFieldType&#125;' but got '{payloadFieldType}’. | The type of dynamic binding in action payload does not match that in data model of next screen | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> "layout": &#123;<br /> "children": [<br /> &#123;<br /> "type": "Form",<br /> "children": [<br /> &#123;<br /> "type": "TextInput",<br /> "name": "input"<br /> &#125;,<br /> &#123;<br /> "type": "Footer",<br /> "label": "Done",<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "SECOND_SCREEN"<br /> &#125;,<br /> "payload": &#123;<br /> "text": "$&#123;form.input&#125;"<br /> &#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;,<br /> &#123;<br /> "id": "SECOND_SCREEN",<br /> "title": "Test",<br /> "terminal": true,<br /> "data": &#123;<br /> "text": &#123;<br /> "type": "boolean",<br /> "__example__": true<br /> &#125;<br /> &#125;,<br /> ...<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_ON_CLICK_ACTION_PAYLOAD | Missing Form component &#123;expression&#125; for screen '{screenId}’. | Form binding in action payload does not exist | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> "layout": &#123;<br /> ...<br /> &#123;<br /> "type": "Form",<br /> "children": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "Done",<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "payload": &#123;<br /> "text": "$&#123;form.not_present&#125;"<br /> &#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;,<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_ON_CLICK_ACTION_PAYLOAD | Missing dynamic data ‘&#123;expression&#125;' in the data model for screen {screenId}. | Dynamic binding in action payload does not exist | TBD? |
| INVALID_ON_CLICK_ACTION_PAYLOAD | | Dynamic binding in action payload does not exist in the data model of the navigate action’s target screen. | |
| INVALID_ON_CLICK_ACTION_PAYLOAD | Invalid value found for the property ‘&#123;propertyName&#125;'. | | |\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | Properties in navigate action payload differ from properties in data model of screen '{screenName}’. | | |
| INVALID_ON_CLICK_ACTION_PAYLOAD | Value of ‘Form’ component cannot be used in form binding. | Dynamic binding in action payload references to form value | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> "layout": &#123;<br /> ...<br /> &#123;<br /> "type": "Form",<br /> "name": "form_name",<br /> "children": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "Done",<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "payload": &#123;<br /> "text": "$&#123;form.form_name&#125;"<br /> &#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;,<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
\

Screen Data Model Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_SCREEN_DYNAMIC_DATA | Missing dynamic data ‘&#123;expression&#125;' in the screen data model. | dynamic data not present in data model | ```json&lt;br /&gt;&#123;<br /> "version": "2.1", <br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "title": "Test",<br /> "terminal": true,<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "TextHeading",<br /> "text": "{data.screen_title}”
}
]
}
}
]
}<br />|\ | `INVALID_SCREEN_DYNAMIC_DATA` | Expected '$&#123;dataModelPointer&#125;' to be of type '$&#123;expectedPropertyType&#125;'. | Type of dynamic data and type of its reference field in data model are not matched |json<br />{
“version”: “2.1”,
“screens”: [
{
“id”: “SCREEN_A”,
“data”: {
“top”: {
“type”: “object”,
“properties”: {
“secondLevel”: {
“type”: “object”,
“properties”: {
“target”: {
“type”: “boolean”
}
}
}
}
}
},
“layout”: {
“children”: [
{
“type”: “TextHeading”,
“text”: “&#123;data.top.secondLevel.target&#125;"<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt;``` |\ | `INVALID_SCREEN_DYNAMIC_DATA` | Data model schema is invalid for '{expression}’. Missing schema for &#123;objectProperty&#125;. | Required property of component’s field is not in schema defined in data model | ```json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "data": &#123;<br /> "products": &#123;<br /> "type": "array",<br /> "items": &#123;<br /> "type": "object",<br /> "properties": &#123;<br /> "id": &#123;<br /> "type": "string"<br /> &#125;<br /> &#125;<br /> &#125;,<br /> "__example__": []<br /> &#125;<br /> &#125;,<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "Form",<br /> "children": [<br /> &#123;<br /> "type": "CheckboxGroup",<br /> "name": "PASS_CUSTOM_VALUE",<br /> "data-source": "{data.products}”
}
]
}
]
}
}
]
}<br />|\ | `INVALID_SCREEN_DATA` | Property '__example__' is allowed only as a top level property of data model. Invalid entry: '(path to error)'. | ‘__example__’ can only be present in the top level fields of the data model. |json<br />{
“version”: “2.1”,
“screens”: [
{
“id”: “SCREEN_A”,
“data”: {
“initial_values”: {
“type”: “object”,
“properties”: {
“number”: {
“type”: “number”
},
example”: {“number”: 8553906697}
},
example”: {
“number”: 8553906697
}
}
},

}
]
}<br />|\ | `INVALID_SCREEN_DATA` | Missing the definition of property ‘type’. | Fields in data model must have ‘type’ property |json<br />{
“version”: “2.1”,
“screens”: [
{
“id”: “SCREEN_A”,
“data”: {
“name”: {}
},

}
]
}<br />|\ | `INVALID_SCREEN_DATA` | Expected the property ‘type’ to be of type string. | The value of the ‘type’ property in the data model must be of type ‘string’. |json<br />{
“version”: “2.1”,
“screens”: [
{
“id”: “SCREEN_A”,
“data”: {
“name”: {
“type”: 123
}
},

}
]
}<br />|\ | `INVALID_SCREEN_DATA` | Missing the schema for property 'items' in array. | The schema of ‘array’ type must have ‘items’ property |json<br />{
“version”: “2.1”,
“screens”: [
{
“id”: “SCREEN_A”,
“data”: {
“name”: {
“type”: “array”,
example”: []
}
},
“layout”: {
“children”: […]
}
}
]
}<br />|\ | `INVALID_SCREEN_DATA` | Expected the property 'items' to be of type boolean or object. | The type of ‘items’ property can only be boolean or object |json<br />{
“version”: “2.1”,
“screens”: [
{
“id”: “SCREEN_A”,
“data”: {
“name”: {
“type”: “array”,
“items”: “string”,
example”: []
}
},
“layout”: {
“children”: […]
}
}
]
}<br />|\ | `INVALID_SCREEN_DATA` | Invalid data model schema. Expected property '__example__' to be of type (type in schema), but found (actual type). | The type of ‘__example__’ property does not match schema definition |json<br />{
“version”: “2.1”,
“screens”: [
{
“id”: “SCREEN_A”,
“data”: {
“name”: {
“type”: “number”,
example”: “123”
}
},
“layout”: {
“children”: […]
}
}
]
}<br />|\ | `INVALID_SCREEN_DATA` | Global Dynamic data ‘(expression)’ on screen ROOT does not exist, but is used on screen (screenID). | The data, which dynamic binding expression refers to, does not exist |json<br />{
“id”: “MAIN”,
“title”: “Title”,
“terminal”: true,
“layout”: {
“type”: “SingleColumnLayout”,
“children”: [
{
“type”: “Footer”,
“label”: “&#123;screen.ROOT.form.intro_text.type&#125;",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;&lt;br /&gt;``` |\ | | Global dynamic data '{expression}’ used on screen ‘&#123;screenId&#125;' for {componentType} property ‘&#123;property&#125;' is invalid since screen '{screenId}’ represents current screen. Convert expression to local referencing of the form &#123;data.(property)&#125;.<br />Global dynamic data '{expression}’ used on screen ‘&#123;currentScreenId&#125;' for {componentType} property ‘&#123;property&#125;' is invalid since screen '{referencedScreenId}’ is missing in the Flow JSON. | | |
| INVALID_SCREEN_DYNAMIC_DATA | &#123;screen.ROOT.data.products.items.properties.title&#125; on screen 'ROOT' for TextHeading property 'text' is invalid as 'items' is defined in an array schema in the data model. | When the type of property using dynamic data (&#123;data.val}) does not match the type specified in the data model.
For example, the TextHeading property ‘text’ expects a string value. If it is taking a dynamic data value whose type is an array, this error is returned. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "ROOT",<br /> "title": "Test",<br /> "data": &#123;<br /> "products": &#123;<br /> "type": "array",<br /> "items": &#123;<br /> "type": "object",<br /> "properties": &#123;<br /> "id": &#123;"type": "string"&#125;,<br /> "title": &#123;"type": "string"&#125;<br /> &#125;<br /> &#125;,<br /> "__example__": []<br /> &#125;<br /> &#125;,<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "type": "screen",<br /> "name": "MAIN_SCREEN"<br /> &#125;,<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;,<br /> &#123;<br /> "id": "MAIN_SCREEN",<br /> "title": "Test",<br /> "terminal": true,<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "TextSubheading",<br /> "text": "$&#123;screen.ROOT.data.products.items.properties.title&#125;"<br /> &#125;,<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_SCREEN_DYNAMIC_DATA | `&#123;expression&#125; defined for screen '{screenId}’ &#123;componentType&#125; property '{componentProperty}’ is invalid as its schema is missing in the data model.` | When the type of property using dynamic data ({data.val&#125;) is missing in the data model. | |\ | `INVALID_SCREEN_DYNAMIC_DATA` | Expected '{dataModelPointer}’ to be of one of these types: [string, object]. | Properties like ‘error-message’ can only be of type string or object. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "data_api_version": "3.0",<br /> "routing_model": &#123;&#125;,<br /> "screens": [<br /> &#123;<br /> "id": "screenA",<br /> "title": "Screen Title",<br /> "terminal": true,<br /> "data": &#123;<br /> "error": &#123;<br /> "type": "boolean",<br /> "__example__": true<br /> &#125;<br /> &#125;,<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "PhotoPicker",<br /> "name": "photo",<br /> "label": "Add ID proof",<br /> "error-message": "$&#123;data.error&#125;"<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
\

Min Max Limit Violation Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| MAX_SCREENS_NUMBER | Maximum number of screens allowed per Flow is 100 but found (actualCount). | A Flow cannot have more than 100 screens. | A Flow with more than 100 screens.
json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_ONE",<br /> ...<br /> &#125;,<br /> ...<br /> &#123;<br /> "id": "SCREEN_HUNDRED_ONE",<br /> ...<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt; |
| MAX_EMBEDDED_LINK_PER_SCREEN
MAX_FOOTER_PER_SCREEN
MAX_IMAGE_PER_SCREEN
MAX_OPT_IN_PER_SCREEN | Maximum number of (componentName) allowed per screen is (maxAllowedCount) but found (actualCount). | Limit on the count of certain components that be added per screen is as follows-
Footer
1
EmbeddedLink
2
Image
3
OptIn
5 | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> "refresh_on_back": true,<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Footer",<br /> "label": "Submit",<br /> "on-click-action": {<br /> "name": "complete",<br /> "payload": {}<br /> }<br /> },<br /> {<br /> "type": "Footer",<br /> "label": "Submit",<br /> "on-click-action": {<br /> "name": "complete",<br /> "payload": {}<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
| MIN_VALUE_GREATER_THAN_MAX | (min_attribute_name) cannot be greater than (max_attribute_name) for (component_type) (component_name). | Components that have a minimum and maximum attribute (eg. min / max length, min-selected-items / max-selected-items) should not allow the min attribute’s value to be greater than the max attribute’s value. | json&lt;br /&gt;&#123;<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Form",<br /> "name": "PASS_CUSTOM_VALUE",<br /> "children": [<br /> {<br /> "type": "CheckboxGroup",<br /> "name": "cbg",<br /> "min-selected-items": 3,<br /> "max-selected-items": 2,<br /> "data-source": [<br /> {<br /> "id":"1",<br /> "title":"Title 1"<br /> },<br /> {<br /> "id": "2", <br /> "title": "Title 2"<br /> },<br /> {<br /> "id": "3", <br /> "title": "Title 3"<br /> }<br /> ]<br /> }<br /> ]<br /> },<br /> ]<br /> }<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
| MINIMUM_VALUE_REQUIRED
MAXIMUM_VALUE_REQUIRED | The minimum value allowed for property ’propertyNameis{propertyName}' is .
The maximum value allowed for property ’propertyNameis{propertyName}' is . | Some attributes are required to have a value between a range (min,max).
For example, min-uploaded-photos in PhotoPicker must be between [0, 30]. | json&lt;br /&gt;&#123;<br /> "screens": [<br /> {<br /> "id": "FIRST_SCREEN",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "PhotoPicker",<br /> "name": "ID_Proof",<br /> "min-uploaded-photos": -1,<br /> "max-uploaded-photos": 40,<br /> ...<br /> },<br /> ...<br /> ]<br /> }<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
\

Data_api_version | Refresh_on_back errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| MISSING_REQUIRED_PROPERTY | The property ‘data_api_version’ is required for data_exchange action. | Action data_exchange cannot be executed without a server endpoint.
Property ‘data_api_version’ indicates that Flow is connected to a server. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> "title": "screenTitle",<br /> "type": "SingleColumnLayout",<br /> "layout": {<br /> "children": [<br /> {<br /> "type": "Footer",<br /> "label": "Submit",<br /> "on-click-action": {<br /> "name": "data_exchange",<br /> "payload": {}<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> ]<br />&#125;&lt;br /&gt;
Missing data_api_version when using action data_exchange. |
| MISSING_REQUIRED_PROPERTY | The property ‘routing_model’ is required for property ‘data_api_version’. | Action data_exchange cannot be executed without a routing_model. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> "title": "screenTitle",<br /> "layout": {<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> {<br /> "type": "Footer",<br /> "label": "Submit",<br /> "on-click-action": {<br /> "name": "data_exchange",<br /> "payload": {}<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | Property ‘refresh_on_back’ can be true only when property ‘data_api_version’ is set. | Data channel less flows i.e. Flows without an endpoint setup are not allowed to set property refresh_on_back as true.If a Flow does not have property ‘data_api_version’ set, it is considered a data channel less flow. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> "refresh_on_back": true,<br /> "layout": {<br /> "children": [...]<br /> }<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
\

Naming Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| DUPLICATE_FORM_COMPONENT_NAMES | Duplicate name found for Form components: (duplicateName). | Components inside a Form must have unique names. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> "title": "Screen Title",<br /> "terminal": true,<br /> "layout": {<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> {<br /> "type": "Form",<br /> "name": "form",<br /> "children": [<br /> {<br /> "name": "textInput",<br /> "type": "TextInput",<br /> "label": "Text 1"<br /> },<br /> {<br /> "name": "textInput",<br /> "type": "TextInput",<br /> "label": "Text 2"<br /> }<br /> ]<br /> }<br /> ...<br /> ]<br /> } <br /> }<br /> ]<br /> &#125;&lt;br /&gt; |
| DUPLICATE_FORM_COMPONENT_NAMES | Duplicate name found for Form components: (duplicateName). | Components inside a Form must have unique names inside all If and switch branches. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> {<br /> "id": "PATH_SIMULATION",<br /> "layout": {<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> {<br /> "type": "If",<br /> "then": [<br /> {<br /> "type": "OptIn",<br /> "name": "name"<br /> }<br /> ],<br /> "else": [<br /> {<br /> "type": "TextInput",<br /> "name": "name1"<br /> }<br /> ]<br /> },<br /> {<br /> "type": "Switch",<br /> "cases": {<br /> "case1": [<br /> {<br /> "type": "DatePicker",<br /> "name": "name"<br /> }<br /> ],<br /> "case2": [<br /> {<br /> "type": "TextArea",<br /> "name": "name1"<br /> }<br /> ]<br /> }<br /> },<br /> {<br /> "type": "Form",<br /> "children": [<br /> {<br /> "name": "name"<br /> },<br /> {<br /> "name": "name1"<br /> }<br /> ]<br /> }<br /> ]<br /> }<br /> }<br /> ]<br />}{<br /> "version": "4.0",<br /> "screens": [<br /> {<br /> "id": "PATH_SIMULATION",<br /> "layout": {<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> {<br /> "type": "If",<br /> "then": [<br /> {<br /> "type": "OptIn",<br /> "name": "name"<br /> }<br /> ],<br /> "else": [<br /> {<br /> "type": "TextInput",<br /> "name": "name1"<br /> }<br /> ]<br /> },<br /> {<br /> "type": "Switch",<br /> "cases": {<br /> "case1": [<br /> {<br /> "type": "DatePicker",<br /> "name": "name"<br /> }<br /> ],<br /> "case2": [<br /> {<br /> "type": "TextArea",<br /> "name": "name1"<br /> }<br /> ]<br /> }<br /> },<br /> {<br /> "type": "Form",<br /> "children": [<br /> {<br /> "name": "name"<br /> },<br /> {<br /> "name": "name1"<br /> }<br /> ]<br /> }<br /> ]<br /> }<br /> }<br /> ]<br />&#125;&lt;br /&gt; |
| DUPLICATE_SCREEN_IDS | Duplicate screen id found: (duplicate screen ID). | Screen IDs must be unique. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> ... <br /> },<br /> {<br /> "id": "screenA",<br /> ... <br /> }<br /> ]<br /> &#125;&lt;br /&gt; |
| SCREEN_ID_IS_RESERVED_KEYWORD | Screen id cannot be ‘success’ since it is a reserved keyword. | ‘success’ is a reserved keyword for receiving termination response’s next screen in data_exchange action. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "success",<br /> ... <br /> }<br /> ]<br /> &#125;&lt;br /&gt; |
\

Terminal Screen Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| MISSING_FOOTER_ON_TERMINAL_SCREEN | Footer component is missing on terminal screens: (screen IDs). | Terminal screen must have a Footer component to be able to terminate the Flow. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> "title": "Screen Title",<br /> "terminal": true,<br /> "layout": {<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> {<br /> "type": "TextHeading",<br /> "text": "Heading"<br /> }<br /> ]<br /> } <br /> }<br /> ]<br /> &#125;&lt;br /&gt; |
| MISSING_TERMINAL_SCREEN | Terminal screen is required but not provided. | At least one terminal screen must exist in a Flow. | json&lt;br /&gt;&#123;<br /> "version": "2.1",<br /> "screens": [<br /> {<br /> "id": "screenA",<br /> "title": "Screen Title",<br /> "layout": {<br /> "type": "SingleColumnLayout",<br /> "children": [..]<br /> } <br /> }<br /> ]<br /> &#125;&lt;br /&gt; |
\

Optional Form\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| COMPONENTS_OUTSIDE_FORM | Component ‘&#123;components.join(\`', '\`)&#125;' is not allowed outside Form when Form component is present.<br />Components '{components.join(`’, ’`)}’ are not allowed outside Form when Form component is present. | Any Form component cannot exist outside Form when Form exists on the screen.
Form components are the ones which can take user inputs. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "TextInput",<br /> "name": "path2",<br /> "label": "Path"<br /> &#125;,<br /> &#123;<br /> "type": "Form",<br /> "name": "flow_path",<br /> "children": [<br /> &#123;<br /> "type": "TextInput",<br /> "name": "path",<br /> "label": "Path"<br /> &#125;,<br /> ...<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br />&#125;&lt;br /&gt; |
\

| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| MISSING_FOOTER_IN_IF_ELSE_BRANCHES | Missing Footer inside one of the ‘If’ component branches. Branch ‘else’ should exist and contain one Footer. | There is a footer inside ‘then’ branch of IF component, which does not have ‘else’ branch | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "PATH_SIMULATION",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "\$&#123;data.ti&#125;",<br /> "then": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| MISSING_FOOTER_IN_IF_ELSE_BRANCHES | Footer component must be present in all branches of ‘If’ component if it exists in any one branch. | There is a footer inside ‘then’ branch of IF component, but ‘else’ branch does not have | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "PATH_SIMULATION",<br /> "title": "Title",<br /> "terminal": true,<br /> "data": &#123;<br /> "ti": &#123;"type": "boolean", "__example__": true&#125;<br /> &#125;,<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "\$&#123;data.ti&#125;",<br /> "then": [<br /> &#123;<br /> "type": "TextInput",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "name": "PASS_CUSTOM_VALUE"<br /> &#125;<br /> ],<br /> "else": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| MISSING_FOOTER_IN_SWITCH_BRANCHES | Footer component must be present in all switch cases if it exists in one of the cases. | Part of branches of Switch component have footer, but others do not have | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "PATH_SIMULATION",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "Switch",<br /> "value": "\$&#123;data.ti&#125;",<br /> "cases": &#123;<br /> "case1": [],<br /> "case2": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ],<br /> "case3": [<br /> &#123;<br /> "type": "TextInput",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "name": "PASS_CUSTOM_VALUE"<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| MORE_THAN_ONE_FOOTER | Maximum number of Footer component allowed per screen is 1. | Screen contains more than one footer considering all branches of if and switch components. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "PATH_SIMULATION",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "Switch",<br /> "value": "$&#123;data.ti&#125;",<br /> "cases": &#123;<br /> "case1": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ],<br /> "case2": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;,<br /> &#123;<br /> "type": "Footer",<br /> "label": "PASS_CUSTOM_VALUE",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
\

“IF” Component Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_PROPERTY_VALUE | Expected array to contain at least one component. | Property ‘then’ inside ‘If’ component must contain at least one component to display if property ‘condition’ is true. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "$&#123;data.val&#125;",<br /> "then": []<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | Expected property ‘condition’ to contain at least one operand. | Property ‘condition’ cannot be blank or empty. It should either contain a valid expression or a single boolean operand. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": " ",<br /> "then": [...]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | Found invalid empty parentheses at column (col). | Property ‘condition’ cannot be blank or empty. It should either contain a valid expression or a single boolean operand. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "( )",<br /> "then": [...]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | An operator cannot not have literals on both sides. Found invalid syntax at column (col). | Property ‘condition’ cannot have literals on both ends of an operator since that condition always evaluates to the same result. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "573 == 376",<br /> "then": [...]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | Missing opening parenthesis for the closing parenthesis at column (col).
Missing closing parenthesis.
Missing closing quote for string.
Missing operator between ‘&#123;firstValue&#125;' and '{secondValue}’.
Invalid operator ‘&#123;operator&#125;' found at column (col).<br />Invalid operand format '{operand}’ found at column (col).
Unexpected character ‘&#123;character&#125;' found at column (col).<br />Wrong positioning of operator '{operator}’. It cannot be used in concatenation with ‘&#123;firstValue&#125;'.<br />"Wrong positioning of operator '\|\|'. It cannot be used after '{data.string_value}’ at column 21.”
Type mismatch in an equality operation between ‘&#123;firstValue&#125;' and '{secondValue}’ at column (col).
Invalid literal ‘&#123;literal&#125;'.<br />Missing operand after last operator '{operator}’. | Property ‘condition’ should have valid expression syntax. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "))$&#123;data.value_1&#125;((",<br /> "then": [...]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | A numerical value is expected to follow the negative sign. | | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "$&#123;data.val&#125; ) -a",<br /> "then": [...]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | Expected single operand to be a boolean. | | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "(($&#123;data.string_value&#125;))",<br /> "then": [...]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_PROPERTY_VALUE | The only operand is a literal value. Expected single operand to be a boolean. | | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "SCREEN_A",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "If",<br /> "condition": "true",<br /> "then": [...]<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
\

Switch Component Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| MISSING_FOOTER_IN_SWITCH_BRANCHES | Footer component must be present in all switch cases if it exists in any one case. | Part of branches of Switch component have footer, but others do not have | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "PATH_SIMULATION",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "Switch",<br /> "value": "$&#123;data.ti&#125;",<br /> "cases": &#123;<br /> "case1": [],<br /> "case2": [<br /> &#123;<br /> "type": "Footer",<br /> "label": "Submit",<br /> "on-click-action": &#123;<br /> "name": "complete",<br /> "payload": &#123;&#125;<br /> &#125;<br /> &#125;<br /> ],<br /> "case3": [<br /> &#123;<br /> "type": "TextInput",<br /> "label": "input",<br /> "name": "Add name"<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
\

Native Component Errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| NATIVE_COMPONENT_IN_FORM_INIT_VALUES | Property ‘init-values’ should not contain value for components: [(native components’ type)]. | User tries to initialize native components via the “init-values” property of Form component.
However, native components like PhotoPicker and DocumentPicker cannot be initialized via init-values. | json&lt;br /&gt;&#123;<br /> "version": "4.0",<br /> "screens": [<br /> &#123;<br /> "id": "MAIN_SCREEN",<br /> "layout": &#123;<br /> "type": "SingleColumnLayout",<br /> "children": [<br /> &#123;<br /> "type": "Form",<br /> "name": "PASS_CUSTOM_VALUE",<br /> "init-values": &#123;"photo": "abc", "doc": "efg"&#125;,<br /> "children": [<br /> &#123;<br /> "type": "PhotoPicker",<br /> "name": "photo",<br /> "label": "Add your picture"<br /> &#125;,<br /> &#123;<br /> "type": "DocumentPicker",<br /> "name": "doc",<br /> "label": "Add ID proof"<br /> &#125;<br /> ]<br /> &#125;,<br /> ......<br /> ]<br /> &#125;<br /> &#125;<br /> ]<br /> &#125;&lt;br /&gt; |
| INVALID_ON_CLICK_ACTION_PAYLOAD | The value of &#123;componentType&#125; component is not allowed in the payload of navigate action. | Values of native components (PhotoPicker and DocumentPicker) cannot be passed to any other screen using navigate action payload.<br />Use global data to access native components from one screen in another. | ```json&lt;br /&gt;&#123;<br /> "screens": [<br /> &#123;<br /> "id": "FIRST_SCREEN",<br /> "layout": &#123;<br /> "children": [<br /> &#123;<br /> "type": "PhotoPicker",<br /> "name": "photoPicker",<br /> "label": "PASS_CUSTOM_VALUE"<br /> &#125;,<br /> &#123;<br /> "type": "Footer",<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "next": &#123;<br /> "name": "SECOND_SCREEN",<br /> "type": "screen"<br /> &#125;,<br /> "payload": &#123;<br /> "photo": "{form.photoPicker}”
}
}
}
]
}
},
{
“id”: “SECOND_SCREEN”,

}
]
}<br />|\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | The value of following components must be a top-level string in complete and data_exchange on-click-action payload: : \[PhotoPicker, DocumentPicker\]. | PhotoPicker and DocumentPicker component value can only be used as a top-level string property in the on-click-action payload. |json<br />{
“children”: [
{
“type”: “DocumentPicker”,
“name”: “doc”,
“label”: “Add ID proof”
},
{
“type”: “Footer”,
“label”: “Submit”,
“on-click-action”: {
“name”: “navigate”,
“payload”: {
“doc”: {“first”: {“second”: [“in_array”, “&#123;screen.FIRST_SCREEN.form.doc&#125;"]&#125;&#125;<br /> &#125;<br /> &#125;<br /> &#125;<br /> ]<br />&#125;&lt;br /&gt;```<br />```json&lt;br /&gt;&#123;<br /> "children": [<br /> &#123;<br /> "type": "PhotoPicker",<br /> "name": "photo",<br /> "label": "Add your picture"<br /> &#125;,<br /> &#123;<br /> "type": "Footer",<br /> "label": "Submit",<br /> "on-click-action": &#123;<br /> "name": "navigate",<br /> "payload": &#123;<br /> "photo": &#123;"first": &#123;"second": ["in_array", "{screen.FIRST_SCREEN.form.photo}”]}}
}
}
}
]
}<br />|\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | PhotoPicker can only be used in complete action payload if value of property 'max-uploaded-photos' doesn't exceed 1. Default value is 30.<br />DocumentPicker can only be used in complete action payload if value of property 'max-uploaded-documents' doesn't exceed 1. Default value is 30. | If the property ‘max-uploaded-photo’ or ‘max-uploaded-documents’ have not been defined in the component, default value of 30 is considered. |json<br />{
“screens”: [
{
“id”: “FIRST_SCREEN”,
“layout”: {
“children”: [
{
“type”: “PhotoPicker”,
“name”: “photoPicker”,
“label”: “photoLabel”
},
{
“type”: “DocumentPicker”,
“name”: “DocumentPicker”,
“label”: “DocLabel”,
“max-uploaded-documents”: 3
},
{
“type”: “Footer”,
“on-click-action”: {
“name”: “complete”,
“payload”: {
“photo”: “&#123;form.photoPicker&#125;",<br /> "doc": "{form.DocumentPicker}”
}
}
}
]
}
}
]
}<br />|\ | `INVALID_ON_CLICK_ACTION_PAYLOAD` | Complete action payload can contain either a single PhotoPicker or a single DocumentPicker component. | |json<br />{
“screens”: [
{
“id”: “FIRST_SCREEN”,
“layout”: {
“children”: [
{
“type”: “PhotoPicker”,
“name”: “photoPicker”,
“label”: “photoLabel”
},
{
“type”: “DocumentPicker”,
“name”: “DocumentPicker”,
“label”: “DocLabel”,
“max-uploaded-documents”: 3
},
{
“type”: “Footer”,
“on-click-action”: {
“name”: “complete”,
“payload”: {
“photo”: “&#123;form.photoPicker&#125;",<br /> "doc": "{form.DocumentPicker}”
}
}
}
]
}
}
]
}<br />``` |
| | | | |
\

Action errors\


| Error Code | Error Message | Details | Sample Flow JSON | \ | | ---------- | ------------- | ------- | ---------------- |
| INVALID_ACTION_PAYLOAD_PROPERTY | The following property (property) does not exist in the screen data model | The property for the payload as part of an action is not valid. This means the value for that property could not be parsed, for example if it references a property that doesn’t exist in the data model. | json&lt;br /&gt;&#123;<br /> ...<br /> "data": &#123;&#125;,<br /> ...<br /> "on-unselect-action": &#123;<br /> "name": "update_data",<br /> "payload": &#123;<br /> "property": "`$&#123;data.value_that_does_not_exist_in_data_model&#125;`"<br /> &#125;<br /> &#125;,<br />&#125;&lt;br /&gt; |

←\ \ Previous\ \ Flows API

→\ \ Next\ \ Versioning

On This Page

Error Codes

Flow Management API Error Codes

Business Endpoint Error Codes

On-Premise WhatsApp Business API Client Error Codes

Cloud API Error Codes

Error Types Reported via WebHook Alerts or Propagated Back to Endpoint

Static Validation Errors

Schema Validation Errors

FLow JSON Version Errors

Routing Model Errors

On-click Action Errors

Complete Action Errors

Navigate Action Errors

Screen Data Model Errors

Min Max Limit Violation Errors

Data_api_version | Refresh_on_back errors

Naming Errors

Terminal Screen Errors

Optional Form

Footer Errors

”IF” Component Errors

Switch Component Errors

Native Component Errors

Action errors