# GitLab Merge request approvals API

**Canonical:** https://apis.io/apis/gitlab/gitlab-merge-request-approvals-api/  
**Provider:** GitLab — https://apis.io/providers/gitlab/  
**Base URL:** https://gitlab.com/api/v4  
**Documentation:** https://docs.gitlab.com/api/rest/

GitLab Merge request approvals API is one of 189 APIs that [GitLab](https://apis.io/providers/gitlab/) publishes on the [APIs.io](https://apis.io/) network, described by a machine-readable OpenAPI specification and an AsyncAPI event-driven specification. This API exposes 16 JSON Schema definitions. Tagged areas include Merge request approvals. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, authentication docs, an API reference, rate-limit docs, an AsyncAPI specification, and 16 JSON Schemas.

Use this API to manage [merge request approvals](https://docs.gitlab.com/user/project/merge_requests/approvals/) and the group and project [approval settings](https://docs.gitlab.com/user/project/merge_requests/approvals/settings/) that govern them. All endpoints require authentication. Endpoints to approve, unapprove, reset approvals, and retrieve approval state are available on all tiers, including Free. All other endpoints require Premium or Ultimate, and each one shows its tier. > [!note] > The `merge_request_iid` and `id` path parameters must each be a single value. > Passing multiple space-separated values (for example, `451 454 458`) is not > supported and returns `400 Bad Request`. To act on multiple merge requests, > make one request per merge request IID.

## Operations (15)

| Method | Path | Summary |
|---|---|---|
| GET | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_rules` | List all approval rules for a merge request |
| POST | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_rules` | Create an approval rule for a merge request |
| GET | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_rules/{approval_rule_id}` | Retrieve an approval rule for a specific merge request |
| PUT | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_rules/{approval_rule_id}` | Update an approval rule for a merge request |
| DELETE | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_rules/{approval_rule_id}` | Delete an approval rule for a merge request |
| GET | `/api/v4/projects/{id}/merge_request_approval_setting` | Retrieve MR approval settings for a project |
| PUT | `/api/v4/projects/{id}/merge_request_approval_setting` | Update MR approval settings for a project |
| GET | `/api/v4/groups/{id}/merge_request_approval_setting` | Retrieve MR approval settings for a group |
| PUT | `/api/v4/groups/{id}/merge_request_approval_setting` | Update MR approval settings for a group |
| GET | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approvals` | Retrieve approval state for a merge request |
| POST | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approvals` | Change approval-related configuration |
| POST | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approve` | Approve merge request |
| POST | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/unapprove` | Unapprove a merge request |
| PUT | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/reset_approvals` | Reset approvals for a merge request |
| GET | `/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_state` | Retrieve approval details for a merge request |

## Machine-readable artifacts (65)

- **OpenAPI** — https://artifacts.apis.io/gitlab/openapi/gitlab-merge-request-approvals-api-openapi.yml
- **Documentation** — https://docs.gitlab.com/api/openapi/
- **Documentation** — https://docs.gitlab.com/api/issues/
- **Authentication** — https://docs.gitlab.com/api/rest/authentication/
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-put-api-v4-application-settings-request-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-apientities-geo-node-status-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-apientities-geo-site-status-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-apientities-application-setting-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-post-api-v4-geo-status-request-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-put-api-v4-projects-id-request-schema.json
- **Documentation** — https://docs.gitlab.com/api/merge_requests/
- **Documentation** — https://docs.gitlab.com/api/pipelines/
- **Documentation** — https://docs.gitlab.com/api/jobs/
- **Documentation** — https://docs.gitlab.com/api/runners/
- **Documentation** — https://docs.gitlab.com/api/users/
- **Documentation** — https://docs.gitlab.com/api/repositories/
- **Documentation** — https://docs.gitlab.com/api/commits/
- **Documentation** — https://docs.gitlab.com/api/branches/
- **Documentation** — https://docs.gitlab.com/api/tags/
- **Documentation** — https://docs.gitlab.com/api/releases/
- **Documentation** — https://docs.gitlab.com/api/environments/
- **Documentation** — https://docs.gitlab.com/api/deployments/
- **Documentation** — https://docs.gitlab.com/api/pipeline_schedules/
- **Documentation** — https://docs.gitlab.com/api/labels/
- **Documentation** — https://docs.gitlab.com/api/milestones/
- **Documentation** — https://docs.gitlab.com/api/notes/
- **Documentation** — https://docs.gitlab.com/api/snippets/
- **Documentation** — https://docs.gitlab.com/api/packages/
- **Documentation** — https://docs.gitlab.com/api/container_registry/
- **Documentation** — https://docs.gitlab.com/api/vulnerabilities/
- **Documentation** — https://docs.gitlab.com/api/deploy_keys/
- **Documentation** — https://docs.gitlab.com/api/protected_branches/
- **Documentation** — https://docs.gitlab.com/api/wikis/
- **Documentation** — https://docs.gitlab.com/api/events/
- **Documentation** — https://docs.gitlab.com/api/search/
- **Documentation** — https://docs.gitlab.com/api/namespaces/
- **Documentation** — https://docs.gitlab.com/api/groups/
- **Documentation** — https://docs.gitlab.com/api/projects/
- **Documentation** — https://docs.gitlab.com/api/applications/
- **Documentation** — https://docs.gitlab.com/api/avatar/
- …and 25 more, listed in full on the page.

## Other GitLab APIs (12)

- [GitLab Orbit gRPC API](https://apis.io/apis/gitlab/gitlab-orbit-api/)
- [GitLab GraphQL API](https://apis.io/apis/gitlab/gitlab-graphql-api/)
- [GitLab Applications API](https://apis.io/apis/gitlab/gitlab-applications-api/)
- [GitLab Authorization API](https://apis.io/apis/gitlab/gitlab-authorization-api/)
- [GitLab Broadcast Messages API](https://apis.io/apis/gitlab/gitlab-broadcast-messages-api/)
- [GitLab Groups API](https://apis.io/apis/gitlab/gitlab-groups-api/)
- [GitLab Metadata API](https://apis.io/apis/gitlab/gitlab-metadata-api/)
- [GitLab Project Webhooks API](https://apis.io/apis/gitlab/gitlab-project-webhooks-api/)
- [GitLab Projects API](https://apis.io/apis/gitlab/gitlab-projects-api/)
- [GitLab Tokens API](https://apis.io/apis/gitlab/gitlab-tokens-api/)
- [GitLab User Info API](https://apis.io/apis/gitlab/gitlab-user-info-api/)
- [GitLab Webhook Configuration API](https://apis.io/apis/gitlab/gitlab-webhook-configuration-api/)

## Tags

Merge request approvals

---

Profiled by [API Evangelist](https://apievangelist.com) and published on [APIs.io](https://apis.io/apis/gitlab/gitlab-merge-request-approvals-api/). The API's provider profile, Kin Score and agent-readiness rating are at https://apis.io/providers/gitlab/.
