How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

GitLab CI/CD projects API

Operations related to projects

GitLab CI/CD projects API is one of 98 APIs that GitLab CI/CD publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Project. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, an API reference, and authentication docs.

This API exposes 73 operations across 56 paths, and defines 58 schemas. It is described by OpenAPI 2.0, at version v4.

Requests are made against the base URL https://gitlab.com/api/v4.

73 operations 56 paths 58 schemas 10 DELETE32 GET3 PATCH24 POST4 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 2.0
API Version
v4
Base URL
https://gitlab.com/api/v4
Authentication
API Key, API Key
Resource Areas
1

Authentication & Security 2

GitLab CI/CD projects API declares 2 security schemes for authenticating requests. An API key is passed in the header as PRIVATE-TOKEN (access_token_header). An API key is passed in the query as private_token (access_token_query).

Paths & Operations 73

Across 56 paths, the API surfaces 73 operations — 10 DELETE, 32 GET, 3 PATCH, 24 POST, 4 PUT. Each is listed below with its method, path, parameters, and response codes.

projects 73

Operations related to projects

GET
/api/v4/projects/{id}/runners
List project's runners
getApiV4ProjectsIdRunners 9 params → 200400403
POST
/api/v4/projects/{id}/runners
Assign a runner to project
postApiV4ProjectsIdRunners 2 params → 201400403404
DELETE
/api/v4/projects/{id}/runners/{runner_id}
Unassign a project runner from the project
deleteApiV4ProjectsIdRunnersRunnerId 2 params → 400204403404412
POST
/api/v4/projects/{id}/runners/reset_registration_token
Reset the runner registration token for a project
postApiV4ProjectsIdRunnersResetRegistrationToken 1 param → 201401403404
GET
/api/v4/projects/{id}/issues
Get a list of project issues
getApiV4ProjectsIdIssues 44 params → 200
POST
/api/v4/projects/{id}/issues
Create a new project issue
postApiV4ProjectsIdIssues 2 params → 201
GET
/api/v4/projects/{id}/issues_statistics
Get statistics for the list of project issues
getApiV4ProjectsIdIssuesStatistics 34 params → 200
GET
/api/v4/projects/{id}/issues/{issue_iid}
Get a single project issue
getApiV4ProjectsIdIssuesIssueIid 2 params → 200
PUT
/api/v4/projects/{id}/issues/{issue_iid}
Update an existing issue
putApiV4ProjectsIdIssuesIssueIid 3 params → 200
DELETE
/api/v4/projects/{id}/issues/{issue_iid}
Delete a project issue
deleteApiV4ProjectsIdIssuesIssueIid 2 params → 204
PUT
/api/v4/projects/{id}/issues/{issue_iid}/reorder
Reorder an existing issue
putApiV4ProjectsIdIssuesIssueIidReorder 3 params → 200
POST
/api/v4/projects/{id}/issues/{issue_iid}/move
Move an existing issue
postApiV4ProjectsIdIssuesIssueIidMove 3 params → 201
POST
/api/v4/projects/{id}/issues/{issue_iid}/clone
Clone an existing issue
postApiV4ProjectsIdIssuesIssueIidClone 3 params → 201
GET
/api/v4/projects/{id}/issues/{issue_iid}/closed_by
List merge requests closing issue
getApiV4ProjectsIdIssuesIssueIidClosedBy 2 params → 200
POST
/api/v4/projects/{id}/uploads/authorize
Workhorse authorize the file upload
postApiV4ProjectsIdUploadsAuthorize 1 param → 200404
POST
/api/v4/projects/{id}/uploads
Upload a file
postApiV4ProjectsIdUploads 2 params → 201404
GET
/api/v4/projects/{id}/uploads
Get the list of uploads of a project
getApiV4ProjectsIdUploads 3 params → 200403404
GET
/api/v4/projects/{id}/uploads/{upload_id}
Download a single project upload by ID
getApiV4ProjectsIdUploadsUploadId 2 params → 200403404
DELETE
/api/v4/projects/{id}/uploads/{upload_id}
Delete a single project upload by ID
deleteApiV4ProjectsIdUploadsUploadId 2 params → 204400403404
GET
/api/v4/projects/{id}/uploads/{secret}/{filename}
Download a single project upload by secret and filename
getApiV4ProjectsIdUploadsSecretFilename 3 params → 200403404
DELETE
/api/v4/projects/{id}/uploads/{secret}/{filename}
Delete a single project upload by secret and filename
deleteApiV4ProjectsIdUploadsSecretFilename 3 params → 204400403404
POST
/api/v4/projects/{id}/create_ci_config
Create merge request for missing ci config in project
postApiV4ProjectsIdCreateCiConfig 1 param → 201
GET
/api/v4/projects/{id}/registry/protection/repository/rules
Get list of container registry protection rules for a project
getApiV4ProjectsIdRegistryProtectionRepositoryRules 1 param → 200401403404
POST
/api/v4/projects/{id}/registry/protection/repository/rules
Create a container protection rule for a project
postApiV4ProjectsIdRegistryProtectionRepositoryRules 2 params → 201400401403404422
PATCH
/api/v4/projects/{id}/registry/protection/repository/rules/{protection_rule_id}
Update a container protection rule for a project
patchApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId 3 params → 200400401403404422
DELETE
/api/v4/projects/{id}/registry/protection/repository/rules/{protection_rule_id}
Delete container protection rule
deleteApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId 2 params → 204400401403404
GET
/api/v4/projects/{id}/registry/protection/tag/rules
Gets a list of container protection tag rules for a project.
getApiV4ProjectsIdRegistryProtectionTagRules 1 param → 200401403404
POST
/api/v4/projects/{id}/registry/protection/tag/rules
Create a container protection tag rule for a project. 5 rule limit per project.
postApiV4ProjectsIdRegistryProtectionTagRules 2 params → 201400401403404422
PATCH
/api/v4/projects/{id}/registry/protection/tag/rules/{protection_rule_id}
Update a container protection tag rule for a project.
patchApiV4ProjectsIdRegistryProtectionTagRulesProtectionRuleId 3 params → 200400401403404422
DELETE
/api/v4/projects/{id}/registry/protection/tag/rules/{protection_rule_id}
Delete container protection tag rule
deleteApiV4ProjectsIdRegistryProtectionTagRulesProtectionRuleId 2 params → 204400401403404
GET
/api/v4/projects/{id}/packages/protection/rules
Get list of package protection rules for a project
getApiV4ProjectsIdPackagesProtectionRules 1 param → 200401403404
POST
/api/v4/projects/{id}/packages/protection/rules
Create a package protection rule for a project
postApiV4ProjectsIdPackagesProtectionRules 2 params → 201400401403404422
PATCH
/api/v4/projects/{id}/packages/protection/rules/{package_protection_rule_id}
Update a package protection rule for a project
patchApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId 3 params → 200400401403404422
DELETE
/api/v4/projects/{id}/packages/protection/rules/{package_protection_rule_id}
Delete package protection rule
deleteApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId 2 params → 204400401403404
GET
/api/v4/projects/{id}/statistics
Get the list of project fetch statistics for the last 30 days
getApiV4ProjectsIdStatistics 1 param → 200404401
POST
/api/v4/projects/{id}/restore
Restore a project
postApiV4ProjectsIdRestore 1 param → 201
GET
/api/v4/projects
Get a list of visible projects for authenticated user
getApiV4Projects 34 params → 200400
POST
/api/v4/projects
Create new project
postApiV4Projects 1 param → 201403404400
POST
/api/v4/projects/user/{user_id}
Create new project for a specified user. Only available to admin users.
postApiV4ProjectsUserUserId 2 params → 201403404400
GET
/api/v4/projects/{id}/share_locations
Returns group that can be shared with the given project
getApiV4ProjectsIdShareLocations 2 params → 200
GET
/api/v4/projects/{id}
Get a single project
getApiV4ProjectsId 4 params → 200
PUT
/api/v4/projects/{id}
Update an existing project
putApiV4ProjectsId 2 params → 200400403
DELETE
/api/v4/projects/{id}
Delete a project
deleteApiV4ProjectsId 1 param → 202403404
POST
/api/v4/projects/{id}/fork
Fork new project for the current user or provided namespace.
postApiV4ProjectsIdFork 2 params → 201403404409
DELETE
/api/v4/projects/{id}/fork
Remove a forkedfrom relationship
deleteApiV4ProjectsIdFork 1 param → 204304403404
GET
/api/v4/projects/{id}/forks
List forks of this project
getApiV4ProjectsIdForks 34 params → 200
GET
/api/v4/projects/{id}/pages_access
Check pages access of this project
getApiV4ProjectsIdPagesAccess 1 param → 200403
POST
/api/v4/projects/{id}/archive
Archive a project
postApiV4ProjectsIdArchive 1 param → 201403
POST
/api/v4/projects/{id}/unarchive
Unarchive a project
postApiV4ProjectsIdUnarchive 1 param → 201403
POST
/api/v4/projects/{id}/star
Star a project
postApiV4ProjectsIdStar 1 param → 201304403
POST
/api/v4/projects/{id}/unstar
Unstar a project
postApiV4ProjectsIdUnstar 1 param → 201304403
GET
/api/v4/projects/{id}/starrers
Get the users who starred a project
getApiV4ProjectsIdStarrers 4 params → 200403404
GET
/api/v4/projects/{id}/languages
Get languages in project repository
getApiV4ProjectsIdLanguages 1 param → 200404
POST
/api/v4/projects/{id}/fork/{forked_from_id}
Mark this project as forked from another
postApiV4ProjectsIdForkForkedFromId 2 params → 201401403404
POST
/api/v4/projects/{id}/share
Share the project with a group
postApiV4ProjectsIdShare 2 params → 201400403404
DELETE
/api/v4/projects/{id}/share/{group_id}
Remove a group share
deleteApiV4ProjectsIdShareGroupId 2 params → 204400404
POST
/api/v4/projects/{id}/import_project_members/{project_id}
Import members from another project
postApiV4ProjectsIdImportProjectMembersProjectId 2 params → 200403404422
GET
/api/v4/projects/{id}/users
Get the users list of a project
getApiV4ProjectsIdUsers 5 params → 200403404
GET
/api/v4/projects/{id}/groups
Get ancestor and shared groups for a project
getApiV4ProjectsIdGroups 8 params → 200403404
GET
/api/v4/projects/{id}/invited_groups
Get a list of invited groups in this project
getApiV4ProjectsIdInvitedGroups 7 params → 200
POST
/api/v4/projects/{id}/housekeeping
Start the housekeeping task for a project
postApiV4ProjectsIdHousekeeping 2 params → 201401403409
POST
/api/v4/projects/{id}/repository_size
Start a task to recalculate repository size for a project
postApiV4ProjectsIdRepositorySize 1 param → 201401403
PUT
/api/v4/projects/{id}/transfer
Transfer a project to a new namespace
putApiV4ProjectsIdTransfer 2 params → 200400403404
GET
/api/v4/projects/{id}/transfer_locations
Get the namespaces to where the project can be transferred
getApiV4ProjectsIdTransferLocations 4 params → 200403
GET
/api/v4/projects/{id}/storage
Show the storage information
getApiV4ProjectsIdStorage 1 param → 200403
GET
/api/v4/projects/{id}/audit_events
Get a list of audit events in this project.
getApiV4ProjectsIdAuditEvents 5 params → 200
GET
/api/v4/projects/{id}/audit_events/{audit_event_id}
Get a specific audit event in this project.
getApiV4ProjectsIdAuditEventsAuditEventId 2 params → 200
GET
/api/v4/projects/{id}/(-/)search
Search on GitLab within a project
getApiV4ProjectsId(-)search 12 params → 200
GET
/api/v4/projects/{id}/terraform/state_protection_rules
List all Terraform state protection rules for a project
getApiV4ProjectsIdTerraformStateProtectionRules 1 param → 200401403404
GET
/api/v4/runners/{id}/projects
List runner's projects
getApiV4RunnersIdProjects 3 params → 200401403404
GET
/api/v4/users/{user_id}/projects
Get a user projects
getApiV4UsersUserIdProjects 35 params → 200404
GET
/api/v4/users/{user_id}/contributed_projects
Get projects that a user has contributed to
getApiV4UsersUserIdContributedProjects 6 params → 200404
GET
/api/v4/users/{user_id}/starred_projects
Get projects starred by a user
getApiV4UsersUserIdStarredProjects 34 params → 200404

