2021-01-29 00:20:46 +05:30
---
2021-10-27 15:23:28 +05:30
stage: Ecosystem
group: Integrations
2021-02-22 17:27:13 +05:30
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
2021-01-29 00:20:46 +05:30
---
2021-11-11 11:23:49 +05:30
# System hooks API **(FREE SELF)**
2014-09-02 18:07:02 +05:30
2016-04-02 18:10:28 +05:30
All methods require administrator authorization.
2014-09-02 18:07:02 +05:30
2021-09-04 01:27:46 +05:30
You can configure the URL endpoint of the system hooks from the GitLab user interface:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Admin** .
2021-09-04 01:27:46 +05:30
1. Select **System Hooks** (`/admin/hooks`).
2016-04-02 18:10:28 +05:30
2022-06-21 17:19:12 +05:30
Read more about [system hooks ](../administration/system_hooks.md ).
2014-09-02 18:07:02 +05:30
## List system hooks
2016-04-02 18:10:28 +05:30
Get a list of all system hooks.
2020-04-08 14:13:33 +05:30
```plaintext
2014-09-02 18:07:02 +05:30
GET /hooks
```
2016-04-02 18:10:28 +05:30
Example request:
2020-03-13 15:44:24 +05:30
```shell
2020-06-23 00:09:42 +05:30
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks"
2016-04-02 18:10:28 +05:30
```
2014-09-02 18:07:02 +05:30
2016-04-02 18:10:28 +05:30
Example response:
2014-09-02 18:07:02 +05:30
```json
[
2017-08-17 22:00:37 +05:30
{
"id":1,
"url":"https://gitlab.example.com/hook",
"created_at":"2016-10-31T12:32:15.192Z",
"push_events":true,
"tag_push_events":false,
2018-03-17 18:26:18 +05:30
"merge_requests_events": true,
2018-11-20 20:47:30 +05:30
"repository_update_events": true,
2017-08-17 22:00:37 +05:30
"enable_ssl_verification":true
}
2014-09-02 18:07:02 +05:30
]
```
2022-05-07 20:08:51 +05:30
## 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-04-02 18:10:28 +05:30
## Add new system hook
Add a new system hook.
2020-04-08 14:13:33 +05:30
```plaintext
2014-09-02 18:07:02 +05:30
POST /hooks
```
2016-04-02 18:10:28 +05:30
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `url` | string | yes | The hook URL |
2021-02-22 17:27:13 +05:30
| `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 |
2018-03-17 18:26:18 +05:30
| `merge_requests_events` | boolean | no | Trigger hook on merge requests events |
2018-11-20 20:47:30 +05:30
| `repository_update_events` | boolean | no | Trigger hook on repository update events |
2017-08-17 22:00:37 +05:30
| `enable_ssl_verification` | boolean | no | Do SSL verification when triggering the hook |
2016-04-02 18:10:28 +05:30
Example request:
2020-03-13 15:44:24 +05:30
```shell
2019-02-15 15:39:39 +05:30
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks?url=https://gitlab.example.com/hook"
2016-04-02 18:10:28 +05:30
```
Example response:
2014-09-02 18:07:02 +05:30
2016-04-02 18:10:28 +05:30
```json
[
2017-08-17 22:00:37 +05:30
{
"id":1,
"url":"https://gitlab.example.com/hook",
"created_at":"2016-10-31T12:32:15.192Z",
"push_events":true,
"tag_push_events":false,
2018-03-17 18:26:18 +05:30
"merge_requests_events": true,
2018-11-20 20:47:30 +05:30
"repository_update_events": true,
2017-08-17 22:00:37 +05:30
"enable_ssl_verification":true
}
2016-04-02 18:10:28 +05:30
]
```
2014-09-02 18:07:02 +05:30
## Test system hook
2020-04-08 14:13:33 +05:30
```plaintext
2021-04-01 16:36:13 +05:30
POST /hooks/:id
2014-09-02 18:07:02 +05:30
```
2016-04-02 18:10:28 +05:30
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of the hook |
2014-09-02 18:07:02 +05:30
2016-04-02 18:10:28 +05:30
Example request:
2020-03-13 15:44:24 +05:30
```shell
2021-04-01 16:36:13 +05:30
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks/1"
2016-04-02 18:10:28 +05:30
```
Example response:
2014-09-02 18:07:02 +05:30
```json
{
2016-04-02 18:10:28 +05:30
"project_id" : 1,
"owner_email" : "example@gitlabhq.com",
"owner_name" : "Someone",
"name" : "Ruby",
"path" : "ruby",
"event_name" : "project_create"
2014-09-02 18:07:02 +05:30
}
```
## Delete system hook
2017-08-17 22:00:37 +05:30
Deletes a system hook.
2016-04-02 18:10:28 +05:30
2020-04-08 14:13:33 +05:30
```plaintext
2014-09-02 18:07:02 +05:30
DELETE /hooks/:id
```
2016-04-02 18:10:28 +05:30
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of the hook |
Example request:
2014-09-02 18:07:02 +05:30
2020-03-13 15:44:24 +05:30
```shell
2020-06-23 00:09:42 +05:30
curl --request DELETE --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/hooks/2"
2019-09-30 21:07:59 +05:30
```