IonWarp logoIonWarp
Get started
IonWarp Docs
Collections

Pull Requests

Pull requests IonWarp is watching, and where each one got to in review.

Base path /api/v1/pull-requests on https://ionwarp.com. Authenticate with Authorization: Bearer $DASH_API_KEY and name the project with the Project-ID header. Writes are validated in declared mode; an operation this resource does not declare answers 405 operation_not_supported.

List pull requests

GET /api/v1/pull-requests

curl "https://ionwarp.com/api/v1/pull-requests?state=open" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_acme"
Which pull requests are still waiting on changes?
data_query {
  "collection": "pull_requests",
  "where": {
    "state": "open"
  }
}

Returns a paginated list of pull-request objects, newest first.

{
  "object": "list",
  "data": [
    {
      "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"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Parameters

ParameterTypeKindDescription
statestringfilterGitHub state of the PR at the last sync. One of open, closed, merged, draft.
review_statusstringfilterThe review-run lifecycle for this PR's latest review: planning → reviewing → reviews_available → summarizing → reviewed, with terminal alternatives skipped and errored. One writer (agents/ionwarp/server/pull-requests.ts) persists every transition; the Pull Requests list pill renders it 1:1. One of not_started, planning, reviewing, reviews_available, summarizing, reviewed, skipped, errored.
authorstringfilterGitHub login that opened the PR.
base_branchstringfilterBranch the PR merges into.
auto_review_enabledbooleanfilterWhether IonWarp reviews new pushes to this PR automatically. Toggled by a PR comment command, not by an API write.
qstringsearchFree-text search across title, head_branch.
sortstringsortOne of number, updated_at, last_reviewed_at; prefix with - to reverse.
limitnumberpageRows to return, 1–100. Defaults to 20.
cursorstringpagenext_cursor from the previous page.

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"
}

Returns the pull-request object.

{
  "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"
}

Parameters

ParameterTypeKindDescription
idstringpathThe pull-request's id or slug.

Append an event to a pull-request

POST /api/v1/pull-requests/{id}/events

curl -X POST "https://ionwarp.com/api/v1/pull-requests/learning-tests-run-under-bun/events" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_acme" \
  -H "Content-Type: application/json" \
  -d '{"event":"Noted by the operator","context":{"source":"api"}}'
Add a note to the pull-request {id}
data_event {
  "collection": "pull_requests",
  "object_id": "learning-tests-run-under-bun",
  "event": "Noted by the operator"
}

Returns the appended event object.

{
  "object": "event",
  "id": "evt_123",
  "event": "Noted by the operator"
}

Parameters

FieldTypeRequiredDescription
eventstringyesThe human-readable timeline entry.
contextobjectnoProvenance — source, integration, worker_run_id, …

What comes back (read-only)

Every pull-request carries the envelope below. The fields under it are computed or stamped by the platform — they are returned, never sent.

FieldTypeDescription
objectstringAlways pull-request.
idstringStable object id. Also accepted in place of slug on any path.
slugstringURL-safe name, unique within the collection.
created_atstringISO-8601 timestamp of the first write.
updated_atstringISO-8601 timestamp of the most recent write. The cursor sorts on this.
numbernumberGitHub pull request number.
titlestringPull request title, as it reads on GitHub.
statestringGitHub state of the PR at the last sync.
authorstringGitHub login that opened the PR.
author_avatar_urlstringGitHub avatar URL for author, resolved at sync time.
head_branchstringBranch the PR merges from.
base_branchstringBranch the PR merges into.
urlstringLink to the PR on GitHub.
preview_urlstringDeploy-preview URL reported for this PR, when the sync payload carried one. Used as the target of a UX review that runs against a live preview instead of the diff.
review_statusstringThe review-run lifecycle for this PR's latest review: planning → reviewing → reviews_available → summarizing → reviewed, with terminal alternatives skipped and errored. One writer (agents/ionwarp/server/pull-requests.ts) persists every transition; the Pull Requests list pill renders it 1:1.
review_status_reasonstringWhy the review skipped or errored — the SAME reason text the GitHub check title carries (e.g. "excluded author dependabot[bot]", "no reviewable diff", "review failed to run").
last_reviewed_atstringWhen IonWarp last posted a review (ISO 8601).
last_review_task_idstringTask id of the most recent review run on this PR — the handle to look that run up.
last_review_run_idstringRun id of the most recent delivered review on this PR (the platform task_runs handle).
last_reviewed_head_shastringHead SHA the most recent delivered review actually reviewed. The unchanged-SHA gate reads it to skip re-reviewing an unchanged head.
last_review_agents_rannumberDomain reviewer agents that ran in the most recent delivered review (conductor/learner excluded).
last_review_high_signal_findingsnumberHigh-significance (critical + major) findings the most recent delivered review produced.
github_review_idstringGitHub review id of the most recent posted review, when GitHub returned one.
auto_review_enabledbooleanWhether IonWarp reviews new pushes to this PR automatically. Toggled by a PR comment command, not by an API write.
auto_review_disabled_bystringGitHub login that turned auto-review off, when it is off.
auto_review_disabled_atstringWhen auto-review was turned off (ISO 8601).
auto_review_disabled_reasonstringReason given with the comment command that turned auto-review off.
auto_review_last_command_atstringWhen an auto-review comment command was last accepted on this PR (ISO 8601).
auto_review_last_command_bystringGitHub login that issued the last accepted auto-review comment command.
active_swarm_idstringThe swarms row coordinating the review currently running on this PR, while one is running.
active_task_idstringThe task currently reviewing this PR, while one is running.
last_synced_atstringWhen the PR was last synced from GitHub (ISO 8601).

Errors

Failures use { error: { type, code, message, param } }. The full code table is generated at Error Codes.

On this page

IonWarp logoIonWarp

Ready to build? Connect an agent and go — no credit card needed to start.

Get startedSee our plans