GitLab CI/CD Projects API

Operations related to projects

Operations 73

GET /api/v4/projects/{id}/runners List project's runners #
POST /api/v4/projects/{id}/runners Assign a runner to project #
DELETE /api/v4/projects/{id}/runners/{runner_id} Unassign a project runner from the project #
POST /api/v4/projects/{id}/runners/reset_registration_token Reset the runner registration token for a project #
GET /api/v4/projects/{id}/issues Get api V4 projects id issues #
POST /api/v4/projects/{id}/issues Post api V4 projects id issues #
GET /api/v4/projects/{id}/issues_statistics Get api V4 projects id issues statistics #
GET /api/v4/projects/{id}/issues/{issue_iid} Get api V4 projects id issues issue iid #
PUT /api/v4/projects/{id}/issues/{issue_iid} Put api V4 projects id issues issue iid #
DELETE /api/v4/projects/{id}/issues/{issue_iid} Delete api V4 projects id issues issue iid #
PUT /api/v4/projects/{id}/issues/{issue_iid}/reorder Put api V4 projects id issues issue iid reorder #
POST /api/v4/projects/{id}/issues/{issue_iid}/move Post api V4 projects id issues issue iid move #
POST /api/v4/projects/{id}/issues/{issue_iid}/clone Post api V4 projects id issues issue iid clone #
GET /api/v4/projects/{id}/issues/{issue_iid}/closed_by Get api V4 projects id issues issue iid closed by #
POST /api/v4/projects/{id}/uploads/authorize Workhorse authorize the file upload #
POST /api/v4/projects/{id}/uploads Post api V4 projects id uploads #
GET /api/v4/projects/{id}/uploads Get api V4 projects id uploads #
GET /api/v4/projects/{id}/uploads/{upload_id} Get api V4 projects id uploads upload id #
DELETE /api/v4/projects/{id}/uploads/{upload_id} Delete api V4 projects id uploads upload id #
GET /api/v4/projects/{id}/uploads/{secret}/{filename} Get api V4 projects id uploads secret filename #
DELETE /api/v4/projects/{id}/uploads/{secret}/{filename} Delete api V4 projects id uploads secret filename #
POST /api/v4/projects/{id}/create_ci_config Create merge request for missing ci config in project #
GET /api/v4/projects/{id}/registry/protection/repository/rules Get api V4 projects id registry protection repository rules #
POST /api/v4/projects/{id}/registry/protection/repository/rules Post api V4 projects id registry protection repository rules #
PATCH /api/v4/projects/{id}/registry/protection/repository/rules/{protection_rule_id} Patch api V4 projects id registry protection repository rules protection rule id #
DELETE /api/v4/projects/{id}/registry/protection/repository/rules/{protection_rule_id} Delete api V4 projects id registry protection repository rules protection rule… #
GET /api/v4/projects/{id}/registry/protection/tag/rules Gets a list of container protection tag rules for a project #
POST /api/v4/projects/{id}/registry/protection/tag/rules Create a container protection tag rule for a project. 5 rule limit per project #
PATCH /api/v4/projects/{id}/registry/protection/tag/rules/{protection_rule_id} Update a container protection tag rule for a project #
DELETE /api/v4/projects/{id}/registry/protection/tag/rules/{protection_rule_id} Delete container protection tag rule #
GET /api/v4/projects/{id}/packages/protection/rules Get api V4 projects id packages protection rules #
POST /api/v4/projects/{id}/packages/protection/rules Post api V4 projects id packages protection rules #
PATCH /api/v4/projects/{id}/packages/protection/rules/{package_protection_rule_id} Patch api V4 projects id packages protection rules package protection rule id #
DELETE /api/v4/projects/{id}/packages/protection/rules/{package_protection_rule_id} Delete api V4 projects id packages protection rules package protection rule id #
GET /api/v4/projects/{id}/statistics Get api V4 projects id statistics #
POST /api/v4/projects/{id}/restore Post api V4 projects id restore #
GET /api/v4/projects Get api V4 projects #
POST /api/v4/projects Post api V4 projects #
POST /api/v4/projects/user/{user_id} Post api V4 projects user user id #
GET /api/v4/projects/{id}/share_locations Get api V4 projects id share locations #
GET /api/v4/projects/{id} Get api V4 projects id #
PUT /api/v4/projects/{id} Put api V4 projects id #
DELETE /api/v4/projects/{id} Delete api V4 projects id #
POST /api/v4/projects/{id}/fork Post api V4 projects id fork #
DELETE /api/v4/projects/{id}/fork Delete api V4 projects id fork #
GET /api/v4/projects/{id}/forks Get api V4 projects id forks #
GET /api/v4/projects/{id}/pages_access Get api V4 projects id pages access #
POST /api/v4/projects/{id}/archive Post api V4 projects id archive #
POST /api/v4/projects/{id}/unarchive Post api V4 projects id unarchive #
POST /api/v4/projects/{id}/star Post api V4 projects id star #
POST /api/v4/projects/{id}/unstar Post api V4 projects id unstar #
GET /api/v4/projects/{id}/starrers Get api V4 projects id starrers #
GET /api/v4/projects/{id}/languages Get api V4 projects id languages #
POST /api/v4/projects/{id}/fork/{forked_from_id} Post api V4 projects id fork forked from id #
POST /api/v4/projects/{id}/share Post api V4 projects id share #
DELETE /api/v4/projects/{id}/share/{group_id} Delete api V4 projects id share group id #
POST /api/v4/projects/{id}/import_project_members/{project_id} Import members from another project #
GET /api/v4/projects/{id}/users Get api V4 projects id users #
GET /api/v4/projects/{id}/groups Get api V4 projects id groups #
GET /api/v4/projects/{id}/invited_groups Get api V4 projects id invited groups #
POST /api/v4/projects/{id}/housekeeping Start the housekeeping task for a project #
POST /api/v4/projects/{id}/repository_size Start a task to recalculate repository size for a project #
PUT /api/v4/projects/{id}/transfer Put api V4 projects id transfer #
GET /api/v4/projects/{id}/transfer_locations Get api V4 projects id transfer locations #
GET /api/v4/projects/{id}/storage Get api V4 projects id storage #
GET /api/v4/projects/{id}/audit_events Get api V4 projects id audit events #
GET /api/v4/projects/{id}/audit_events/{audit_event_id} Get api V4 projects id audit events audit event id #
GET /api/v4/projects/{id}/(-/)search Search on GitLab within a project #
GET /api/v4/projects/{id}/terraform/state_protection_rules List all Terraform state protection rules for a project #
GET /api/v4/runners/{id}/projects List runner's projects #
GET /api/v4/users/{user_id}/projects Get api V4 users user id projects #
GET /api/v4/users/{user_id}/contributed_projects Get api V4 users user id contributed projects #
GET /api/v4/users/{user_id}/starred_projects Get api V4 users user id starred projects #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gitlab-ci-projects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gitlab-ci-projects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GitLab Projects API
  version: v4
  description: Operations related to projects
servers:
- url: https://gitlab.com
tags:


# --- truncated at 32 KB (262 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gitlab-ci/refs/heads/main/openapi/gitlab-ci-projects-api-openapi.yml