---
title: "List workflow runs"
method: GET
path: "/api/v1/workflows/{id}/runs"
tags: ["API Reference"]
---

# List workflow runs

`GET /api/v1/workflows/{id}/runs`

## Request

- Base URL: `https://revnu.com`
- URL: `https://revnu.com/api/v1/workflows/{id}/runs`
- Auth: HTTP bearer

Run history for one workflow, newest first, with per-step outcomes.

Requires the `results:read` scope.

**Response.** `{ "runs": [run, …] }`, newest first, each with its per-step outcomes. `404` for an unknown or another account's workflow.

A run's `status` is `queued` (started with [`POST /workflows/{id}/runs`](/docs/workflow-run) and not picked up yet), `running`, `done`, `failed` or `abandoned` (it never started or never reported back).

Each run has `found: { leads, contacts, people }`: how many leads and contacts this run created, and how many people it added to a company's research list without saving them as contacts. Counting started on 2026-10-02, so runs before then show zero. List them with [`GET /leads?workflowRunId=<run id>`](/docs/leads).

## Path parameters

- `id` string, required

## Query parameters

- `limit` integer

## Response `200`

{ "runs": [run, …] }, newest first, each with its per-step outcomes. 404 for an unknown or another account's workflow. A run's status is queued (started with POST /workflows/{id}/runs and not picked up yet), running, done, failed or abandoned (it never started or never reported back). Each run has f

- object
  - `runs` object[], required
    - `id` string, required
    - `workflowVersion` number, required
    - `status` 'abandoned' | 'done' | 'failed' | 'queued' | 'running', required
    - `startedAt` number, required
    - `finishedAt` number, nullable, required
    - `headline` string, nullable, required
    - `error` string, nullable, required
    - `found` object, required
      - `leads` number, required
      - `contacts` number, required
      - `people` number, required
    - `stepResults` object[], required
      - `stepId` string, required
      - `outcome` string, required
      - `note` string, nullable, required
      - `at` number, required
      - `reviewItemId` string, nullable, required
      - `gateUnmet` boolean, required

## Other responses

- `400`: The request is malformed; the error names the problem.
- `401`: Missing, malformed, unknown or revoked token.
- `402`: `setup_pending`: the account hasn't started its trial. Finish setup with `GET /setup`.
- `403`: The token lacks the scope in `requiredScope`.
- `404`: Unknown id, or another account's id.
- `429`: Rate limited.
- `503`: Temporarily unavailable; retry the same call.

---

[API](https://skmtc.dev/revnu/apis/revnu-api.md) · [All operations](https://skmtc.dev/revnu/apis/revnu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/revnu/apis/revnu-api/revisions/52e523c2db61?raw)
