> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List workflows

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Lists the app's workflows.

Archived workflows are left out unless you set `include_archived`. Use `limit` and `offset` to page through the results.

Passing `file_keys` switches this to a lookup by file name and ignores `limit` and `offset` entirely, returning every match. That is the only way to fetch more than 200 workflows in one call, and it is meant for resolving names you already hold rather than for paging.

The response omits each workflow's definition. Read one workflow with [Get workflow](/api-reference/get-workflow) when you need it.

This endpoint is limited to 60 requests per minute.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/workflows
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/workflows:
    get:
      summary: List workflows
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Lists the app's workflows.


        Archived workflows are left out unless you set `include_archived`. Use
        `limit` and `offset` to page through the results.


        Passing `file_keys` switches this to a lookup by file name and ignores
        `limit` and `offset` entirely, returning every match. That is the only
        way to fetch more than 200 workflows in one call, and it is meant for
        resolving names you already hold rather than for paging.


        The response omits each workflow's definition. Read one workflow with
        [Get workflow](/api-reference/get-workflow) when you need it.


        This endpoint is limited to 60 requests per minute.


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>


        <Note>This endpoint accepts a personal API key. Workspace API keys are
        not authorized for it and are rejected with a 403.</Note>
      operationId: list_workflows_api_apps__app_id__workflows_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose workflows you want to work with.
            title: App Id
          description: ID of the app whose workflows you want to work with.
          example: 6820f3a4e7b91d003c45a1f2
        - name: include_archived
          in: query
          required: false
          schema:
            type: boolean
            description: Include archived workflows in the results.
            default: false
            title: Include Archived
          description: Include archived workflows in the results.
          example: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 200
            minimum: 1
            description: Most workflows to return.
            default: 30
            title: Limit
          description: Most workflows to return.
          example: 30
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            description: How many workflows to skip, for paging.
            default: 0
            title: Offset
          description: How many workflows to skip, for paging.
          example: 0
        - name: file_keys
          in: query
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: >-
              Look workflows up by their file name instead of paging. Repeat the
              parameter for several. At most 50, each at most 256 characters and
              free of path separators.
            title: File Keys
          description: >-
            Look workflows up by their file name instead of paging. Repeat the
            parameter for several. At most 50, each at most 256 characters and
            free of path separators.
          example:
            - email-me-new-signups
      responses:
        '200':
          description: The app's workflows.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkflowListItem'
                title: Workflows
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, the app does not exist, the app
            still runs the older automations engine instead of workflows, or you
            used a workspace API key. A missing app and an app you cannot reach
            are deliberately the same answer.
        '422':
          description: >-
            `file_keys` has more than 50 entries, or one is longer than 256
            characters or contains a path separator.
components:
  schemas:
    WorkflowListItem:
      properties:
        id:
          type: string
          title: Id
          description: ID of the workflow.
          example: 68b1c0d4e7b91d003c45a1f2
        app_id:
          type: string
          title: App Id
          description: ID of the app the workflow belongs to.
          example: 6820f3a4e7b91d003c45a1f2
        file_key:
          anyOf:
            - type: string
            - type: 'null'
          title: File Key
          description: Name of the workflow's file in the app's code.
          example: email-me-new-signups
        name:
          type: string
          title: Name
          description: Name of the workflow.
          example: Email me new signups
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: What the workflow is for.
          example: Sends an email whenever a User record is created.
        status:
          type: string
          title: Status
          description: 'Whether the workflow runs: `active`, `inactive`, or `archived`.'
          example: active
        status_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Status Reason
          description: >-
            Why Base44 stopped the workflow itself, as a fixed code:
            `consecutive_failures`, `end_condition_reached`,
            `migration_activation_failed`, or `workflows_not_available`. `null`
            when you set the status yourself.
          example: consecutive_failures
        trigger:
          additionalProperties: true
          type: object
          title: Trigger
          description: >-
            What starts the workflow. The trigger sits under `config`, keyed by
            `trigger_type`.
          example:
            config:
              cron_expression: 0 9 * * *
              timezone: UTC
              trigger_type: scheduled
        total_runs:
          type: integer
          title: Total Runs
          description: Runs the workflow has started, ever.
          default: 0
          example: 48
        consecutive_failures:
          type: integer
          title: Consecutive Failures
          description: Runs that have failed in a row.
          default: 0
          example: 0
        last_run_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Run At
          description: When the workflow last started running. `null` before its first run.
          example: '2026-08-25T09:12:44Z'
        last_run_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Run Status
          description: >-
            How that run ended: `success`, `failed`, or `cancelled`. `null`
            before the first run. Note this is a different set of values from a
            run's own `status`, which reports `completed` rather than `success`.
          example: success
        created_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Created Date
          description: When the workflow was created.
          example: '2026-07-02T11:04:00Z'
      type: object
      required:
        - id
        - app_id
        - name
        - status
      title: WorkflowListItem
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````