2020-10-28 11:08:49 -04:00
---
2021-08-02 11:08:56 -04:00
stage: Ecosystem
group: Integrations
2020-11-26 01:09:20 -05:00
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
2020-10-28 11:08:49 -04:00
---
2021-09-09 08:09:09 -04:00
# System hooks API **(FREE SELF)**
2014-05-27 08:12:15 -04:00
2016-01-24 14:19:46 -05:00
All methods require administrator authorization.
2014-03-14 14:53:43 -04:00
2021-06-13 20:09:37 -04:00
You can configure the URL endpoint of the system hooks from the GitLab user interface:
2021-08-25 20:09:31 -04:00
1. On the top bar, select **Menu > Admin** .
2021-06-13 20:09:37 -04:00
1. Select **System Hooks** (`/admin/hooks`).
2016-01-24 14:19:46 -05:00
2022-03-18 05:07:21 -04:00
Read more about [system hooks ](../administration/system_hooks.md ).
2014-03-14 14:53:43 -04:00
## List system hooks
2016-01-18 03:45:50 -05:00
Get a list of all system hooks.
2014-03-14 14:53:43 -04:00
2020-02-28 22:07:51 -05:00
```plaintext
2014-03-14 14:53:43 -04:00
GET /hooks
```
2016-01-24 14:19:46 -05:00
Example request:
2020-01-30 10:09:15 -05:00
```shell
2020-05-27 20:08:37 -04:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks"
2016-01-18 03:45:50 -05:00
```
2014-03-14 14:53:43 -04:00
2016-01-18 03:45:50 -05:00
Example response:
2014-03-14 14:53:43 -04:00
```json
[
2016-10-19 10:08:30 -04:00
{
"id":1,
"url":"https://gitlab.example.com/hook",
"created_at":"2016-10-31T12:32:15.192Z",
"push_events":true,
"tag_push_events":false,
2017-11-23 10:45:00 -05:00
"merge_requests_events": true,
2018-08-14 14:55:55 -04:00
"repository_update_events": true,
2016-10-19 10:08:30 -04:00
"enable_ssl_verification":true
}
2014-03-14 14:53:43 -04:00
]
```
2022-02-28 13:14:03 -05:00
## Get system hook
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/81595) in GitLab 14.9.
Get a system hook by its ID.
```plaintext
GET /hooks/:id
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of the hook |
Example request:
```shell
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks/1"
```
Example response:
```json
[
{
"id": 1,
"url": "https://gitlab.example.com/hook",
"created_at": "2016-10-31T12:32:15.192Z",
"push_events": true,
"tag_push_events": false,
"merge_requests_events": true,
"repository_update_events": true,
"enable_ssl_verification": true
}
]
```
2016-01-18 03:45:50 -05:00
## Add new system hook
2014-03-14 14:53:43 -04:00
2016-01-24 14:19:46 -05:00
Add a new system hook.
2020-02-28 22:07:51 -05:00
```plaintext
2014-03-14 14:53:43 -04:00
POST /hooks
```
2016-01-18 03:45:50 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `url` | string | yes | The hook URL |
2020-11-19 16:09:07 -05:00
| `token` | string | no | Secret token to validate received payloads; this isn't returned in the response |
| `push_events` | boolean | no | When true, the hook fires on push events |
| `tag_push_events` | boolean | no | When true, the hook fires on new tags being pushed |
2017-11-23 15:36:58 -05:00
| `merge_requests_events` | boolean | no | Trigger hook on merge requests events |
2018-08-14 14:55:55 -04:00
| `repository_update_events` | boolean | no | Trigger hook on repository update events |
2016-11-02 08:24:24 -04:00
| `enable_ssl_verification` | boolean | no | Do SSL verification when triggering the hook |
2016-01-18 03:45:50 -05:00
2016-01-24 14:19:46 -05:00
Example request:
2020-01-30 10:09:15 -05:00
```shell
2018-12-27 04:03:08 -05:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks?url=https://gitlab.example.com/hook"
2016-01-18 03:45:50 -05:00
```
2014-03-14 14:53:43 -04:00
2016-01-18 03:45:50 -05:00
Example response:
```json
[
2016-10-19 10:08:30 -04:00
{
"id":1,
"url":"https://gitlab.example.com/hook",
"created_at":"2016-10-31T12:32:15.192Z",
"push_events":true,
"tag_push_events":false,
2017-11-23 15:36:58 -05:00
"merge_requests_events": true,
2018-08-14 14:55:55 -04:00
"repository_update_events": true,
2016-10-19 10:08:30 -04:00
"enable_ssl_verification":true
}
2016-01-18 03:45:50 -05:00
]
```
2014-03-14 14:53:43 -04:00
## Test system hook
2020-02-28 22:07:51 -05:00
```plaintext
2021-03-31 14:09:19 -04:00
POST /hooks/:id
2014-03-14 14:53:43 -04:00
```
2016-01-18 03:45:50 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of the hook |
2014-03-14 14:53:43 -04:00
2016-01-24 14:19:46 -05:00
Example request:
2020-01-30 10:09:15 -05:00
```shell
2021-03-31 14:09:19 -04:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks/1"
2016-01-18 03:45:50 -05:00
```
Example response:
2014-03-14 14:53:43 -04:00
```json
{
2016-01-18 03:45:50 -05:00
"project_id" : 1,
"owner_email" : "example@gitlabhq.com",
"owner_name" : "Someone",
"name" : "Ruby",
"path" : "ruby",
"event_name" : "project_create"
2014-03-14 14:53:43 -04:00
}
```
## Delete system hook
2016-11-24 12:28:52 -05:00
Deletes a system hook.
2016-01-24 14:19:46 -05:00
2020-02-28 22:07:51 -05:00
```plaintext
2014-03-14 14:53:43 -04:00
DELETE /hooks/:id
```
2016-01-18 03:45:50 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of the hook |
2016-01-24 14:19:46 -05:00
Example request:
2020-01-30 10:09:15 -05:00
```shell
2020-05-27 20:08:37 -04:00
curl --request DELETE --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks/2"
2019-07-14 21:04:35 -04:00
```