Skip to main content
POST
Create flow

Concepts

Creates a flow in the WABA. flow_json is the screen definition, sent as a string — not as an object. With publish: true the flow is born published. Without it, the flow stays in DRAFT, which is the only status where you can still change flow_json.
If any screen uses the data_exchange action, the endpoint_uri field is required.
The flow_json structure and the component list are in the Introduction.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

wabaId
string
required

WABA ID (obtained via List WABAs)

Example:

"428083093730937"

Body

application/json
name
string
required

Flow name

Example:

"agendamento_consulta"

categories
enum<string>[]
required

Flow categories (Meta uses them during review)

Available options:
SIGN_UP,
SIGN_IN,
APPOINTMENT_BOOKING,
LEAD_GENERATION,
CONTACT_US,
CUSTOMER_SUPPORT,
SURVEY,
OTHER
Example:
flow_json
string
required

Screen definition in JSON, sent as a string

endpoint_uri
string

Your endpoint URL, required only for flows using data_exchange

Example:

"https://app.yourcompany.com/flows/callback"

publish
boolean
default:false

When true, publishes the flow right at creation

Response

Flow created

id
string

Flow ID

name
string

Flow name

categories
enum<string>[]

Flow categories (Meta uses them during review)

Available options:
SIGN_UP,
SIGN_IN,
APPOINTMENT_BOOKING,
LEAD_GENERATION,
CONTACT_US,
CUSTOMER_SUPPORT,
SURVEY,
OTHER
status
enum<string>

Publication status

Available options:
DRAFT,
PUBLISHED,
DEPRECATED,
BLOCKED,
THROTTLED
endpoint_uri
string | null

Your endpoint URL, required only for flows using data_exchange

flow_json
string

Screen definition in JSON, sent as a string

validation_errors
object[]

Validation issues returned by Meta