ClickFunnels Workflows::Run API

Execution records tracking a contact's progress through a workflow. Status is derived: `active`, `paused`, `completed`, or `canceled`. Runs can be listed/filtered or manually created to enroll a contact immediately. See [Runs - manual enrollment](https://accounts.myclickfunnels.com/.well-known/workflows/skill.md#runs---manual-enrollment) in the [Workflows Skill](https://accounts.myclickfunnels.com/.well-known/workflows/skill.md).

Operations 3

GET /workflows/{workflow_id}/runs List Runs #
POST /workflows/{workflow_id}/runs Enroll Contact (Create Run) #
GET /workflows/runs/{id} Fetch Run #

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/clickfunnels-workflows-run-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

clickfunnels-workflows-run-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ClickFunnels Workflows::Run API
  termsOfService: https://www.clickfunnels.com/terms-of-service
  contact:
    name: ClickFunnels API Team
    url: https://developers.myclickfunnels.com
  x-logo:
    url: https://statics.myclickfunnels.com/image/1126065/file/31edf05760fafe41a82f16a668ab251f.png
  description: 'The ClickFunnels REST API that powers webhooks, native integrations, and Zapier lets you manage your ClickFunnels data, automate your workflows, and recreate ClickFunnels functionality in your own apps.

    '
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  version: 2.0.0
servers:
- url: https://{subdomain}.myclickfunnels.com/api/v2
  description: ClickFunnels API
  variables:
    subdomain:
      default: myworkspace
