---
title: "Get a run: what it pinned, its result and events"
method: GET
path: "/api/v1/{forge}/{project}/runs/{id}"
tags: ["Project Agents"]
---

# Get a run: what it pinned, its result and events

`GET /api/v1/{forge}/{project}/runs/{id}`

## 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}/runs/{id}`
- Auth: none declared

## Path parameters

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

## Response `200`

The run

- object
  - `id` string, required
  - `project_id` string, required
  - `repository_id` string, required
  - `status` 'queued' | 'running' | 'succeeded' | 'failed' | 'timed_out' | 'canceled', required
  - `error` object, nullable, required: Why the run failed, timed out or was canceled.
    - `code` string, nullable, required
    - `message` string, required
  - `billing_subject` object, nullable, required
    - `type` 'org' | 'account', required
    - `id` string, required
  - `agent` object, required: The agent, at the version and under the name the run pinned.
    - `id` string, required
    - `version` integer, required
    - `name` string, required
  - `environment` object, required
    - `id` string, required
    - `version` integer, required
  - `trigger` object, required
    - `kind` 'push' | 'manual' | 'retry', required
    - `id` string, nullable, required
  - `actor` object, required
    - `kind` string, required
    - `id` string, required
  - `attempt` integer, required
  - `retry_of` string, nullable, required
  - `created_at` string, required
  - `updated_at` string, required
  - `diagnostic` string, nullable, required
  - `target` object, required
    - `repository_id` string, required
    - `trail_id` string, required
    - `change_id` string, required
    - `ref` string, required
    - `head_sha` string, required
    - `base_ref` string, required
    - `base_sha` string, required
  - `runtime` object, required
    - `harness` string, required
    - `model` string, nullable, required
    - `reasoning_effort` string, nullable, required
    - `timeout_ms` integer, required
    - `provider` string, required
    - `checkout` string, required
    - `git_access` string, required
    - `auto_stop_minutes` integer, nullable, required
  - `preset` object, nullable, required
    - `id` string, required
    - `version` integer, nullable, required
    - `sha256` string, nullable, required
  - `mode` object, required
    - `kind` 'review', required
    - `contract_version` string, required
    - `output_mode` 'claude_json_schema' | 'codex_output_schema', required
    - `output_schema_sha256` string, required
    - `signal` object, required
      - `value_type` 'boolean' | 'percent' | 'size', required
      - `polarity` 'higher_is_better' | 'lower_is_better' | 'neutral', required
    - `reviewed` object, required
      - `head_sha` string, required
      - `base_sha` string, required
      - `diff_base_sha` string, required
  - `review_changes_result` object, nullable, required
    - `summary` string, nullable, required
    - `signal` object, required
      - `value_type` 'boolean' | 'percent' | 'size', required
      - `polarity` 'higher_is_better' | 'lower_is_better' | 'neutral', required
      - `value` union, required
        - boolean
        - integer
        - 'small' | 'medium' | 'large'
      - `rationale` string, required
    - `findings` object[], required
      - `body` string, required
      - `severity` 'high' | 'medium' | 'low', required
      - `confidence` number, required
      - `location` object, required
        - `granularity` 'line' | 'range' | 'file', required
        - `file_path` string, required
        - `start_line` integer, nullable, required
        - `end_line` integer, nullable, required
    - `prior_findings` object[], required
      - `finding_id` string, required
      - `verdict` 'fixed' | 'still_present' | 'no_longer_applies', required
      - `evidence` string, required
      - `outcome` 'resolved' | 'dismissed' | 'kept' | 'awaiting_confirmation' | 'reopened_by_person' | 'already_closed', nullable, required: What the server did with the verdict: resolved or dismissed the finding, kept it open, left a high severity one for a person to close, or let a person's decision stand.
    - `review_id` string, nullable, required
  - `dispatch` object, nullable, required
    - `state` 'pending' | 'published' | 'refused' | 'abandoned', required
    - `attempts` integer, required
    - `next_attempt_at` string, nullable, required
    - `published_at` string, nullable, required
  - `result` object, nullable, required
    - `result_type` string, required
    - `data` unknown, required
    - `created_at` string, required
  - `output` object, nullable, required
    - `text` string, nullable, required
    - `truncated` boolean, required
  - `events` object[], nullable, required
    - `kind` string, required
    - `type` string, required
    - `detail` string, required
    - `created_at` string, required

## Other responses

- `400`: Invalid request
- `401`: Not authenticated
- `403`: Agents feature disabled
- `404`: Project or run not found, or repository pull is missing
- `422`: Validation failed
- `500`: Run could not be read
- `502`: Project routing or run service unavailable
- `503`: Runs disabled or temporarily unavailable

## Changes

- **2026-10-23** `365f01543923`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/entire/apis/entire-api/changes/api/v1/:forge/:project/runs/:id/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)
