API / handle-origin-check-run-rerequested-webhooks

API

Handle Origin check run rerequested webhooks

Subscribe to repository.check_run.rerequested so your app can answer a re-run request. Official payload: llms-full.txt → Events and OpenAPI CheckRunRerequestedWebhookPayload. Changelog notes: September 10–15, 2026.

Origin is in Early Beta and subject to change. Origin delivers this event only to the app that owns the check run, not to every repository subscriber. Declaring isRerequestable: true on Post Check Run / Batch Upsert Check Runs commits your app to answering each delivery by posting a fresh run for the same head SHA and key.

When it fires

event.type When it fires
repository.check_run.rerequested A completed, re-requestable check run is re-requested (for example via Rerequest Check Run).

Payload fields

Field Meaning
repository Repository reference (id, name, owner)
checkSuite Owning suite snapshot
checkRun The stamped run; status is rerequested
checkRun.conclusion / timings Still describe the superseded attempt until you answer
checkRun.rerequestedAt Outstanding re-request stamp
checkRun.rerequestedBy Principal that asked for the re-run
checkRun.key / checkRun.sha / checkRun.externalId Identity you must match when posting the answer

Sample event.payload:

{
  "repository": {
    "id": "repo_01k2ja2000e0080000000000q4",
    "name": "rocket",
    "owner": {
      "slug": "acme",
      "id": "ns_01k2ja2000e0080000000000p3",
      "type": "team"
    }
  },
  "checkSuite": {
    "id": "crg_01k2ja2000e0080000000000h8",
    "sha": "9a41f0c3d2b8e7f6a5c4d3e2f1b0a9c8d7e6f5a4",
    "key": "ci-8842",
    "name": "CI",
    "externalId": "build-8842"
  },
  "checkRun": {
    "id": "cr_01k2ja2000e0080000000000g7",
    "sha": "9a41f0c3d2b8e7f6a5c4d3e2f1b0a9c8d7e6f5a4",
    "key": "ci-8842-unit-tests",
    "name": "unit-tests",
    "status": "rerequested",
    "conclusion": "failure",
    "externalId": "run-8842",
    "isRerequestable": true,
    "rerequestedAt": "2026-08-02T15:10:00Z",
    "rerequestedBy": {
      "user": {
        "id": "user_01k2ja2000e0080000000000c3",
        "email": "jane@acme.dev"
      }
    }
  }
}

Answer the re-request

  1. Verify the Standard Webhooks signature against https://api.cursor.com/v1/origin/keys, then branch on event.type === "repository.check_run.rerequested".
  2. Read checkRun.sha and checkRun.key. The payload carries no pull request object — resolve a PR from your own head mapping or List Pull Requests with headSha.
  3. Post a fresh run for that head SHA and key with Post Check Run or Batch Upsert Check Runs:
    • New attempt history: new externalId.
    • Replace in place: same externalId with a newer externalUpdatedAt.
  4. Origin clears rerequestedAt when your answering post lands and stores the posted status. Until then the run reads as pending in list views and can block required checks.
  5. Deduplicate redeliveries on event.id (or webhook-id). A run may be re-requested again after you answer; each accepted re-request emits a new event.

Pitfalls

  • Do not send status: rerequested yourself on Post / Batch Upsert — Origin rejects it with InvalidArgument (HTTP 400).
  • Read conclusion only when status is completed; on a rerequested stamp it still describes the old attempt.
  • Keep the receiver answering within Origin's delivery deadline (10 seconds as of the Sep 18, 2026 changelog).