WhatsApp Create Flow API

The Create Flow API from WhatsApp — 2 operation(s) for create flow.

Operations 3

GET /{Version}/{WABA-ID}/flows List Flows #
POST /{Version}/{WABA-ID}/flows Create Flow #
POST /{Version}/{WABA-ID}/migrate_flows Migrate Flows #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/whatsapp:whatsapp-create-flow-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

whatsapp-create-flow-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Meta Graph API - Application Connected Client Businesses…
  version: v23.0
  description: 'API for retrieving connected client businesses associated with a Meta application.


    This endpoint allows applications to retrieve information about businesses that have

    established client connections through the application. This is essential for managing

    business relationships and understanding client business configurations.'
  contact:
    name: Meta Business Platform Team
    url: https://developers.facebook.com/support
  license:
    name: Meta Platform Terms
    url: https://developers.facebook.com/terms
  termsOfService: https://developers.facebook.com/terms
servers:
- url: https://graph.facebook.com
  description: Production Graph API server
- url: https://graph.facebook.com
- url: https://graph.facebook.com
  description: WhatsApp Business Cloud API
- url: https://graph.facebook.com
  description: Meta Graph API production server
tags:
- name: Create Flow
paths:
  /{Version}/{WABA-ID}/flows:
    parameters:
    - $ref: '#/components/parameters/UserAgent'
    - $ref: '#/components/parameters/Authorization'
    - name: Version
      in: path
      required: true
      schema:
        type: string
    - name: WABA-ID
      in: path
      required: true
      schema:
        type: string
    get:
      tags:
      - Create Flow
      summary: List Flows
      operationId: listFlows
      responses:
        '200':
          description: List Flows
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        categories:
                          type: array
                          items:
                            type: string
                            example: SIGN_UP
                          example:
                          - SIGN_UP
                        id:
                          type: string
                          example: flow-1
                        name:
                          type: string
                          example: my first flow
                        status:
                          type: string
                          example: DRAFT
                        validation_errors:
                          type: array
                          items: {}
                          example: []
                    example:
                    - categories:
                      - SIGN_UP
                      id: flow-1
                      name: my first flow
                      status: DRAFT
                      validation_errors: []
                    - categories:
                      - SIGN_UP
                      - SIGN_IN
                      id: flow-2
                      name: my second flow
                      status: DRAFT
                      validation_errors:
                      - column_end: 30
                        column_start: 17
                        error: INVALID_PROPERTY
                        error_type: JSON_SCHEMA_ERROR
                        line_end: 46
                        line_start: 46
                        message: The property "initial-text" cannot be specified at "$root/screens/0/layout/children/2/children/0".
                    - categories:
                      - CONTACT_US
                      id: flow-3
                      name: another flow
                      status: PUBLISHED
                      validation_errors: []
                  paging:
                    type: object
                    properties:
                      cursors:
                        type: object
                        properties:
                          after:
                            type: string
                            example: QVFIUnZAWV...
                          before:
                            type: string
                            example: QVFIUnpKT...
              examples:
                List Flows:
                  value:
                    data:
                    - categories:
                      - SIGN_UP
                      id: flow-1
                      name: my first flow
                      status: DRAFT
                      validation_errors: []
                    - categories:
                      - SIGN_UP
                      - SIGN_IN
                      id: flow-2
                      name: my second flow
                      status: DRAFT
                      validation_errors:
                      - column_end: 30
                        column_start: 17
                        error: INVALID_PROPERTY
                        error_type: JSON_SCHEMA_ERROR
                        line_end: 46
                        line_start: 46
                        message: The property "initial-text" cannot be specified at "$root/screens/0/layout/children/2/children/0".
                    - categories:
                      - CONTACT_US
                      id: flow-3
                      name: another flow
                      status: PUBLISHED
                      validation_errors: []
                    paging:
                      cursors:
                        after: QVFIUnZAWV...
                        before: QVFIUnpKT...
      security:
      - bearerAuth: []
    post:
      tags:
      - Create Flow
      summary: Create Flow
      description: 'Creates a new flow. To clone an existing flow you can add the parameter


        `"clone_flow_id": "original-flow-id"`'
      operationId: createFlow
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                categories:
                  type: string
                  example: '["OTHER"]'
                clone_flow_id:
                  type: string
                  example: <EXISTING_FLOW_ID>
                endpoint_uri:
                  type: string
                  example: https://example.com
                name:
                  type: string
                  example: <FLOW_NAME>
      responses:
        '200':
          description: Create Flow
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: flow-1
              examples:
                Create Flow:
                  value:
                    id: flow-1
      security:
      - bearerAuth: []
  /{Version}/{WABA-ID}/migrate_flows:
    parameters:
    - $ref: '#/components/parameters/UserAgent'
    - $ref: '#/components/parameters/Authorization'
    - name: Version
      in: path
      required: true
      schema:
        type: string
    - name: WABA-ID
      in: path
      required: true
      schema:
        type: string
    post:
      tags:
      - Create Flow
      summary: Migrate Flows
      description: Creates a copy of existing flows from source WABA to destination WABA with the same names.
      operationId: migrateFlows
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                source_flow_names:
                  description: '[Optional] The names of the flows that will be copied from the source WABA. If not specified, all flows in the source WABA will be copied'
                  type: string
                  example: '["appointment", "leadgen"]'
                source_waba_id:
                  description: The ID of the source WABA from which the flows will be copied
                  type: string
                  example: <SOURCE_WABA_ID>
      responses:
        '200':
          description: Migrate Flows
          content:
            application/json:
              schema:
                type: object
                properties:
                  failed_flows:
                    type: array
                    items:
                      type: object
                      properties:
                        error_code:
                          type: string
                          example: '4233041'
                        error_message:
                          type: string
                          example: 'Flows Migration Error: Flow name not found in source WABA.'
                        source_name:
                          type: string
                          example: leadgen
                    example:
                    - error_code: '4233041'
                      error_message: 'Flows Migration Error: Flow name not found in source WABA.'
                      source_name: leadgen
                  migrated_flows:
                    type: array
                    items:
                      type: object
                      properties:
                        migrated_id:
                          type: string
                          example: dest-flow-1
                        source_id:
                          type: string
                          example: source-flow-1
                        source_name:
                          type: string
                          example: appointment
                    example:
                    - migrated_id: dest-flow-1
                      source_id: source-flow-1
                      source_name: appointment
              examples:
                Migrate Flows:
                  value:
                    failed_flows:
                    - error_code: '4233041'
                      error_message: 'Flows Migration Error: Flow name not found in source WABA.'
                      source_name: leadgen
                    migrated_flows:
                    - migrated_id: dest-flow-1
                      source_id: source-flow-1
                      source_name: appointment
      security:
      - bearerAuth: []
components:
  parameters:
    Authorization:
      name: Authorization
      in: header
      description: 'Bearer token for API authentication. This should be a valid access token obtained through the appropriate OAuth flow or system user token.

        '
      required: true
      schema:
        type: string
        pattern: ^Bearer\s+[A-Za-z0-9\-_.]+.*$
        example: Bearer EAABwzLixnjYBOzYmNMJJGfHq9DgNh...
    UserAgent:
      name: User-Agent
      in: header
      description: The user agent string identifying the client software making the request.
      required: false
      schema:
        type: string
        default: Meta-Business-Messaging-OpenAPI/1.0.0;spec=2025-10-21
        pattern: ^[a-zA-Z0-9\-_]+\/[0-9]+\.[0-9]+\.[0-9]+(;[a-zA-Z0-9\-=\.]+)?(\s+[a-zA-Z0-9\-_]+\/[0-9\-\.]+)?$
        example: Meta-Business-Messaging-OpenAPI/1.0.0;spec=2025-10-21
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'System user access token with whatsapp_business_management permission. Format: Bearer YOUR_SYSTEM_USER_ACCESS_TOKEN

        '