Repositories & PRs
Connect a repository through the GitHub App, watch its pull requests, and read the PR projection every review is keyed to.
A repository reaches IonWarp through a GitHub App installation, and from then on every pull request on it becomes an object here. That object is the anchor for everything downstream — reviews, scorecards and plans all point at a pull request.
Retrieve a pull-request — GET /api/v1/pull-requests/learning-tests-run-under-bun
curl "https://ionwarp.com/api/v1/pull-requests/learning-tests-run-under-bun" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_acme"Show me the review findings on PR {id}data_get {
"collection": "pull_requests",
"object_id": "learning-tests-run-under-bun"
}{
"object": "pull-request",
"id": "obj_123",
"number": 630,
"title": "Collapse the review dispatch fast path",
"state": "open",
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Every field, filter and sort is in the
pull-requests reference. The ones worth
knowing by name: review_status and last_reviewed_at (where review got to),
last_review_task_id / active_task_id / active_swarm_id (what is running
now), preview_url (the page a UX or performance reviewer opens in a browser),
and the auto_review_* block, which records whether automatic review is on for
this PR and, when it is off, who turned it off and why.
What to know before you call it
Pull requests are read-only over the API: rows are written by the GitHub App
webhook and the repo sync, so create / update / delete answer
405 operation_not_supported. Connecting a repository end to end — installation,
repo pick, project — is Connect GitHub, driven
by the repo-connect skill; writing back to it is
open-pr.
Two event kinds decide whether a review dispatches: pulls.created (opened,
reopened, or marked ready for review) and pulls.updated (a new head pushed).
Repository identity — repo slug, installation, default branch — lives in the
project's agentConfig.github, never in a prompt.
A PR that IonWarp deliberately does not review says why rather than going quiet:
the reason is recorded on the row (auto_review_disabled_reason) or named on the
run (Debugging a Run). Drafts, closed PRs, a head
that was already reviewed, and titles matching ionwarp.review.skip_pr_pattern
are all skipped this way. A skip_pr_pattern that will not compile matches
nothing and reports itself — config we cannot read never suppresses a review.
Next: Reviews for what a review produces · Reviewers & Models to pick the lineup · Plans for the work a repo proposes to itself.