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 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>

get/api/apps/{app_id}/workflows

Path parameters

app_idstring required

ID of the app whose workflows you want to work with.

ID of the app whose workflows you want to work with.

Query parameters

include_archivedboolean

Include archived workflows in the results.

Include archived workflows in the results.

limitinteger

Most workflows to return.

Most workflows to return.

offsetinteger

How many workflows to skip, for paging.

How many workflows to skip, for paging.

file_keysstring[] nullable

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.

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.

Response

The app's workflows.

idstring required

ID of the workflow.

app_idstring required

ID of the app the workflow belongs to.

file_keystring nullable

Name of the workflow's file in the app's code.

namestring required

Name of the workflow.

descriptionstring nullable

What the workflow is for.

statusstring required

Whether the workflow runs: active, inactive, or archived.

status_reasonstring nullable

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.

triggerobject

What starts the workflow. The trigger sits under config, keyed by trigger_type.

total_runsinteger

Runs the workflow has started, ever.

consecutive_failuresinteger

Runs that have failed in a row.

last_run_atstring date-time nullable

When the workflow last started running. null before its first run.

last_run_statusstring nullable

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.

created_datestring date-time nullable

When the workflow was created.

Example response

[
  {
    "id": "68b1c0d4e7b91d003c45a1f2",
    "app_id": "6820f3a4e7b91d003c45a1f2",
    "file_key": "email-me-new-signups",
    "name": "Email me new signups",
    "description": "Sends an email whenever a User record is created.",
    "status": "active",
    "status_reason": "consecutive_failures",
    "trigger": {
      "config": {
        "cron_expression": "0 9 * * *",
        "timezone": "UTC",
        "trigger_type": "scheduled"
      }
    },
    "total_runs": 48,
    "last_run_at": "2026-08-25T09:12:44Z",
    "last_run_status": "success",
    "created_date": "2026-07-02T11:04:00Z"
  }
]

Changes