security:
- BearerAuth: []
tags:
- name: Workflows::Run
  description: 'Execution records tracking a contact''s progress through a workflow. Status is derived: `active`, `paused`, `completed`, or `canceled`. Runs can be listed/filtered or manually created to enroll a contact immediately.


    See [Runs - manual enrollment](https://accounts.myclickfunnels.com/.well-known/workflows/skill.md#runs---manual-enrollment) in the [Workflows Skill](https://accounts.myclickfunnels.com/.well-known/workflows/skill.md).

    '
paths:
  /workflows/{workflow_id}/runs:
    get:
      tags:
      - Workflows::Run
      summary: List Runs
      description: 'List automation runs for a workflow. Supports filtering by `contact_id` and `status`.

        Only standard automation runs are returned (survey runs excluded).

        '
      operationId: listWorkflowRuns
      externalDocs:
        description: Workflows Skill - runs, manual enrollment
        url: https://accounts.myclickfunnels.com/.well-known/workflows/skill.md#runs---manual-enrollment
      security:
      - BearerAuth: []
      parameters:
      - name: workflow_id
        in: path
        required: true
        schema:
          type: string
        description: Integer id or obfuscated public_id of the workflow.
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/sort_order'
      - $ref: '#/components/parameters/sort_property'
      - name: filter
        in: query
        required: false
        description: 'Filter runs by `contact_id` (integer id or obfuscated public_id of the contact) and/or

          `status` (`active`, `paused`, `completed`, or `canceled`).

          An invalid `status` value returns 422.

          '
        schema:
          type: object
          properties:
            contact_id:
              $ref: '#/components/schemas/IntegerOrPublicId'
              description: Contact id or public_id to filter runs by.
              example: CtAbcd
            status:
              type: string
              enum:
              - active
              - paused
              - completed
              - canceled
              description: Filter by derived run status.
              example: completed
        style: deepObject
        explode: true
      responses:
        '200':
          description: OK
          headers:
            Pagination-Next:
              $ref: '#/components/headers/PaginationNext'
            Link:
              $ref: '#/components/headers/Link'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkflowsRunAttributes'
              example:
              - id: 501
                public_id: RnXxYz
                workflow_id: 101
                contact_id: 9001
                current_step_id: null
                event_id: null
                type: null
                status: completed
                skip_communication: false
                completed_at: '2025-06-02T10:30:00.000Z'
                paused_at: null
                created_at: '2025-06-01T09:00:00.000Z'
                updated_at: '2025-06-02T10:30:00.000Z'
              - id: 502
                public_id: RnQrSt
                workflow_id: 101
                contact_id: 9002
                current_step_id: 202
                event_id: null
                type: null
                status: paused
                skip_communication: false
                completed_at: null
                paused_at: '2025-06-15T08:00:00.000Z'
                created_at: '2025-06-15T07:55:00.000Z'
                updated_at: '2025-06-15T08:00:00.000Z'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: API key missing or invalid
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: You are not authorized to perform this action.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: 'Not found: Record missing'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: 'Request unprocessable: status must be one of: active, paused, completed, canceled'
    post:
      tags:
      - Workflows::Run
      summary: Enroll Contact (Create Run)
      description: 'Manually enroll a contact into a workflow, starting a new run immediately.

        The workflow must be enabled (`status: live`) — an unenabled workflow returns 422.

        The contact must belong to the same workspace.


        Some step types are skipped at enrollment rather than executed — notably page

        (`show_page_step`) and internal sequence/plumbing steps, which only make sense

        inside a funnel. This list is non-exhaustive; standalone automations run the

        action and split steps documented under Workflows::Step.

        '
      operationId: createWorkflowRun
      externalDocs:
        description: Workflows Skill - runs, manual enrollment
        url: https://accounts.myclickfunnels.com/.well-known/workflows/skill.md#runs---manual-enrollment
      security:
      - BearerAuth: []
      parameters:
      - name: workflow_id
        in: path
        required: true
        schema:
          type: string
        description: Integer id or obfuscated public_id of the workflow.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowsRunParametersCreate'
            example:
              run:
                contact_id: CtAbcd
                skip_communication: false
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowsRunAttributes'
              example:
                id: 503
                public_id: RnUvWx
                workflow_id: 101
                contact_id: 9001
                current_step_id: 201
                event_id: null
                type: null
                status: active
                skip_communication: false
                completed_at: null
                paused_at: null
                created_at: '2025-06-18T12:00:00.000Z'
                updated_at: '2025-06-18T12:00:00.000Z'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: API key missing or invalid
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: You are not authorized to perform this action.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: 'Not found: Record missing'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: 'Request unprocessable: Workflow is not enabled; enable it before starting a run.'
  /workflows/runs/{id}:
    get:
      tags:
      - Workflows::Run
      summary: Fetch Run
      description: 'Retrieve a single workflow run by its id or obfuscated public_id.

        '
      operationId: getWorkflowRun
      externalDocs:
        description: Workflows Skill - runs, manual enrollment
        url: https://accounts.myclickfunnels.com/.well-known/workflows/skill.md#runs---manual-enrollment
      security:
      - BearerAuth: []
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowsRunAttributes'
              example:
                id: 501
                public_id: RnXxYz
                workflow_id: 101
                contact_id: 9001
                current_step_id: null
                event_id: null
                type: null
                status: completed
                skip_communication: false
                completed_at: '2025-06-02T10:30:00.000Z'
                paused_at: null
                created_at: '2025-06-01T09:00:00.000Z'
                updated_at: '2025-06-02T10:30:00.000Z'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: API key missing or invalid
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: You are not authorized to perform this action.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: 'Not found: Record missing'
components:
  parameters:
    id:
      name: id
      in: path
      required: true
      schema:
        type: string
    sort_property:
      name: sort_property
      in: query
      description: 'Sort property of a list response. The default is id and thus the created_at order.

        If you sort by other properties, we additionally sort by id implicitly as a secondary sort property, so that you can rely on the sort order to be deterministic even if the main sort property ends up with the same values.

        '
      required: false
      schema:
        type: string
        enum:
        - id
        - updated_at
    sort_order:
      name: sort_order
      in: query
      description: Sort order of a list response. Use 'desc' to reverse the default 'asc' (ascending) sort order. Examples [in our guides](https://developers.myclickfunnels.com/docs/pagination).
      required: false
      schema:
        type: string
        enum:
        - asc
        - desc
    after:
      name: after
      in: query
      required: false
      schema:
        type: string
      description: ID of item after which the collection should be returned. More examples and info about pagination [in our guides](https://developers.myclickfunnels.com/docs/pagination).
  schemas:
    IntegerOrPublicId:
      type:
      - integer
      - string
      description: Integer database id or obfuscated public_id.
    WorkflowsRunAttributes:
      type: object
      title: Workflows::Run
      description: 'An execution record tracking a contact''s progress through a workflow.


        `status` is derived:

        - `canceled` — the run was explicitly canceled.

        - `completed` — the run finished normally.

        - `paused` — the run is waiting at a delay or hold step.

        - `active` — none of the above; currently in-progress.


        The list endpoint returns only standard automation runs (`type: null`);

        survey/STI run subtypes are excluded.

        '
      properties:
        id:
          type: integer
          description: Run ID
        public_id:
          type:
          - string
          - 'null'
          description: Obfuscated run ID
        workflow_id:
          type: integer
          description: Integer ID of the parent workflow
        contact_id:
          type:
          - integer
          - 'null'
          description: Raw integer ID of the enrolled contact
        current_step_id:
          type:
          - integer
          - 'null'
          description: Raw integer ID of the step the run is currently at. Null when not at a step.
        event_id:
          type:
          - integer
          - 'null'
          description: Raw integer ID of the triggering event that started this run, if any.
        type:
          type:
          - string
          - 'null'
          description: STI type column. Always `null` for standard automation runs (the only subtype the list endpoint returns).
        status:
          type: string
          enum:
          - active
          - paused
          - completed
          - canceled
          description: Derived execution status.
        skip_communication:
          type: boolean
          description: When true, communication steps (send email, etc.) are skipped for this run.
        completed_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Timestamp when the run completed. Null if still in progress.
        paused_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Timestamp when the run was last paused. Null if never paused.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        id: 501
        public_id: RnXxYz
        workflow_id: 101
        contact_id: 9001
        current_step_id: null
        event_id: null
        type: null
        status: completed
        skip_communication: false
        completed_at: '2025-06-02T10:30:00.000Z'
        paused_at: null
        created_at: '2025-06-01T09:00:00.000Z'
        updated_at: '2025-06-02T10:30:00.000Z'
      required:
      - completed_at
      - contact_id
      - created_at
      - current_step_id
      - event_id
      - id
      - paused_at
      - public_id
      - skip_communication
      - status
      - type
      - updated_at
      - workflow_id
    WorkflowsRunParametersCreate:
      type: object
      title: Create Workflows::Run (manual enroll)
      description: 'Parameters for manually enrolling a contact into a workflow. The workflow

        must be enabled (status `live`) — otherwise returns 422.

        '
      required:
      - run
      properties:
        run:
          type: object
          required:
          - contact_id
          properties:
            contact_id:
              $ref: '#/components/schemas/IntegerOrPublicId'
              description: Integer id or obfuscated public_id of the contact to enroll. Must belong to the same workspace.
            skip_communication:
              type: boolean
              description: When true, communication steps (send email, chat message, etc.) are skipped for this run. Defaults to false.
      example:
        run:
          contact_id: CtAbcd
          skip_communication: false
  headers:
    Link:
      description: A direct link to the next page for the cursor-based pagination. It includes the `after` and the Pagination-Next ID value.
      schema:
        type: string
    PaginationNext:
      description: ID of the last item in the current response after which more records exist. You can use it in an `after` query parameter for cursor-based pagination to get to the next page.
      schema:
        type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
externalDocs:
  description: More in-depth guides and further resources
  url: https://developers.myclickfunnels.com