API / handle-origin-pull-request-comment-reaction-webhooks

API

Handle Origin pull request comment reaction webhooks

As of the September 22, 2026 Origin changelog, apps can subscribe to pull_request.comment.reaction.added and pull_request.comment.reaction.removed. Official payload fields: llms-full.txt → Pull Request Comment Reaction Events.

Origin is in Early Beta and subject to change. Subscribe when you configure the app's webhook events list (Create App / Update App). Delivery uses the same signed envelope as other Origin webhooks.

Events

event.type When it fires
pull_request.comment.reaction.added A reaction is placed on a pull request comment. Re-placing a reaction the reactor already holds delivers this event again for the same comment, reactor, and content — fold on that triple.
pull_request.comment.reaction.removed A reaction is removed. Removing a reaction the reactor does not hold delivers nothing.

Payload fields

Field Meaning
pullRequest.id Immutable Origin pull request id
pullRequest.number Pull request number
pullRequest.repository Repository reference (id, name, owner)
comment.id Comment the reaction is on
comment.thread.id Thread that comment belongs to
reaction.content Closed set: thumbs_up, thumbs_down, laugh, hooray, confused, heart, rocket, eyes. Treat an unrecognized value as a reaction you cannot render.
reaction.reactor Principal that placed the reaction (only they can remove it). Carries user, app, or serviceAccount variants.

Sample event.payload:

{
  "pullRequest": {
    "id": "pr_01k2ja2000e0080000000000d4",
    "number": "17",
    "repository": {
      "id": "repo_01k2ja2000e0080000000000q4",
      "name": "rocket",
      "owner": {
        "slug": "acme",
        "id": "ns_01k2ja2000e0080000000000p3",
        "type": "team"
      }
    }
  },
  "comment": {
    "id": "cmt_01k2ja2000e0080000000000e5",
    "thread": {
      "id": "cth_01k2ja2000e0080000000000s6"
    }
  },
  "reaction": {
    "content": "thumbs_up",
    "reactor": {
      "user": {
        "id": "user_01k2ja2000e0080000000000c3",
        "email": "jane@acme.dev"
      }
    }
  }
}

Receiver tips

  1. Deduplicate adds on (comment.id, reactor id, content) — at-least-once delivery can repeat an identical add.
  2. Branch on event.type for added vs removed; do not invent REST endpoints to list reactions (none are published in the OpenAPI ops list as of this changelog).
  3. Keep the webhook receiver answering within Origin's delivery deadline (10 seconds as of the Sep 18, 2026 changelog).

Pitfalls

  • Do not invent a remove-reaction REST write. These events are webhook-only in the published surface.
  • Do not expand reaction.content beyond the closed set above.
  • Label events (pull_request.label.added / removed) are a separate family — see the same events table in llms-full.