Get a webhook configuration for a repository
Returns the webhook configuration for a repository. To get more information about the webhook, including the active state and events, use "Get a repository webhook."
Access tokens must have the read:repo_hook or repo scope, and GitHub Apps must have the repository_hooks:read permission.
get /repos/{owner}/{repo}/hooks/{hook_id}/configParameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path |
Code samples
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42/config await octokit.request('GET /repos/{owner}/{repo}/hooks/{hook_id}/config', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42
})Response
Status: 200 OK {
"content_type": "json",
"insecure_ssl": "0",
"secret": "********",
"url": "https://example.com/webhook"
}Notes
Update a webhook configuration for a repository
Updates the webhook configuration for a repository. To update more information about the webhook, including the active state and events, use "Update a repository webhook."
Access tokens must have the write:repo_hook or repo scope, and GitHub Apps must have the repository_hooks:write permission.
patch /repos/{owner}/{repo}/hooks/{hook_id}/configParameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path | |
url | string | body | The URL to which the payloads will be delivered. |
content_type | string | body | The media type used to serialize the payloads. Supported values include |
secret | string | body | If provided, the |
insecure_ssl | string or number or | body | Determines whether the SSL certificate of the host for |
Code samples
curl \
-X PATCH \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42/config \
-d '{"url":"url"}' await octokit.request('PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42,
url: 'url'
})Response
Status: 200 OK {
"content_type": "json",
"insecure_ssl": "0",
"secret": "********",
"url": "https://example.com/webhook"
}Notes
List deliveries for a repository webhook
Returns a list of webhook deliveries for a webhook configured in a repository.
get /repos/{owner}/{repo}/hooks/{hook_id}/deliveriesParameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path | |
per_page | integer | query | Results per page (max 100) Default: |
cursor | string | query | Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the |
Code samples
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42/deliveries await octokit.request('GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42
})Response
Status: 200 OK [
{
"id": 12345678,
"guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"delivered_at": "2019-06-03T00:57:16Z",
"redelivery": false,
"duration": 0.27,
"status": "OK",
"status_code": 200,
"event": "issues",
"action": "opened",
"installation_id": 123,
"repository_id": 456
},
{
"id": 123456789,
"guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"delivered_at": "2019-06-04T00:57:16Z",
"redelivery": true,
"duration": 0.28,
"status": "OK",
"status_code": 200,
"event": "issues",
"action": "opened",
"installation_id": 123,
"repository_id": 456
}
]Bad Request
Status: 400 Bad RequestValidation failed
Status: 422 Unprocessable EntityNotes
Get a delivery for a repository webhook
Returns a delivery for a webhook configured in a repository.
get /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}Parameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path | |
delivery_id | integer | path |
Code samples
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42/deliveries/42 await octokit.request('GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42,
delivery_id: 42
})Response
Status: 200 OK {
"id": 12345678,
"guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"delivered_at": "2019-06-03T00:57:16Z",
"redelivery": false,
"duration": 0.27,
"status": "OK",
"status_code": 200,
"event": "issues",
"action": "opened",
"installation_id": 123,
"repository_id": 456,
"url": "https://www.example.com",
"request": {
"headers": {
"X-GitHub-Delivery": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"X-Hub-Signature-256": "sha256=6dcb09b5b57875f334f61aebed695e2e4193db5e",
"Accept": "*/*",
"X-GitHub-Hook-ID": "42",
"User-Agent": "GitHub-Hookshot/b8c71d8",
"X-GitHub-Event": "issues",
"X-GitHub-Hook-Installation-Target-ID": "123",
"X-GitHub-Hook-Installation-Target-Type": "repository",
"content-type": "application/json",
"X-Hub-Signature": "sha1=a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d"
},
"payload": {
"action": "opened",
"issue": {
"body": "foo"
},
"repository": {
"id": 123
}
}
},
"response": {
"headers": {
"Content-Type": "text/html;charset=utf-8"
},
"payload": "ok"
}
}Bad Request
Status: 400 Bad RequestValidation failed
Status: 422 Unprocessable EntityNotes
Redeliver a delivery for a repository webhook
Redeliver a webhook delivery for a webhook configured in a repository.
post /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attemptsParameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path | |
delivery_id | integer | path |
Code samples
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42/deliveries/42/attempts await octokit.request('POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42,
delivery_id: 42
})Accepted
Status: 202 AcceptedBad Request
Status: 400 Bad RequestValidation failed
Status: 422 Unprocessable EntityNotes
List repository webhooks
get /repos/{owner}/{repo}/hooksParameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
per_page | integer | query | Results per page (max 100) Default: |
page | integer | query | Page number of the results to fetch. Default: |
Code samples
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks await octokit.request('GET /repos/{owner}/{repo}/hooks', {
owner: 'octocat',
repo: 'hello-world'
})Response
Status: 200 OK [
{
"type": "Repository",
"id": 12345678,
"name": "web",
"active": true,
"events": [
"push",
"pull_request"
],
"config": {
"content_type": "json",
"insecure_ssl": "0",
"url": "https://example.com/webhook"
},
"updated_at": "2019-06-03T00:57:16Z",
"created_at": "2019-06-03T00:57:16Z",
"url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678",
"test_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test",
"ping_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings",
"deliveries_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/deliveries",
"last_response": {
"code": null,
"status": "unused",
"message": null
}
}
]Resource not found
Status: 404 Not FoundNotes
Create a repository webhook
Repositories can have multiple webhooks installed. Each webhook should have a unique config. Multiple webhooks can
share the same config as long as those webhooks do not have any events that overlap.
post /repos/{owner}/{repo}/hooksParameters
| Name | Type | In | Description | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accept | string | header | Setting to | ||||||||||||||
owner | string | path | |||||||||||||||
repo | string | path | |||||||||||||||
name | string | body | Use | ||||||||||||||
config | object | body | Key/value pairs to provide settings for this webhook. These are defined below. | ||||||||||||||
Properties of the | |||||||||||||||||
| Name (Type) | Description |
|---|---|
url (string) | The URL to which the payloads will be delivered. |
content_type (string) | The media type used to serialize the payloads. Supported values include |
secret (string) | If provided, the |
insecure_ssl (string or number or ) | Determines whether the SSL certificate of the host for |
token (string) | |
digest (string) |
eventsDetermines what events the hook is triggered for.
Default: push
activeDetermines if notifications are sent when the webhook is triggered. Set to true to send notifications.
Default:
Code samples
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks \
-d '{"name":"name"}' await octokit.request('POST /repos/{owner}/{repo}/hooks', {
owner: 'octocat',
repo: 'hello-world',
name: 'name'
})Response
Status: 201 Created {
"type": "Repository",
"id": 12345678,
"name": "web",
"active": true,
"events": [
"push",
"pull_request"
],
"config": {
"content_type": "json",
"insecure_ssl": "0",
"url": "https://example.com/webhook"
},
"updated_at": "2019-06-03T00:57:16Z",
"created_at": "2019-06-03T00:57:16Z",
"url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678",
"test_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test",
"ping_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings",
"deliveries_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/deliveries",
"last_response": {
"code": null,
"status": "unused",
"message": null
}
}Forbidden
Status: 403 ForbiddenResource not found
Status: 404 Not FoundValidation failed
Status: 422 Unprocessable EntityNotes
Get a repository webhook
Returns a webhook configured in a repository. To get only the webhook config properties, see "Get a webhook configuration for a repository."
get /repos/{owner}/{repo}/hooks/{hook_id}Parameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path |
Code samples
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42 await octokit.request('GET /repos/{owner}/{repo}/hooks/{hook_id}', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42
})Response
Status: 200 OK {
"type": "Repository",
"id": 12345678,
"name": "web",
"active": true,
"events": [
"push",
"pull_request"
],
"config": {
"content_type": "json",
"insecure_ssl": "0",
"url": "https://example.com/webhook"
},
"updated_at": "2019-06-03T00:57:16Z",
"created_at": "2019-06-03T00:57:16Z",
"url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678",
"test_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test",
"ping_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings",
"deliveries_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/deliveries",
"last_response": {
"code": null,
"status": "unused",
"message": null
}
}Resource not found
Status: 404 Not FoundNotes
Update a repository webhook
Updates a webhook configured in a repository. If you previously had a secret set, you must provide the same secret or set a new secret or the secret will be removed. If you are only updating individual webhook config properties, use "Update a webhook configuration for a repository."
patch /repos/{owner}/{repo}/hooks/{hook_id}Parameters
| Name | Type | In | Description | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accept | string | header | Setting to | ||||||||||||||
owner | string | path | |||||||||||||||
repo | string | path | |||||||||||||||
hook_id | integer | path | |||||||||||||||
config | object | body | Key/value pairs to provide settings for this webhook. These are defined below. | ||||||||||||||
Properties of the | |||||||||||||||||
| Name (Type) | Description |
|---|---|
url (string) | Required. The URL to which the payloads will be delivered. |
content_type (string) | The media type used to serialize the payloads. Supported values include |
secret (string) | If provided, the |
insecure_ssl (string or number or ) | Determines whether the SSL certificate of the host for |
address (string) | |
room (string) |
eventsDetermines what events the hook is triggered for. This replaces the entire array of events.
Default: push
add_eventsDetermines a list of events to be added to the list of events that the Hook triggers for.
remove_eventsDetermines a list of events to be removed from the list of events that the Hook triggers for.
activeDetermines if notifications are sent when the webhook is triggered. Set to true to send notifications.
Default:
Code samples
curl \
-X PATCH \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42 \
-d '{"config":{"url":"url","content_type":"content_type","secret":"secret","insecure_ssl":"insecure_ssl","address":"address","room":"room"}}' await octokit.request('PATCH /repos/{owner}/{repo}/hooks/{hook_id}', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42,
config: {
url: 'url',
content_type: 'content_type',
secret: 'secret',
insecure_ssl: 'insecure_ssl',
address: 'address',
room: 'room'
}
})Response
Status: 200 OK {
"type": "Repository",
"id": 12345678,
"name": "web",
"active": true,
"events": [
"push",
"pull_request"
],
"config": {
"content_type": "json",
"insecure_ssl": "0",
"url": "https://example.com/webhook"
},
"updated_at": "2019-06-03T00:57:16Z",
"created_at": "2019-06-03T00:57:16Z",
"url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678",
"test_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test",
"ping_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings",
"deliveries_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/deliveries",
"last_response": {
"code": null,
"status": "unused",
"message": null
}
}Resource not found
Status: 404 Not FoundValidation failed
Status: 422 Unprocessable EntityNotes
Delete a repository webhook
delete /repos/{owner}/{repo}/hooks/{hook_id}Parameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path |
Code samples
curl \
-X DELETE \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42 await octokit.request('DELETE /repos/{owner}/{repo}/hooks/{hook_id}', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42
})Response
Status: 204 No ContentResource not found
Status: 404 Not FoundNotes
Ping a repository webhook
This will trigger a ping event to be sent to the hook.
post /repos/{owner}/{repo}/hooks/{hook_id}/pingsParameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path |
Code samples
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42/pings await octokit.request('POST /repos/{owner}/{repo}/hooks/{hook_id}/pings', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42
})Response
Status: 204 No ContentResource not found
Status: 404 Not FoundNotes
Test the push repository webhook
This will trigger the hook with the latest push to the current repository if the hook is subscribed to push events. If the hook is not subscribed to push events, the server will respond with 204 but no test POST will be generated.
Note: Previously /repos/:owner/:repo/hooks/:hook_id/test
post /repos/{owner}/{repo}/hooks/{hook_id}/testsParameters
| Name | Type | In | Description |
|---|---|---|---|
accept | string | header | Setting to |
owner | string | path | |
repo | string | path | |
hook_id | integer | path |
Code samples
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/hooks/42/tests await octokit.request('POST /repos/{owner}/{repo}/hooks/{hook_id}/tests', {
owner: 'octocat',
repo: 'hello-world',
hook_id: 42
})Response
Status: 204 No ContentResource not found
Status: 404 Not Found