---
title: "Review Run Peer Graphs"
method: GET
path: "/v1/internal/review-runs/{job_id}/peer-graphs"
---

# Review Run Peer Graphs

`GET /v1/internal/review-runs/{job_id}/peer-graphs`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/internal/review-runs/{job_id}/peer-graphs`
- Auth: none declared

Presigned reads of the review's workspace peers' PROMOTED graphs.

The review worker calls this during ``_analyse`` to stitch the PR's head graph
with its group peers' promoted graphs (cross-repo blast radius). Auth is the
SAME strength as the sibling ``/result`` route -- a job token bound to this
``{job_id}`` (``InternalWorker``) PLUS an active review lease -- so only the
worker currently leasing this run can fetch peers; there is no weaker path.

Everything that selects a graph is derived from the AUTHENTICATED run, never
from client input: the tenant is read from the run row, and the workspace id is
read from the run's own (server-written, worker-immutable) envelope. There is no
client-supplied ``group_id`` or member id to forge or guess -- a review can only
ever reach its own tenant's own workspace. Peers are resolved live from DB
membership and are PROMOTED-only; un-promoted members degrade to a skip+count.

## Path parameters

- `job_id` string, required

## Headers

- `X-Graphify-Lease-Token` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
