GoRunner

List runs across every workflow in the workspace

Requires scope run:read
GET
/api/runs

Returns runs from all workflows in the token's active workspace, newest first.

IMPORTANT — the environment default: a run records the environment it belongs to, and this list DEFAULTS to environment=production. Runs the editor started (test) are hidden unless you ask for them. If you triggered a run with POST /api/workflows/{id}/run without ?environment=production, that run is a TEST run and will not appear here by default.

Filter values are validated silently: an unrecognised status, sort, triggerType or environment, or a workflowId that is not a UUID, is DROPPED rather than rejected — the response is 200 with the filter not applied (so a misspelled triggerType returns every run instead of none). Check the values you send against the enums below.

This response carries a top-level pagination object alongside data. Step rows are NOT included here; use GET /api/runs/{id} for a run's steps and their output.

Authorization

bearerAuth
AuthorizationBearer <token>

An API token: Authorization: Bearer grt_…. Mint one in the app under Settings → Workspace → API tokens; the raw value is shown once. Scopes confine the token — see x-permission on each operation.

In: header

Query Parameters

page?integer

1-based page number. Values below 1 (and unparseable values) become 1.

Range1 <= value
Default1
limit?integer

Rows per page. Anything outside 1–100 (including unparseable values) silently becomes 20.

Range1 <= value <= 100
Default20
status?string

Exact run status to filter on. Any other value is ignored and no status filter is applied.

Value in

  • "pending"
  • "running"
  • "completed"
  • "failed"
  • "cancelled"
  • "paused"
environment?string

Which environment's runs to return. production = real trigger traffic (the default). test = runs the editor started (canvas Test, listen capture, a retry of a test run, and any POST /api/workflows/{id}/run that did not ask for production). all = both. An unrecognised value falls back to production.

Default"production"

Value in

  • "production"
  • "test"
  • "all"
triggerType?string

How the run began. This is the run's OWN trigger vocabulary, not the workflow's: api is a run started through POST /api/workflows/{id}/run, subflow is a run started by a parent flow's Sub-flow step, manual is an editor test run. Any other value is ignored and every trigger type is returned.

Value in

  • "manual"
  • "webhook"
  • "cron"
  • "poll"
  • "error"
  • "run_finished"
  • "event"
  • "api"
  • "mcp"
  • "subflow"
workflowId?string

Restrict to one workflow. Must be a UUID; a non-UUID value is ignored and runs from every workflow are returned.

Formatuuid
tag?string

Return only runs carrying this tag exactly (tags are attached during execution by the Tags piece). Matching is exact, not prefix or substring.

sort?string

oldest = oldest start first. duration = longest durationMs first (runs with no duration last). Omitted or unrecognised = newest start first.

Value in

  • "oldest"
  • "duration"

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/runs"
{  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "workflowId": "43c4fa9b-0cbc-4b57-a121-9d7d46a3eaa4",      "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",      "orgId": "25b2c2d5-a7fc-47d0-89e4-8709a1560bfa",      "status": "pending",      "triggerType": "string",      "triggerData": {},      "startedAt": "2019-08-24T14:15:22Z",      "finishedAt": "2019-08-24T14:15:22Z",      "durationMs": 0,      "errorMessage": "string",      "tags": [        "string"      ],      "environment": "production",      "steps": [        {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "runId": "78c33d18-170c-44d3-a227-b3194f134f73",          "nodeId": "string",          "pieceId": "string",          "actionId": "string",          "displayName": "string",          "status": "pending",          "inputData": {},          "outputData": {},          "errorMessage": "string",          "retryCount": 0,          "startedAt": "2019-08-24T14:15:22Z",          "finishedAt": "2019-08-24T14:15:22Z",          "durationMs": 0        }      ],      "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",      "versionNumber": 0,      "executedVersionId": "4d3e9121-6455-4ca4-b3e7-67df52d19c9f",      "executedVersionNumber": 0,      "startedFromStep": "string",      "retryOfRunId": "d0a9e625-c445-46be-b052-60aba1a6d053",      "retriedByRunId": "e0b90d7a-65b9-447a-9444-af73f1677849",      "workflowName": "string",      "workflowTriggerType": "string",      "stepTotal": 0,      "stepFailed": 0,      "waitStep": "string",      "resumeMode": "time",      "resumeAt": "2019-08-24T14:15:22Z"    }  ],  "pagination": {    "page": 0,    "limit": 0,    "total": 0,    "totalPages": 0  }}