GitHub pull_request webhook payload example

GitHub · event: pull_request (action: opened) · content type: application/json

This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).

See it live, not frozen

One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:

Then paste the bin's URL into GitHub's webhook settings to capture a real delivery. No signup.

Headers

content-type: application/json
user-agent: GitHub-Hookshot/f05835d
x-github-event: pull_request
x-github-delivery: 7a3fd6c0-2b4e-11ef-8d21-9e8f7a6b5c4d
x-hub-signature-256: sha256=9c1d8e5f2a7b4c0e6d3f9a8b5c2e7d4f1a6b9c8e5d2f7a4b0c6e3d9f8a5b2c7e

Body

{
  "action": "opened",
  "number": 42,
  "pull_request": {
    "id": 1923456789,
    "number": 42,
    "state": "open",
    "locked": false,
    "draft": false,
    "title": "Add webhook retry handling",
    "body": "Retries deliveries that returned non-2xx, with exponential backoff.",
    "html_url": "https://github.com/octocat/hello-world/pull/42",
    "user": {
      "login": "octocat",
      "id": 583231,
      "type": "User"
    },
    "created_at": "2026-08-29T00:00:00Z",
    "updated_at": "2026-08-29T00:00:00Z",
    "head": {
      "ref": "feature/retry-handling",
      "sha": "4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e",
      "repo": {
        "full_name": "octocat/hello-world"
      }
    },
    "base": {
      "ref": "main",
      "sha": "59b20b8d5c6ff8d09518454d4dd8b7b30f095ab5",
      "repo": {
        "full_name": "octocat/hello-world"
      }
    },
    "merged": false,
    "mergeable": null,
    "commits": 3,
    "additions": 120,
    "deletions": 8,
    "changed_files": 4
  },
  "repository": {
    "id": 186853002,
    "full_name": "octocat/hello-world",
    "private": false,
    "default_branch": "main"
  },
  "sender": {
    "login": "octocat",
    "id": 583231,
    "type": "User"
  }
}

Things that bite people

Send it yourself

Reproduce this delivery against any endpoint (your handler, a bin, staging):

$ curl -X POST https://your-endpoint.example/hook \
  -H 'content-type: application/json' \
  -H 'user-agent: GitHub-Hookshot/f05835d' \
  -H 'x-github-event: pull_request' \
  -H 'x-github-delivery: 7a3fd6c0-2b4e-11ef-8d21-9e8f7a6b5c4d' \
  -H 'x-hub-signature-256: sha256=9c1d8e5f2a7b4c0e6d3f9a8b5c2e7d4f1a6b9c8e5d2f7a4b0c6e3d9f8a5b2c7e' \
 -d '{"action":"opened","number":42,"pull_request":{"id":1923456789,"number":42,"state":"open","locked":false,"draft":false,"title":"Add webhook retry handling","body":"Retries deliveries that returned non-2xx, with exponential backoff.","html_url":"https://github.com/octocat/hello-world/pull/42","user":{"login":"octocat","id":583231,"type":"User"},"created_at":"2026-08-29T00:00:00Z","updated_at":"2026-08-29T00:00:00Z","head":{"ref":"feature/retry-handling","sha":"4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e","repo":{"full_name":"octocat/hello-world"}},"base":{"ref":"main","sha":"59b20b8d5c6ff8d09518454d4dd8b7b30f095ab5","repo":{"full_name":"octocat/hello-world"}},"merged":false,"mergeable":null,"commits":3,"additions":120,"deletions":8,"changed_files":4},"repository":{"id":186853002,"full_name":"octocat/hello-world","private":false,"default_branch":"main"},"sender":{"login":"octocat","id":583231,"type":"User"}}'

← All payload examples · Related guide · Signature debugger · Docs