# Overview figures

**GET** `/api/stats/overview`

The figures on an embedded Overview page: workflows, runs in a window, this month, and runs at once now.

Needs [an API token](https://docs.gorunner.io/api/authentication#scopes) with the **Read** permission for runs (`run:read`).

## Parameters

### Query

- `window` · Optional · string: `7d` (the default) or `30d`, ending today.
- `tz` · Optional · string: Your time zone, such as `Europe/Berlin`. Unknown or left out: UTC. This month stays the UTC month.

## What is counted

For the workspace: its workflows by state, its production runs in the window (totals, success rate, and one point a day) and its latest 8 runs. Test runs never count.

For the organization: runs this month, and its runs-at-once limit with how many runs go and wait now. `thisMonth.counted` is `usage` when the installation keeps a usage count, which never goes down; else `runs`, the runs it still holds.

The window can be up to 30 seconds old; the limit and the latest runs are read live. In an embed, this needs the [switch](https://docs.gorunner.io/embed/switches) `overview`, which starts off, and `workflows` or `runs`.

## Responses

- 200 OK

  The figures.

- 403 `FORBIDDEN`

  The token lacks the **Read** permission for runs.

- 403 `FEATURE_OFF`

  In an embedded session: the `overview` switch is off (`details.switch`).

- 500 `INTERNAL_ERROR`

  The figures couldn’t be read. Try again.

Any call can also answer: [`401 UNAUTHORIZED`](https://docs.gorunner.io/errors#UNAUTHORIZED) · [`401 TOKEN_ENDED`](https://docs.gorunner.io/errors#TOKEN_ENDED) · [`403 TOKEN_SURFACE_OFF`](https://docs.gorunner.io/errors#TOKEN_SURFACE_OFF) · [`403 EMBED_NOT_ALLOWED`](https://docs.gorunner.io/errors#EMBED_NOT_ALLOWED) · [`403 EMBED_NOT_AVAILABLE`](https://docs.gorunner.io/errors#EMBED_NOT_AVAILABLE) · [`403 ACCOUNT_SUSPENDED`](https://docs.gorunner.io/errors#ACCOUNT_SUSPENDED) · [`429 RATE_LIMITED`](https://docs.gorunner.io/errors#RATE_LIMITED) · [`503 BUSY`](https://docs.gorunner.io/errors#BUSY) · [`503 PAUSED`](https://docs.gorunner.io/errors#PAUSED) · [`503 SERVICE_UNAVAILABLE`](https://docs.gorunner.io/errors#SERVICE_UNAVAILABLE). See [Errors](https://docs.gorunner.io/api/errors#by-status).

Request

**curl**

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

URL="$GORUNNER/api/stats/"
URL="${URL}overview?window=7d&tz=Europe/Berlin"
curl "$URL" \
  -H "Authorization: Bearer $GORUNNER_TOKEN"
```

**JavaScript**

```js
const GORUNNER = "https://api.gorunner.io";
const TOKEN = process.env.GORUNNER_TOKEN;

const res = await fetch(
  `${GORUNNER}/api/stats/` +
    `overview?window=7d&tz=Europe/Berlin`,
  {
    headers: { Authorization: `Bearer ${TOKEN}` },
  },
);
const { data } = await res.json();
```

**Python**

```python
import os, requests

GORUNNER = "https://api.gorunner.io"
TOKEN = os.environ["GORUNNER_TOKEN"]

res = requests.get(
    f"{GORUNNER}/api/stats/overview",
    params={
      "window": "7d",
      "tz": "Europe/Berlin",
    },
    headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]
```

Response · 200 OK, shortened

```json
{
  "data": {
    "window": "7d",
    "timeZone": "Europe/Berlin",
    "workflows": {
      "total": 8,
      "active": 6,
      "paused": 1,
      "draft": 1
    },
    "runs": {
      "window": {
        "from": "2026-10-19",
        "total": 120,
        "completed": 108,
        "failed": 10,
        "cancelled": 2,
        "successRate": 0.915
      },
      "thisMonth": {
        "from": "2026-10-01",
        "total": 512,
        "completed": 480,
        "failed": 30,
        "asOf": "2026-10-25T09:00:00Z",
        "counted": "usage",
        "scope": "organization"
      }
    },
    "limit": {
      "concurrentRuns": 10,
      "runningNow": 2,
      "waiting": 0,
      "scope": "organization"
    },
    "series": [
      {
        "day": "2026-10-25",
        "completed": 14,
        "failed": 1,
        "cancelled": 0,
        "total": 15
      },
      "…"
    ],
    "recent": [
      {
        "id": "8f0c41d2-6b7e-4c1a-9d3f-2a5b7c9e1f04",
        "workflow": {
          "id": "3b1e5c2a-7d4f-4e8b-a1c6-5f2d9b0e7a31",
          "name": "Order intake"
        },
        "status": "completed",
        "trigger": "webhook",
        "startedAt": "2026-10-25T08:59:58Z",
        "finishedAt": "2026-10-25T09:00:00Z",
        "durationMs": 1840
      }
    ]
  }
}
```

**Every field**

It takes no body.

### Response · 200 OK

- `data` · object
  - `window` · string: One of `7d`, `30d`.
  - `timeZone` · string: The time zone the days were counted in: the `tz` asked for, or `UTC`.
  - `workflows` · object: The workspace’s workflows: live (`active`), switched off (`paused`), never published (`draft`).
    - `total` · integer
    - `active` · integer
    - `paused` · integer
    - `draft` · integer
  - `runs` · object
    - `window` · object: The workspace’s production runs that started in the window, by status.
      - `from` · string: The first day counted, in `timeZone`.
      - `total` · integer
      - `completed` · integer
      - `failed` · integer
      - `cancelled` · integer
      - `successRate` · number or null: Completed ÷ (completed + failed): cancelled runs are left out. Null when nothing completed or failed. Releases up to v2026.10.5 counted cancelled runs as not worked.
    - `thisMonth` · object: The organization’s production runs since the first of the month (UTC).
      - `from` · string
      - `total` · integer
      - `completed` · integer
      - `failed` · integer
      - `asOf` · time or null: When the usage counts were last brought up to date; null when the installation keeps none.
      - `counted` · string: `usage`: Platform › Usage’s count, never lowered when runs are deleted. `runs`: the runs the organization holds now. One of `usage`, `runs`.
      - `scope` · string: One of `organization`.
  - `limit` · object: The organization’s runs-at-once limit and its runs in the run line now. A held run is in neither count.
    - `concurrentRuns` · integer or null: The limit in force (the organization’s own, else the installation’s default); null when there is none.
    - `runningNow` · integer
    - `waiting` · integer: Runs accepted and waiting for a free slot.
    - `scope` · string: One of `organization`.
  - `series` · array of objects: One point per day of the window in `timeZone`, oldest first.
    - `day` · string
    - `completed` · integer
    - `failed` · integer
    - `cancelled` · integer: Runs someone stopped that day: their own segment of a chart, never counted as worked or failed.
    - `total` · integer
  - `recent` · array of objects: The workspace’s latest 8 production runs, newest first.
    - `id` · UUID
    - `workflow` · object
      - `id` · UUID
      - `name` · string
    - `status` · string: The run’s status, as `GET /api/runs` says it.
    - `waitingFor` · string: For a run waiting in line (status `waiting`): the limit it waits behind. Absent when it waits only for a free worker, and for every other run. One of `workflow`, `organization`.
    - `claimedAt` · time: For a `pending` run a worker has taken: when. It is running.
    - `trigger` · string
    - `startedAt` · time
    - `finishedAt` · time or null
    - `durationMs` · integer or null

Related: [The last 7 days](https://docs.gorunner.io/api/stats/get-stats-week) · [What customers see](https://docs.gorunner.io/embed/what-customers-see) · [Limit runs at once](https://docs.gorunner.io/build/runs-at-once)

Source: https://docs.gorunner.io/api/stats/get-stats-overview
