---
title: "List a tenant's proactive programs"
method: GET
path: "/v1/admin/tenants/{tenant_id}/proactive-programs"
tags: ["admin-proactive-programs"]
---

# List a tenant's proactive programs

`GET /v1/admin/tenants/{tenant_id}/proactive-programs`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/admin/tenants/{tenant_id}/proactive-programs`
- Auth: HTTP bearer

Every live Heartbeat / Workflow Discovery row for one workspace, with the mode that decides whether it may speak, the fire cursor that decides whether it runs at all, and any auto-pause label. An empty `scope` denies channel posts but allows DMs, so it is returned alongside.

## Path parameters

- `tenant_id` string, uuid, required

## Response `200`

Successful Response

- AdminProactiveProgramListResponse: Every live program row for one tenant.
  - `programs` AdminProactiveProgramResponse[], required
    - `id` string, uuid, required
    - `tenant_id` string, uuid, required
    - `program_type_code` string, required
    - `mode_code` string, required
    - `enabled` boolean, required
    - `schedule` string, required
    - `next_run_at` string, date-time, nullable, required
    - `last_run_at` string, date-time, nullable, required
    - `paused_reason` string, nullable, required
    - `paused_at` string, date-time, nullable, required
    - `consecutive_failures` integer, required
    - `scope` object, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `404`: Not found
- `422`: Validation error

---

[API](https://skmtc.dev/patricia/apis/patricia-api.md) · [All operations](https://skmtc.dev/patricia/apis/patricia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/patricia/apis/patricia-api/revisions/0dfb44495ea1?raw)
