# GET /v1/routines/{routine_id}/runs

> Past runs and the tasks they started.

In [Routines API](https://vestra.ai/developers/reference/api/routines.md): Jobs Bash runs on a schedule in plain words, or whenever your system calls.

Send `Authorization: Bearer vk_test_...` on every call.

Past runs and the tasks they started.

Your API key, scope `runtime` or `all`. On the card: [`routines`](https://vestra.ai/developers/routines.md). Every call here is a checked sample.

## Request

Path:

- `routine_id` (`string`, required): The routine's id (`rtn_...`).

Query:

- `limit` (`integer`): How many items per page, 1 to 100. Default 20.
- `cursor` (`string`): Where to go on from: the `next_cursor` of the page before, unchanged. Absent: the first page.

## Answers 200

- `data` (`object[]`): The items on this page.
  - `id` (`string`): The run's id.
  - `object` (`"routine_run"`): Always `routine_run`.
  - `routine_id` (`string`): The routine it is a run of.
  - `conversation_id` (`string | null`): The conversation the run's message landed in; null when it never got that far.
  - `status` (`"pending" | "running" | "completed" | "failed" | "skipped"`): `pending` or `running` while it goes. `completed`: Bash took the ask (the work it started is in `task_ids`). `failed`: it could not post the ask. `skipped`: it did not run, as `error` says.
  - `trigger_payload` (`map of any | null`): The payload your system sent, for a run on a call; null for a scheduled run.
  - `task_ids` (`string[]`): The pieces of work the run started.
  - `error` (`string | null`): Why it failed or was skipped; null otherwise.
  - `started_at` (`string`): When it began, as an ISO 8601 date and time in UTC.
  - `completed_at` (`string | null`): When it ended; null while it goes.
- `next_cursor` (`string | null`): Send it as `cursor` for the next page; null on the last page.

## Code

**TypeScript**

```ts
const runs = await vestra.routines.runs('rtn_5kd');
```

**Python**

```python
runs = vestra.routines.runs("rtn_5kd")
```

**CLI**

```bash
vestra routines runs rtn_5kd
```

**HTTP**

```bash
curl "$VESTRA_BASE_URL/v1/routines/rtn_5kd/runs" \
  -H "Authorization: Bearer $VESTRA_API_KEY"
```

**MCP**: No sample in your language for this route, so here it is over HTTP.
