GoRunner docs
Search or askSearch⌘K

Group failed runs

Since v2026.10.8

GET/api/runs/failures

Groups the failed runs in a range by workflow, step and cause, still-failing first.

Needs an API token with the Read permission for runs (run:read).

Parameters

Query

workflowIdOptional · UUID

One workflow’s runs.

environmentOptional · string

production (the default), test or all.

windowOptional · string

24h, 7d, 30d, 90d or all (the default). Not with from or to.

What are the rarely used parameters?
triggerTypeOptional · string

How it began: manual, webhook, cron, poll, error, run_finished, event, api, mcp or subflow.

tagOptional · string

Runs with exactly this tag, added by the Tags app.

fromOptional · time

Runs started at or after this time (RFC 3339).

toOptional · time

Runs started before this time. After from.

Read a group

Runs fall in one group when they failed at the same step for the same kind of reason: IDs, quoted values and numbers are taken out, an HTTP status is kept. reason is the newest one’s.

stillFailing: the workflow is live and its latest finished production run failed this way. Otherwise workedSince says when a run first worked again.

rerunnable is the runs not yet made good by a retry, and rerunIds the oldest 200 of them: send them to Run many runs again. List a group’s runs with List runs and group={key}.

Responses

  • 200OK

    The groups, at most 100.

  • A filter has a value it doesn’t take. The message names it.

  • The token lacks the Read permission for runs.

  • The groups couldn’t be read. Try again.

Any call can also answer: 401 UNAUTHORIZED · 401 TOKEN_ENDED · 403 TOKEN_SURFACE_OFF · 403 FEATURE_OFF · 403 EMBED_NOT_ALLOWED · 403 EMBED_NOT_AVAILABLE · 403 ACCOUNT_SUSPENDED · 429 RATE_LIMITED · 503 BUSY · 503 PAUSED · 503 SERVICE_UNAVAILABLE. See Errors.

Request

GORUNNER="https://api.gorunner.io"
GORUNNER_TOKEN="grt_…"  # needs Read for runs

curl "$GORUNNER/api/runs/failures?window=7d" \
  -H "Authorization: Bearer $GORUNNER_TOKEN"

Response · 200 OK, shortened

json
{
  "data": {
    "failed": 12,
    "groupCount": 1,
    "groups": [
      {
        "key": "gAAAAB…",
        "workflowId": "3b1e5c2a-7d4f-4e8b-a1c6-5f2d9b0e7a31",
        "workflowName": "Order intake",
        "workflowStatus": "active",
        "stepKey": "forward",
        "step": "Forward to fulfilment",
        "reason": "the service answered 503",
        "count": 12,
        "firstAt": "2026-10-23T07:10:00Z",
        "lastAt": "2026-10-25T08:59:58Z",
        "latestRunId": "8f0c41d2-6b7e-4c1a-9d3f-2a5b7c9e1f04",
        "stillFailing": true,
        "workedSince": null,
        "retried": 3,
        "retriedWorked": 2,
        "retryOpen": 0,
        "rerunnable": 10,
        "rerunIds": [
          "1d7f3b9e-2c4a-4e6b-8d0f-5a3c9e1b7d26",
          "…"
        ],
        "ranVersionNumber": 3,
        "publishedVersionNumber": 3
      }
    ]
  }
}
Every field

It takes no body.

Response · 200 OK

dataobject
failedinteger
groupCountinteger
groupsarray of objects
keystring

Opaque. GET /api/runs?group={key} lists the group’s runs.

workflowIdUUID
workflowNamestring
workflowStatusstring

One of active, paused, draft.

stepKeystring

Absent when the messages name no step.

stepstring

The step’s display name (published version, else draft, else key).

reasonstring

The newest failure’s reason without the step prefix, at most 300 characters.

countinteger
firstAttime
lastAttime
latestRunIdUUID
stillFailingboolean

The workflow is live and its newest finished production run failed in this group.

workedSincetime or null

When not still failing: the first production run that worked after lastAt.

retriedinteger
retriedWorkedinteger
retryOpeninteger
rerunnableinteger

count - retriedWorked - retryOpen.

rerunIdsarray of UUIDs

The oldest 200 rerunnable runs, oldest first.

ranVersionNumberinteger

The version the newest failure ran; absent for the draft.

publishedVersionNumberinteger
publishedAttime