# List the runs of a schedule

GET /v1/schedules/{id}/runs: List the runs of a schedule

```http
GET /v1/schedules/{id}/runs
```

|  |  |
|---|---|
| Operation id | `listScheduleRuns` |
| Key scope | `read`: every key |
| Section | [Schedules](https://docs.kaab.ist/reference/api#schedules) |

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `id` | path | string | yes | pattern `^sch_[0-9a-hjkmnp-tv-z]{26}$` |
| `limit` | query | integer |  | ≥ 1 · ≤ 100 · default `25` |
| `cursor` | query | string |  | min length 1 |

## Example request

```bash
curl -X GET "https://api.kaab.ist/v1/schedules/{id}/runs" \
  -H "Authorization: Bearer $KAAB_API_KEY"
```

## Responses

### 200

Run page

| Field | Type | Required | Description |
|---|---|---|---|
| `data` | object[] | yes |  |
| `data[].job_id` | string or null | yes | pattern `^job_[0-9a-hjkmnp-tv-z]{26}$` |
| `data[].scheduled_for` | string or null (date-time) | yes |  |
| `data[].started_at` | string (date-time) | yes |  |
| `data[].finished_at` | string or null (date-time) | yes |  |
| `data[].status` | enum (8 values) | yes | one of `"queued"`, `"running"`, `"awaiting_input"`, `"needs_attention"`, `"succeeded"`, `"failed"`, `"canceled"`, `null` |
| `data[].skipped` | boolean | yes |  |
| `data[].skip_reason` | enum (8 values) | yes | one of `"overlap"`, `"missed"`, `"no_credits"`, `"program_unavailable"`, `"test_quota"`, `"byo_unavailable"`, `"fire_failed"`, `null` |
| `data[].changed` | boolean or null | yes |  |
| `data[].diff_url` | string or null | yes |  |
| `next_cursor` | string or null | yes |  |

## Errors

Every error answers with the [error envelope](https://docs.kaab.ist/reference/api/schemas/error-response); its `code` is one of the [error codes](https://docs.kaab.ist/reference/codes#errors).

| Status | When |
|---|---|
| 400 | `request_invalid`: request validation failed |
| 401 | Missing or invalid API key |
| 403 | The key's scope does not cover this operation |
| 404 | Resource not found |
| 429 | Rate limited; see `Retry-After` |
| 500 | `internal`: unexpected server error |
