---
title: "List the project's agents"
method: GET
path: "/api/v1/{forge}/{project}/agents"
tags: ["Project Agents"]
---

# List the project's agents

`GET /api/v1/{forge}/{project}/agents`

## Request

- Base URL: `https://entire.io` (the document declares no server; this is the origin it was published from)
- URL: `https://entire.io/api/v1/{forge}/{project}/agents`
- Auth: none declared

## Path parameters

- `forge` 'gh' | 'et', required
- `project` string, required

## Query parameters

- `include_archived` boolean
- `per_page` integer
- `cursor` string

## Response `200`

A page of agents

- object
  - `items` object[], required
    - `id` string, required
    - `project_id` string, required
    - `version` integer, required
    - `etag` string, required: Write token: send it unchanged as If-Match to replace or archive.
    - `created_at` string, required
    - `created_by` object, required
      - `kind` string, required
      - `id` string, required
    - `updated_at` string, required
    - `archived_at` string, nullable, required
    - `archived_by` object
      - `kind` string, required
      - `id` string, required
    - `name` string, required
    - `description` string, required
    - `harness` string, required
    - `model` string, nullable, required
    - `reasoning_effort` string, nullable, required
    - `timeout_ms` integer, required
    - `instructions` string, required
    - `signal` object, required
      - `value_type` 'boolean' | 'percent' | 'size', required
      - `polarity` 'higher_is_better' | 'lower_is_better' | 'neutral', required
    - `preset` object, nullable, required: The Entire preset the agent runs as it is now; null for a custom agent. A preset agent's name, model, instructions and signal are the preset's.
      - `id` string, required
      - `version` integer, required
    - `is_enabled` boolean, required: Whether its trigger runs it. A paused agent still runs when asked to.
    - `environment_id` string, required
    - `repository_ids` string[], required
    - `triggers` object[], required
      - `id` string, required
      - `kind` 'push', required
      - `when` 'ready' | 'always' | 'not_ready', required: Which Changes the push trigger runs on: ready, only one ready for review (and when one becomes ready); always, every push; not_ready, only one not yet ready for review. In a repository without an approvals gate every open Change is ready. A write that omits it saves ready.
      - `branches` string[], required: Glob patterns over the Change's branch name (main, release/*, feature/**; never refs/…). Empty runs on every branch; a write that omits it saves [].
      - `paths` string[], required: Glob patterns over the repository-relative paths the whole Change changes (frontend/**, **/*.go). Empty runs on every Change; a write that omits it saves []. Manual runs ignore both filters.
    - `stale_repository_ids` string[], required
  - `next_cursor` string

## Other responses

- `400`: Invalid request
- `401`: Not authenticated
- `403`: Feature disabled, or repository push is missing
- `404`: Project or resource not found
- `422`: Validation failed
- `502`: Agents service unavailable

## Changes

- **2026-10-25** `f4a534501f84`: 2 info
  - added the required property `items/items/triggers/items/branches` to the response with the `200` status
  - added the required property `items/items/triggers/items/paths` to the response with the `200` status
- **2026-10-25** `e8893f80c9f2`: 1 info
  - added the required property `items/items/triggers/items/when` to the response with the `200` status
- **2026-10-23** `365f01543923`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/entire/apis/entire-api/changes/api/v1/:forge/:project/agents/get.md)

---

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