---
title: "List workflow runs for an app"
method: GET
path: "/api/apps/{app_id}/workflows/runs"
---

# List workflow runs for an app

`GET /api/apps/{app_id}/workflows/runs`

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

Lists runs across every workflow on the app, newest first.

Use `status` to keep only runs in one state, and `since` to keep only runs that started after a moment in time. Page with `limit` and `offset`.

Each row names its workflow, so this is the endpoint for an activity feed. For one workflow's history use [List runs for a workflow](/api-reference/list-runs-for-a-workflow).

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>

## Path parameters

- `app_id` string, required — ID of the app whose workflows you want to work with.

## Query parameters

- `limit` integer — Most runs to return.
- `offset` integer — How many runs to skip, for paging.
- `status` string, nullable — Keep only runs in this state, for example `failed`.
- `since` string, nullable — Keep only runs that started at or after this ISO 8601 datetime.

## Response `200`

Runs across the app's workflows, newest first.

- RunItem[]
  - `run_id` string, required — ID of the run.
  - `workflow_id` string, required — ID of the workflow that ran.
  - `workflow_name` string — Name of that workflow at the time of the run.
  - `trigger_type` string — What started the run, for example `scheduled` or `entity_created`.
  - `status` string, required — How the run is going: `running`, `completed`, `failed`, or `cancelled`.
  - `started_at` string, nullable — When the run started, as an ISO 8601 timestamp.
  - `completed_at` string, nullable — When the run finished. `null` while it is still running.
  - `duration_ms` integer — How long the run took, in milliseconds. `0` while it is still running.
  - `steps_count` integer — Steps the run executed.
  - `error_message` string, nullable — Why the run failed. `null` when it did not fail.
  - `is_test_run` boolean — `true` when the run was started by hand through Run a workflow now, rather than by its trigger.
  - `credits_consumed` number — Credits the run used.
  - `status_reason` string — Why the run failed or was cancelled. Empty on runs that finished successfully.

## Other responses

- `400` — `since` is not an ISO 8601 datetime.
- `401` — Missing or invalid credentials.
- `403` — 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` — Validation Error

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/idealspot/base44-app-management-api/revisions/31ef75eb64ab/schema)