Schemas 58

The contract defines 58 schemas that model the data the API accepts and returns. The most detailed are API_Entities_ProjectWithAccess (157 properties), API_Entities_Project (156 properties), putApiV4ProjectsId (116 properties), postApiV4Projects (94 properties). Each schema is shown below with its type and property counts.

API_Entities_Terraform_StateProtectionRule
object
APIEntitiesTerraformStateProtectionRule model
5 properties 5 required
API_Entities_CustomAttribute
object
APIEntitiesCustomAttribute model
2 properties 2 required
postApiV4ProjectsIdPackagesProtectionRules
object
Create a package protection rule for a project
4 properties 2 required
API_Entities_Iteration
object
12 properties 12 required
API_Entities_Ci_Runner
object
APIEntitiesCiRunner model
13 properties 12 required
API_Entities_Projects_ContainerRegistry_Protection_TagRule
object
APIEntitiesProjectsContainerRegistryProtectionTagRule model
5 properties 5 required
postApiV4ProjectsIdFork
object
Fork new project for the current user or provided namespace.
9 properties
putApiV4ProjectsIdTransfer
object
Transfer a project to a new namespace
1 property 1 required
postApiV4ProjectsIdIssues
object
Create a new project issue
19 properties 1 required
API_Entities_UserBasic
object
APIEntitiesUserBasic model
10 properties 8 required
API_Entities_IssuableTimeStats
object
APIEntitiesIssuableTimeStats model
4 properties 4 required
API_Entities_Issue
object
APIEntitiesIssue model
44 properties 37 required
API_Entities_Group
object
APIEntitiesGroup model
50 properties 36 required
postApiV4ProjectsIdHousekeeping
object
Start the housekeeping task for a project
1 property
postApiV4ProjectsIdRegistryProtectionTagRules
object
Create a container protection tag rule for a project. 5 rule limit per project.
3 properties 3 required
API_Entities_MarkdownUploadAdmin
object
APIEntitiesMarkdownUploadAdmin model
5 properties 5 required
API_Entities_AuditEvent
object
APIEntitiesAuditEvent model
7 properties 7 required
API_Entities_Projects_Packages_Protection_Rule
object
APIEntitiesProjectsPackagesProtectionRule model
6 properties 6 required
API_Entities_Namespace_RootStorageStatistics
object
12 properties 12 required
API_Entities_Milestone
object
13 properties 11 required
postApiV4Projects
object
Create new project
94 properties
putApiV4ProjectsIdIssuesIssueIidReorder
object
Reorder an existing issue
2 properties
patchApiV4ProjectsIdRegistryProtectionTagRulesProtectionRuleId
object
Update a container protection tag rule for a project.
3 properties
postApiV4ProjectsIdUploads
object
Upload a file
1 property 1 required
postApiV4ProjectsIdRunners
object
Assign a runner to project
1 property 1 required
patchApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId
object
Update a container protection rule for a project
3 properties
API_Entities_ProjectUpload
object
APIEntitiesProjectUpload model
5 properties 5 required
API_Entities_Project
object
APIEntitiesProject model
156 properties 83 required
postApiV4ProjectsIdIssuesIssueIidMove
object
Move an existing issue
1 property 1 required
API_Entities_NamespaceBasic
object
8 properties 8 required
API_Entities_MergeRequestBasic
object
APIEntitiesMergeRequestBasic model
55 properties 51 required
API_Entities_LdapGroupLink
object
5 properties 3 required
API_Entities_ProjectAccess
object
2 properties 2 required
API_Entities_SamlGroupLink
object
4 properties 3 required
postApiV4ProjectsUserUserId
object
Create new project for a specified user. Only available to admin users.
94 properties 1 required
API_Entities_BasicProjectDetails
object
APIEntitiesBasicProjectDetails model
24 properties 17 required
API_Entities_ProjectDailyStatistics
object
APIEntitiesProjectDailyStatistics model
1 property 1 required
postApiV4ProjectsIdShare
object
Share the project with a group
4 properties 2 required
API_Entities_Ci_ResetTokenResult
object
APIEntitiesCiResetTokenResult model
2 properties 1 required
API_Entities_ProjectGroupLink
object
APIEntitiesProjectGroupLink model
6 properties 5 required
API_Entities_ProjectDailyFetches
object
2 properties 2 required
API_Entities_ProjectWithAccess
object
APIEntitiesProjectWithAccess model
157 properties 84 required
API_Entities_GroupAccess
object
2 properties 2 required
EpicBaseEntity
object
7 properties 5 required
API_Entities_Projects_ContainerRegistry_Protection_Rule
object
APIEntitiesProjectsContainerRegistryProtectionRule model
5 properties 5 required
patchApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId
object
Update a package protection rule for a project
4 properties
API_Entities_PublicGroupDetails
object
APIEntitiesPublicGroupDetails model
6 properties 6 required
API_Entities_ContainerExpirationPolicy
object
7 properties 7 required
putApiV4ProjectsId
object
Update an existing project
116 properties
API_Entities_IssuableReferences
object
3 properties 3 required
postApiV4ProjectsIdIssuesIssueIidClone
object
Clone an existing issue
2 properties 1 required
API_Entities_UserSafe
object
4 properties 4 required
putApiV4ProjectsIdIssuesIssueIid
object
Update an existing issue
18 properties
API_Entities_ProjectStatistics
object
11 properties 11 required
postApiV4ProjectsIdRegistryProtectionRepositoryRules
object
Create a container protection rule for a project
3 properties 1 required
API_Entities_TaskCompletionStatus
object
2 properties 2 required
API_Entities_ProjectRepositoryStorage
object
APIEntitiesProjectRepositoryStorage model
4 properties 4 required
API_Entities_LicenseBasic
object
5 properties 5 required

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

gitlab-ci-projects-api-openapi.yml Raw ↑

Other APIs GitLab CI/CD publishes across the network.

GitLab GraphQL API
GitLab CI/CD access_requests API
GitLab CI/CD access_tokens API
GitLab CI/CD agents API
GitLab CI/CD alert_management API
GitLab CI/CD applications API
GitLab CI/CD attestations API
GitLab CI/CD audit_events API
GitLab CI/CD avatars API
GitLab CI/CD award_emoji API
GitLab CI/CD badges API
GitLab CI/CD batched_background_migrations API
Where this information came from

This is an independent, third-party profile of GitLab CI/CD projects API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.