---
title: "List Workers"
method: GET
path: "/workers"
tags: ["workers"]
---

# List Workers

`GET /workers`

## Query parameters

- `page` integer — Page number for pagination
- `limit` integer — Number of workers per page
- `sort_by` 'status_updated_at' | 'status' — Allowlisted sort fields; every value must name a WorkerListItemResponse field.
- `sort_order` 'asc' | 'desc'
- `status` WorkerStatusFilter[], nullable — Filter by one or more rendered worker statuses. `stopped` is derived from `stopped_at`, so a stopped worker matches only `stopped` and never the value it last emitted.
- `mode` Mode[], nullable — Filter by one or more worker modes. Workers with no stored mode are excluded whenever this filter is set.
- `updated_within` '24h' | '48h' | '7d' | '14d' | 'all' — Rolling window applied to `status_updated_at`. Workers that go quiet drift out of the list rather than accumulating in it, which is the primary lever for orgs carrying hundreds of channels. A worker that has never reported a status has no timestamp to compare, so it falls outside every window in an unsearched list. Search ignores this window so known workers remain discoverable regardless of status recency.
- `search` string, nullable — Case-insensitive substring search over worker display name, rendered status, and status message across all update times

## Response `200`

Successful Response

- ListWorkersResponse
  - `workers` WorkerListItemResponse[], required
    - `id` string, required
    - `resource_id` string, required
    - `display_name` string, required
    - `platform` 'slack' | 'teams' | 'web', required — A supported chat platform. Values align with ``integration_instances.type`` so a chat install's platform and its integration row stay in lockstep.
    - `agent_type` string, required
    - `mode` 'incident' | 'alerts', required — The kind of channel the agent lives in — its standing mission. Drives the swappable mode block in the system prompt (and, later, the toolset). ``incident`` and ``alerts`` have mode blocks today; ``escalation`` and others land as localized drop-ins (their standing block + tooling) when that work begins.
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `stopped_at` string, date-time, nullable, required
    - `status` 'critical' | 'attention' | 'working' | 'stable', required — The worker's present-tense status top-line, shown as a pill on the /workers list. Only these agent-picked values are ever stored in the `status` column; a null column means none has been emitted yet (the UI renders that as `starting`), and the terminal `stopped` state is derived from `stopped_at` — neither is stored here, so there is no second source of truth. The agent-facing definitions live on the ``status`` field in ``prompts.py`` (the only copy the model reads); keep this summary in sync with it. Values: CRITICAL: Immediate coordinated response is warranted because user-facing impact is severe or escalating. ATTENTION: A specific person or team should act now, but immediate coordinated incident response is not warranted. STABLE: Resting floor — no specific person or team needs to act now and no coordinated incident response is warranted. WORKING: Legacy — no longer emittable, see ``EmittableWorkerStatus``.
    - `status_message` string, nullable, required
    - `status_updated_at` string, date-time, nullable, required
    - `investigation_count` integer, required
    - `active_users` WorkerActiveUserResponse[], required
      - `user_id` string, required
      - `display_name` string, nullable, required
      - `profile_photo_url` string, nullable, required
    - `active_user_count` integer, required
  - `count` integer, required
  - `prev` integer, nullable
  - `next` integer, nullable
  - `total` integer, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/traversal/apis/fastapi.md) · [All operations](https://skmtc.net/traversal/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/traversal/fastapi/revisions/2134ebffd1ef/schema)
