Use this API to view and manage groups and the resources they contain, including:
- Group settings, members, and security settings.
- Group issues and issue statistics.
- Markdown uploads referenced in epics or wiki pages.
- Bulk reassignment of placeholder users after an import.
Endpoint responses might vary based on the permissions
of the authenticated user in the group. If a user isn’t a member of a private group, requests to
that group return a 404 Not Found status code.
For project members, use the project members API.
List all groups
GET /api/v4/groups
Lists all visible groups for the authenticated user. Unauthenticated requests return only public groups.
Parameters
| Name | Type | Description |
|---|---|---|
statisticsQuery | Boolean | Include project statistics Default: false |
archivedQuery | Boolean | Limit by archived status |
skip_Query | Array of integers | Array of group ids to exclude from list |
all_Query | Boolean | When true,false, |
visibilityQuery | String | Limit by visibility Allowed values: private,internal,public |
searchQuery | String | Search for a specific group |
ownedQuery | Boolean | Limit by owned by authenticated user Default: false |
order_Query | String | Order by name, Allowed values: name,path,id,similarityDefault: name |
sortQuery | String | Sort by asc (ascending) or desc (descending) Allowed values: asc,descDefault: asc |
min_Query | Integer | Minimum access level of authenticated user Allowed values: 10,15,20,25,30,40,50 |
top_Query | Boolean | Only include top- |
marked_Query | String (date) | Return groups that are marked for deletion on this date |
activeQuery | Boolean | Limit by groups that are not archived and not marked for deletion |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
Create a group
POST /api/v4/groups
Creates a project group. Available only for users who can create groups.
Request body (multipart/form-data)
| Property | Type | Description |
|---|---|---|
auto_ | Boolean | Default to Auto Dev |
avatar | String (binary) | Avatar image for the group |
crm_ | Boolean | Enable Customer Relations Management for this group |
default_ | String | The default branch of group’s projects Example: main |
default_ | Integer | Determine if developers can push to default branch Allowed values: 0,3,1,2,4 |
default_ | Object | Determine if developers can push to default branch |
default_ | Boolean | Allow force push for all users with push access |
default_ | Array of objects | An array of access levels allowed to merge |
default_Required | Integer | A valid access level Allowed values: 30,40,60,0 |
default_ | Array of objects | An array of access levels allowed to push |
default_Required | Integer | A valid access level Allowed values: 30,40,60,0 |
default_ | Boolean | Require approval from code owners |
default_ | Boolean | Allow developers to initial push |
description | String | The description of the group |
emails_ | Boolean | (Deprecated) Disable email notifications. |
emails_ | Boolean | Enable email notifications |
enabled_ | String | Allow only the selected protocols to be used for Git access Allowed values: ssh,http,all |
lfs_ | Boolean | Enable/ |
lock_ | Boolean | Prevent subgroups from overriding the access token expiry notification setting |
mentions_ | Boolean | Disable a group from getting mentioned |
nameRequired | String | The name of the group |
organization_ | Integer | The organization id for the group |
parent_ | Integer | The parent group id for creating nested group |
pathRequired | String | The path of the group |
project_ | String | Determine if developers can create projects in the group Allowed values: noone,owner,maintainer,developer,administrator |
request_ | Boolean | Allow users to request member access |
require_ | Boolean | Require all users in this group to setup Two- |
resource_ | Boolean | Send access token expiry notifications to all inherited members of the group |
share_ | Boolean | Prevent sharing a project with another group within this group |
show_ | Boolean | Include the code diff preview in merge request notification emails |
subgroup_ | String | Allowed to create subgroups Allowed values: owner,maintainer |
two_ | Integer | Time before Two- |
visibility | String | The visibility of the group Allowed values: private,internal,public |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | APIEntities |
400 | Bad Request | — |
Retrieve a group
GET /api/v4/groups/{id}
Retrieves a specified group by ID or path.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
with_Query | Boolean | Omit project details Default: true |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Update group attributes
PUT /api/v4/groups/{id}
Updates the attributes for a specified group. You must be an administrator or have the Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Request body (multipart/form-data)
| Property | Type | Description |
|---|---|---|
auto_ | Boolean | Default to Auto Dev |
avatar | String (binary) | Avatar image for the group |
crm_ | Boolean | Enable Customer Relations Management for this group |
default_ | String | The default branch of group’s projects Example: main |
default_ | Integer | Determine if developers can push to default branch Allowed values: 0,3,1,2,4 |
default_ | Object | Determine if developers can push to default branch |
default_ | Boolean | Allow force push for all users with push access |
default_ | Array of objects | An array of access levels allowed to merge |
default_Required | Integer | A valid access level Allowed values: 30,40,60,0 |
default_ | Array of objects | An array of access levels allowed to push |
default_Required | Integer | A valid access level Allowed values: 30,40,60,0 |
default_ | Boolean | Require approval from code owners |
default_ | Boolean | Allow developers to initial push |
description | String | The description of the group |
emails_ | Boolean | (Deprecated) Disable email notifications. |
emails_ | Boolean | Enable email notifications |
enabled_ | String | Allow only the selected protocols to be used for Git access Allowed values: ssh,http,all |
lfs_ | Boolean | Enable/ |
lock_ | Boolean | Indicates if math rendering limits are locked for all descendent groups |
lock_ | Boolean | Prevent subgroups from overriding the access token expiry notification setting |
math_ | Boolean | Indicates if math rendering limits are used for this group |
max_ | Integer | Set the maximum file size for each job’s artifacts |
mentions_ | Boolean | Disable a group from getting mentioned |
name | String | The name of the group |
path | String | The path of the group |
prevent_ | Boolean | Prevent sharing groups within this namespace with any groups outside the namespace. |
project_ | String | Determine if developers can create projects in the group Allowed values: noone,owner,maintainer,developer,administrator |
request_ | Boolean | Allow users to request member access |
require_ | Boolean | Require all users in this group to setup Two- |
resource_ | Boolean | Send access token expiry notifications to all inherited members of the group |
share_ | Boolean | Prevent sharing a project with another group within this group |
shared_ | String | Enable/ Allowed values: disabled_,disabled_,enabled |
show_ | Boolean | Include the code diff preview in merge request notification emails |
step_ | String | OAuth provider required for step- |
subgroup_ | String | Allowed to create subgroups Allowed values: owner,maintainer |
two_ | Integer | Time before Two- |
visibility | String | The visibility of the group Allowed values: private,internal,public |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Schedule a group for deletion
DELETE /api/v4/groups/{id}
Schedules a group for deletion. Groups are deleted at the end of the retention period (30 days by default). Use the permanently_remove param to override the retention period.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Responses
| Code | Description | Schema |
|---|---|---|
202 | Accepted | — |
400 | Bad Request | — |
404 | Not Found | — |
Archive a group
POST /api/v4/groups/{id}/archive
Archives a specified group. You must be an administrator or have the Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
403 | Unauthenticated | — |
404 | Not Found | — |
List all descendant groups
GET /api/v4/groups/{id}/descendant_groups
Lists all descendant groups for a specified group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
statisticsQuery | Boolean | Include project statistics Default: false |
archivedQuery | Boolean | Limit by archived status |
skip_Query | Array of integers | Array of group ids to exclude from list |
all_Query | Boolean | When true,false, |
visibilityQuery | String | Limit by visibility Allowed values: private,internal,public |
searchQuery | String | Search for a specific group |
ownedQuery | Boolean | Limit by owned by authenticated user Default: false |
order_Query | String | Order by name, Allowed values: name,path,id,similarityDefault: name |
sortQuery | String | Sort by asc (ascending) or desc (descending) Allowed values: asc,descDefault: asc |
min_Query | Integer | Minimum access level of authenticated user Allowed values: 10,15,20,25,30,40,50 |
top_Query | Boolean | Only include top- |
marked_Query | String (date) | Return groups that are marked for deletion on this date |
activeQuery | Boolean | Limit by groups that are not archived and not marked for deletion |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
List all shared groups
GET /api/v4/groups/{id}/groups/shared
Lists all groups shared with a specified group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
skip_Query | Array of integers | Array of group ids to exclude from list |
visibilityQuery | String | Limit by visibility Allowed values: private,internal,public |
searchQuery | String | Search for a specific group |
min_Query | Integer | Minimum access level of authenticated user Allowed values: 10,15,20,25,30,40,50 |
order_Query | String | Order by name, Allowed values: name,path,id,similarityDefault: name |
sortQuery | String | Sort by asc (ascending) or desc (descending) Allowed values: asc,descDefault: asc |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
List all invited groups
GET /api/v4/groups/{id}/invited_groups
Lists all groups invited to a specified group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
relationQuery | Array of strings | Include group relations |
searchQuery | String | Search for a specific group |
min_Query | Integer | Minimum access level of authenticated user Allowed values: 10,15,20,25,30,40,50 |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
List all issues for a group
GET /api/v4/groups/{id}/issues
Lists all issues for a specified group. If the group is private, you must provide credentials to authorize. In most cases, you should authenticate with a personal access token.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
with_Query | Boolean | Return titles of labels and other details Default: false |
stateQuery | String | Return opened, Allowed values: opened,closed,allDefault: all |
closed_Query | Integer | Return issues which were closed by the user with the given ID |
order_Query | String | Return issues ordered by created_,due_,label_,milestone_,popularity,priority,relative_,title,updated_ fieldsAllowed values: created_,due_,label_,milestone_,popularity,priority,relative_,title,updated_Default: created_ |
sortQuery | String | Return issues sorted in asc or desc orderAllowed values: asc,descDefault: desc |
due_Query | String | Return issues that have no due date (0),overdue,week,month,next_,0Allowed values: 0,any,today,tomorrow,overdue,week,month,next_, |
issue_Query | String | The type of the issue. Allowed values: issue,incident,test_,requirement,task,ticket |
labelsQuery | Array of strings | Comma- |
milestoneQuery | String | Milestone title.milestone_ |
milestone_Query | String | Return issues assigned to milestones with the specified timebox value (“Any”,milestoneAllowed values: Any,None,Upcoming,Started |
iidsQuery | Array of integers | The IID array of issues |
searchQuery | String | Search issues for text present in the title, |
inQuery | String | title,description, |
author_Query | Integer | Return issues which are authored by the user with the given ID.author_ |
author_Query | String | Return issues which are authored by the user with the given username.author_ |
assignee_Query | Integer or string | Return issues which are assigned to the user with the given ID.assignee_ |
assignee_Query | Array of strings | Return issues which are assigned to the user with the given username.assignee_ |
created_Query | String (date- | Return issues created after the specified time |
created_Query | String (date- | Return issues created before the specified time |
updated_Query | String (date- | Return issues updated after the specified time |
updated_Query | String (date- | Return issues updated before the specified time |
notQuery | Object | Filters by the specified parameters |
not[labels]Query | Array of strings | Comma- |
not[milestone]Query | String | Milestone title.not[milestone_ |
not[milestone_Query | String | Return issues assigned to milestones without the specified timebox value (“Any”,not[milestone]Allowed values: Any,None,Upcoming,Started |
not[iids]Query | Array of integers | The IID array of issues |
not[author_Query | Integer | Return issues which are not authored by the user with the given ID.not[author_ |
not[author_Query | String | Return issues which are not authored by the user with the given username.not[author_ |
not[assignee_Query | Integer | Return issues which are not assigned to the user with the given ID.not[assignee_ |
not[assignee_Query | Array of strings | Return issues which are not assigned to the user with the given username.not[assignee_ |
scopeQuery | String | Return issues for the given scope:created_,assigned_ or allAllowed values: created-,assigned-,created_,assigned_,all |
my_Query | String | Return issues reacted by the authenticated user by the given emoji |
confidentialQuery | Boolean | Filter confidential or public issues |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
non_Query | Boolean | Return issues from non archived projects Default: true |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Retrieve issues statistics for a group
GET /api/v4/groups/{id}/issues_statistics
Retrieves statistics for issues in a specified group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
labelsQuery | Array of strings | Comma- |
milestoneQuery | String | Milestone title.milestone_ |
milestone_Query | String | Return issues assigned to milestones with the specified timebox value (“Any”,milestoneAllowed values: Any,None,Upcoming,Started |
iidsQuery | Array of integers | The IID array of issues |
searchQuery | String | Search issues for text present in the title, |
inQuery | String | title,description, |
author_Query | Integer | Return issues which are authored by the user with the given ID.author_ |
author_Query | String | Return issues which are authored by the user with the given username.author_ |
assignee_Query | Integer or string | Return issues which are assigned to the user with the given ID.assignee_ |
assignee_Query | Array of strings | Return issues which are assigned to the user with the given username.assignee_ |
created_Query | String (date- | Return issues created after the specified time |
created_Query | String (date- | Return issues created before the specified time |
updated_Query | String (date- | Return issues updated after the specified time |
updated_Query | String (date- | Return issues updated before the specified time |
notQuery | Object | Filters by the specified parameters |
not[labels]Query | Array of strings | Comma- |
not[milestone]Query | String | Milestone title.not[milestone_ |
not[milestone_Query | String | Return issues assigned to milestones without the specified timebox value (“Any”,not[milestone]Allowed values: Any,None,Upcoming,Started |
not[iids]Query | Array of integers | The IID array of issues |
not[author_Query | Integer | Return issues which are not authored by the user with the given ID.not[author_ |
not[author_Query | String | Return issues which are not authored by the user with the given username.not[author_ |
not[assignee_Query | Integer | Return issues which are not assigned to the user with the given ID.not[assignee_ |
not[assignee_Query | Array of strings | Return issues which are not assigned to the user with the given username.not[assignee_ |
scopeQuery | String | Return issues for the given scope:created_,assigned_ or allAllowed values: created-,assigned-,created_,assigned_,all |
my_Query | String | Return issues reacted by the authenticated user by the given emoji |
confidentialQuery | Boolean | Filter confidential or public issues |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
Retrieve pending reassignments
GET /api/v4/groups/{id}/placeholder_reassignments
Retrieves a CSV file with a list of pending reassignments. This feature was introduced in GitLab 17.10.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | String (text/) |
400 | Bad Request | — |
404 | Not Found | — |
Reassign placeholders
POST /api/v4/groups/{id}/placeholder_reassignments
Reassigns placeholder users with an uploaded CSV file.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Request body (multipart/form-data)
| Property | Type | Description |
|---|---|---|
fileRequired | String (binary) | The CSV file containing the reassignments |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | — |
400 | Bad Request | — |
404 | Not Found | — |
Workhorse authorization for the reassignment CSV file
POST /api/v4/groups/{id}/placeholder_reassignments/authorize
Authorizes Workhorse to handle CSV file uploads for placeholder reassignments. This feature was introduced in GitLab 17.10
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | — |
400 | Bad Request | — |
404 | Not Found | — |
List all projects in a group
GET /api/v4/groups/{id}/projects
Lists all projects in a specified group accessible to the authenticated user. Unauthenticated requests return only public projects with a limited subset of attributes.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
activeQuery | Boolean | Limit by projects that are not archived and not marked for deletion |
archivedQuery | Boolean | Limit by archived status |
visibilityQuery | String | Limit by visibility Allowed values: private,internal,public |
searchQuery | String | Return list of authorized projects matching the search criteria |
order_Query | String | Return projects ordered by field Allowed values: id,name,path,created_,updated_,last_,similarity,star_Default: created_ |
sortQuery | String | Return projects sorted in ascending and descending order Allowed values: asc,descDefault: desc |
simpleQuery | Boolean | Return only the ID, Default: false |
ownedQuery | Boolean | Limit by owned by authenticated user Default: false |
starredQuery | Boolean | Limit by starred status Default: false |
with_Query | Boolean | Limit by enabled issues feature Default: false |
with_Query | Boolean | Limit by enabled merge requests feature Default: false |
with_Query | Boolean | Include projects shared to this group Default: true |
include_Query | Boolean | Includes projects in subgroups of this group Default: false |
include_Query | Boolean | Includes projects in ancestors of this group Default: false |
min_Query | Integer | Limit by minimum access level of authenticated user on projects Allowed values: 10,15,20,25,30,40,50 |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
List all shared projects
GET /api/v4/groups/{id}/projects/shared
Lists all projects shared with a specified group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
archivedQuery | Boolean | Limit by archived status |
visibilityQuery | String | Limit by visibility Allowed values: private,internal,public |
searchQuery | String | Return list of authorized projects matching the search criteria |
order_Query | String | Return projects ordered by field Allowed values: id,name,path,created_,updated_,last_,star_Default: created_ |
sortQuery | String | Return projects sorted in ascending and descending order Allowed values: asc,descDefault: desc |
simpleQuery | Boolean | Return only the ID, Default: false |
starredQuery | Boolean | Limit by starred status Default: false |
with_Query | Boolean | Limit by enabled issues feature Default: false |
with_Query | Boolean | Limit by enabled merge requests feature Default: false |
min_Query | Integer | Limit by minimum access level of authenticated user on projects Allowed values: 10,15,20,25,30,40,50 |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Transfer a project to a group
POST /api/v4/groups/{id}/projects/{project_id}
Transfers a specified project to another group. Administrators only.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
project_Path, | String | The ID or path of the project |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Restore a group
POST /api/v4/groups/{id}/restore
Restores a specified group that was previously scheduled for deletion. Can not restore groups outside of the retention period (30 days by default).
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | — |
400 | Bad Request | — |
404 | Not Found | — |
List all runners in a group
GET /api/v4/groups/{id}/runners
Lists all runners available in a specified group and any ancestor groups, including any allowed instance runners.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
typeQuery | String | The type of runners to return Allowed values: instance_,group_,project_ |
pausedQuery | Boolean | Whether to include only runners that are accepting or ignoring new jobs |
statusQuery | String | The status of runners to return Allowed values: active,paused,online,offline,never_,stale |
tag_Query | Array of strings | A list of runner tags Example: ["macos", |
version_Query | String | The version prefix of runners to return Pattern: (?<=^|\n(?!$))[\d+.Example: 15. |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Scope contains invalid value | — |
403 | Forbidden | — |
404 | Not Found | — |
Reset runner registration token
POST /api/v4/groups/{id}/runners/reset_registration_token
FE version
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | APIEntities |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Group Not Found | — |
Add a group to a group
POST /api/v4/groups/{id}/share
Adds a group to a group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Request body (application/json)
| Property | Type | Description |
|---|---|---|
expires_ | String (date) | Share expiration date |
group_Required | Integer | The group access level Allowed values: 10,15,20,25,30,40,50 |
group_Required | Integer | The ID of the group to share |
member_ | Integer | The ID of the Member Role to be assigned to the group |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Remove a group from a group
DELETE /api/v4/groups/{id}/share/{group_id}
Removes a group from a group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
group_Path, | Integer | The ID of the shared group |
Responses
| Code | Description | Schema |
|---|---|---|
204 | Resource deleted | — |
400 | Bad Request | — |
404 | Not Found | — |
Remove a shared project from a group
DELETE /api/v4/groups/{id}/shared_projects/{project_id}
Removes a shared project targeting this group. The group Owner can remove a shared project without access to the source project.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
project_Path, | Integer | The ID of the shared project |
Responses
| Code | Description | Schema |
|---|---|---|
204 | No Content | — |
400 | Bad request | — |
403 | Forbidden | — |
404 | Not found | — |
List all subgroups
GET /api/v4/groups/{id}/subgroups
Lists all subgroups for a specified group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
statisticsQuery | Boolean | Include project statistics Default: false |
archivedQuery | Boolean | Limit by archived status |
skip_Query | Array of integers | Array of group ids to exclude from list |
all_Query | Boolean | When true,false, |
visibilityQuery | String | Limit by visibility Allowed values: private,internal,public |
searchQuery | String | Search for a specific group |
ownedQuery | Boolean | Limit by owned by authenticated user Default: false |
order_Query | String | Order by name, Allowed values: name,path,id,similarityDefault: name |
sortQuery | String | Sort by asc (ascending) or desc (descending) Allowed values: asc,descDefault: asc |
min_Query | Integer | Minimum access level of authenticated user Allowed values: 10,15,20,25,30,40,50 |
top_Query | Boolean | Only include top- |
marked_Query | String (date) | Return groups that are marked for deletion on this date |
activeQuery | Boolean | Limit by groups that are not archived and not marked for deletion |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
with_Query | Boolean | Include custom attributes in the response Default: false |
custom_Query | Object | Filter with custom attributes |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Transfer a group
POST /api/v4/groups/{id}/transfer
Transfers a group to another parent group or transforms a subgroup into a top-level group. You must be an administrator or have the Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Request body (application/json)
| Property | Type | Description |
|---|---|---|
group_ | Integer | The ID of the target group to which the group needs to be transferred to. |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | — |
400 | Bad Request | — |
404 | Not Found | — |
List all transfer locations for a group
GET /api/v4/groups/{id}/transfer_locations
Lists all groups that a specified source group can be transferred to.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
searchQuery | String | Return list of namespaces matching the search criteria |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Transfer a group to an organization
POST /api/v4/groups/{id}/transfer_to_organization
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Request body (application/json)
| Property | Type | Description |
|---|---|---|
organization_Required | Integer | The ID of the organization to transfer the group to |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | APIEntities |
400 | Bad request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Group or Organization not found | — |
422 | Unprocessable entity | — |
Unarchive a group
POST /api/v4/groups/{id}/unarchive
Unarchives a specified group. You must be an administrator or have the Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String | The ID of a group |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
403 | Unauthenticated | — |
404 | Not Found | — |
List all uploads for a group
GET /api/v4/groups/{id}/uploads
Lists all uploads for a specified group sorted by created_at in descending order. You must have the Maintainer or Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String or integer | The ID or URL- |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
403 | Unauthenticated | — |
404 | Not found | — |
Upload a file to a group
POST /api/v4/groups/{id}/uploads
Uploads a file to the specified group. Returns a markdown-formatted link to the file.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String or integer | The ID or URL- |
Request body (multipart/form-data)
| Property | Type | Description |
|---|---|---|
fileRequired | String (binary) | The file to upload |
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | APIEntities |
400 | Bad request | — |
404 | Not found | — |
Workhorse authorize the file upload
POST /api/v4/groups/{id}/uploads/authorize
This feature was introduced in GitLab 19.0
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String or integer | The ID or URL- |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not found | — |
Download an uploaded file by secret and filename
GET /api/v4/groups/{id}/uploads/{secret}/{filename}
Downloads an uploaded file with a specified secret and filename. You must have the Guest, Planner, Reporter, Developer, Maintainer, or Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String or integer | The ID or URL- |
secretPath, | String | The 32- |
filenamePath, | String | The filename of a group upload |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | String (binary) (application/) |
400 | Bad Request | — |
403 | Unauthenticated | — |
404 | Not found | — |
Delete an uploaded file by secret and filename
DELETE /api/v4/groups/{id}/uploads/{secret}/{filename}
Deletes an uploaded file with a specified secret and filename. You must have the Maintainer or Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String or integer | The ID or URL- |
secretPath, | String | The 32- |
filenamePath, | String | The filename of a group upload |
Responses
| Code | Description | Schema |
|---|---|---|
204 | No Content | — |
400 | Bad request | — |
403 | Unauthenticated | — |
404 | Not found | — |
Download an uploaded file by ID
GET /api/v4/groups/{id}/uploads/{upload_id}
Downloads an uploaded file with a specified ID. You must have the Maintainer or Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String or integer | The ID or URL- |
upload_Path, | Integer | The ID of a group upload |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | String (binary) (application/) |
400 | Bad Request | — |
403 | Unauthenticated | — |
404 | Not found | — |
Delete an uploaded file by ID
DELETE /api/v4/groups/{id}/uploads/{upload_id}
Deletes an uploaded file with a specified ID. You must have the Maintainer or Owner role for the group.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | String or integer | The ID or URL- |
upload_Path, | Integer | The ID of a group upload |
Responses
| Code | Description | Schema |
|---|---|---|
204 | No Content | — |
400 | Bad request | — |
403 | Unauthenticated | — |
404 | Not found | — |
Get the users list of a group
GET /api/v4/groups/{id}/users
Parameters
| Name | Type | Description |
|---|---|---|
searchQuery | String | Return list of users matching the search criteria Example: user |
pageQuery | Integer | Current page number Default: 1Example: 1 |
per_Query | Integer | Number of items per page Default: 20Example: 20 |
idPath, | String or integer | The ID or URL- Example: 11 |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
403 | Unauthenticated | — |
404 | Not found | — |
List all groups available to invite to a project
GET /api/v4/projects/{id}/share_locations
Lists all groups that can be invited to a project.
Parameters
| Name | Type | Description |
|---|---|---|
idPath, | Integer | The id of the project |
searchQuery | String | Return list of groups matching the search criteria |
Responses
| Code | Description | Schema |
|---|---|---|
200 | OK | APIEntities |
400 | Bad Request | — |
404 | Not Found | — |
Reset the runner registration token for the instance
POST /api/v4/runners/reset_registration_token
Resets the runner registration token for the GitLab instance.
Responses
| Code | Description | Schema |
|---|---|---|
201 | Created | APIEntities |
400 | Bad Request | — |
403 | Forbidden | — |
Schemas
Objects returned by the operations above and objects nested in their request bodies.
APIEntitiesBasicProjectDetails
| Property | Type | Description |
|---|---|---|
avatar_ | String | Example:http: |
created_ | String (date- | Example:2020- |
custom_ | APIEntities | — |
default_ | String | Example:main |
description | String | Example:desc |
forks_ | Integer | Example:1 |
http_ | String | Example:https: |
id | Integer (int64) | Example:1 |
last_ | String (date- | Example:2013- |
license | APIEntities | — |
license_ | String | Example:https: |
name | String | Example:project1 |
name_ | String | Example:John Doe / |
namespace | APIEntities | — |
path | String | Example:project1 |
path_ | String | Example:namespace1/ |
readme_ | String | Example:https: |
repository_ | String | Example:default |
ssh_ | String | Example:git@gitlab. |
star_ | Integer | Example:1 |
tag_ | Array of strings | Example:["tag"] |
topics | Array of strings | Example:["topic"] |
visibility | String | Example:public |
web_ | String | Example:https: |
APIEntitiesCiResetTokenResult
| Property | Type | Description |
|---|---|---|
token | String | — |
token_ | String | — |
APIEntitiesCiRunner
| Property | Type | Description |
|---|---|---|
active | Boolean | Example:true |
created_ | String (date- | Example:2025- |
created_ | APIEntities | — |
description | String | Example:test- |
id | Integer (int64) | Example:8 |
ip_ | String | Example:127. |
is_ | Boolean | Example:true |
job_ | String | Allowed values:active,idleExample: idle |
name | String | Example:test |
online | Boolean | Example:true |
paused | Boolean | Example:false |
runner_ | String | Allowed values:instance_,group_,project_Example: instance_ |
status | String | Example:online |
APIEntitiesContainerExpirationPolicy
| Property | Type | Description |
|---|---|---|
cadence | String | — |
enabled | String | — |
keep_ | String | — |
name_ | String | — |
name_ | String | — |
next_ | String | — |
older_ | String | — |
APIEntitiesCustomAttribute
| Property | Type | Description |
|---|---|---|
key | String | Example:foo |
value | String | Example:bar |
APIEntitiesGroup
| Property | Type | Description |
|---|---|---|
archived | Boolean | — |
auto_ | String | — |
avatar_ | String | — |
created_ | String | — |
crm_ | Boolean | — |
custom_ | APIEntities | — |
default_ | String | — |
default_ | Integer | — |
default_ | String | — |
description | String | — |
emails_ | Boolean | — |
emails_ | Boolean | — |
full_ | String | — |
full_ | String | — |
id | Integer (int64) | — |
lfs_ | Boolean | — |
lock_ | Boolean | — |
lock_ | Boolean | — |
marked_ | String | — |
math_ | Boolean | — |
max_ | Integer | — |
mentions_ | String | — |
name | String | Example:Diaspora |
organization_ | Integer (int64) | — |
parent_ | String | — |
path | String | — |
project_ | String | — |
request_ | Boolean | — |
require_ | Boolean | — |
resource_ | Boolean | — |
root_ | APIEntities | — |
share_ | Boolean | — |
shared_ | String | — |
show_ | Boolean | — |
statistics | Object | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
subgroup_ | String | — |
two_ | Integer | — |
visibility | String | — |
web_ | String | Example:http: |
APIEntitiesGroupDetail
| Property | Type | Description |
|---|---|---|
archived | Boolean | — |
auto_ | String | — |
avatar_ | String | — |
created_ | String | — |
crm_ | Boolean | — |
custom_ | APIEntities | — |
default_ | String | — |
default_ | Integer | — |
default_ | String | — |
description | String | — |
emails_ | Boolean | — |
emails_ | Boolean | — |
enabled_ | String | Example:ssh |
full_ | String | — |
full_ | String | — |
id | Integer (int64) | — |
lfs_ | Boolean | — |
lock_ | Boolean | — |
lock_ | Boolean | — |
marked_ | String | — |
math_ | Boolean | — |
max_ | Integer | — |
mentions_ | String | — |
name | String | Example:Diaspora |
organization_ | Integer (int64) | — |
parent_ | String | — |
path | String | — |
prevent_ | Boolean | — |
project_ | String | — |
projects | APIEntities | — |
request_ | Boolean | — |
require_ | Boolean | — |
resource_ | Boolean | — |
root_ | APIEntities | — |
runners_ | String | Example:b8bc4a7a29eb76ea83cf |
share_ | Boolean | — |
shared_ | APIEntities | — |
shared_ | String | — |
shared_ | Array of objects | — |
show_ | Boolean | — |
statistics | Object | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
statistics. | String | — |
step_ | String | OAuth provider required for step- |
subgroup_ | String | — |
two_ | Integer | — |
visibility | String | — |
web_ | String | Example:http: |
APIEntitiesGroupUpload
| Property | Type | Description |
|---|---|---|
alt | String | The name of the file |
full_ | String | The full path to the file |
id | Integer (int64) | The ID of the file |
markdown | String | A markdown- |
url | String | The URL to access the file |
APIEntitiesIssuableReferences
| Property | Type | Description |
|---|---|---|
full | String | Example:test&6 |
relative | String | Example:&6 |
short | String | Example:&6 |
APIEntitiesIssuableTimeStats
| Property | Type | Description |
|---|---|---|
human_ | String | Example:3h 30m |
human_ | String | Example:1h |
time_ | Integer | Example:12600 |
total_ | Integer | Example:3600 |
APIEntitiesIssue
| Property | Type | Description |
|---|---|---|
_ | Object | — |
_ | String | Example:http: |
_ | String | Example:http: |
_ | String | Example:http: |
_ | String | Example:http: |
_ | String | Example:http: |
assignee | APIEntities | — |
assignees | APIEntities | — |
author | APIEntities | — |
closed_ | String (date- | Example:2022- |
closed_ | APIEntities | — |
confidential | Boolean | — |
created_ | String (date- | Example:2022- |
description | String | Example:Repellendus impedit et vel velit dignissimos. |
discussion_ | Boolean | — |
downvotes | Integer | — |
due_ | String (date) | Example:2022- |
has_ | Boolean | Example:true |
id | Integer (int64) | Example:84 |
iid | Integer | Example:14 |
imported | Boolean | Example:false |
imported_ | String | Example:github |
issue_ | String | Example:issue |
labels | Array of strings | Example:["bug"] |
merge_ | Integer | — |
milestone | APIEntities | — |
moved_ | Integer (int64) | Example:1 |
project_ | Integer (int64) | Example:4 |
references | APIEntities | — |
service_ | String | Example:user@example. |
severity | String | One of [“UNKNOWN”, |
start_ | String (date) | Example:2022- |
state | String | Example:closed |
subscribed | Boolean | Example:false |
task_ | APIEntities | — |
task_ | String | Example:2 of 4 tasks completed |
time_ | APIEntities | — |
title | String | Example:Impedit et ut et dolores vero provident ullam est |
type | String | One of [“ISSUE”, Example: ISSUE |
updated_ | String (date- | Example:2022- |
upvotes | Integer | — |
user_ | Integer | — |
web_ | String | Example:http: |
APIEntitiesLicenseBasic
| Property | Type | Description |
|---|---|---|
html_ | String | Example:http: |
key | String | Example:gpl- |
name | String | Example:GNU General Public License v3. |
nickname | String | Example:GNU GPLv3 |
source_ | String | — |
APIEntitiesMarkdownUploadAdmin
| Property | Type | Description |
|---|---|---|
created_ | String (date- | Example:2012- |
filename | String | Example:image. |
id | Integer (int64) | Example:1 |
size | Integer | Example:1024 |
uploaded_ | APIEntities | — |
APIEntitiesMilestone
| Property | Type | Description |
|---|---|---|
created_ | String | — |
description | String | — |
due_ | String | — |
expired | Boolean | — |
group_ | String | — |
id | Integer (int64) | — |
iid | Integer (int64) | — |
project_ | Integer (int64) | — |
start_ | String | — |
state | String | — |
title | String | — |
updated_ | String | — |
web_ | String | — |
APIEntitiesNamespaceBasic
| Property | Type | Description |
|---|---|---|
avatar_ | String | Example:https: |
full_ | String | Example:group/ |
id | Integer (int64) | Example:2 |
kind | String | Example:project |
name | String | Example:project |
parent_ | Integer (int64) | Example:1 |
path | String | Example:my_ |
web_ | String | Example:https: |
APIEntitiesNamespaceRootStorageStatistics
| Property | Type | Description |
|---|---|---|
build_ | Integer | CI artifacts size in bytes |
container_ | Integer | container registry size in bytes |
container_ | Boolean | Indicates whether the deduplicated container registry size for the namespace is an estimated value or not |
dependency_ | Integer | Dependency Proxy sizes in bytes |
lfs_ | Integer | LFS objects size in bytes |
packages_ | Integer | Packages size in bytes |
pipeline_ | Integer | CI pipeline artifacts size in bytes |
repository_ | Integer | Git repository size in bytes |
snippets_ | Integer | Snippets size in bytes |
storage_ | Integer | Total storage in bytes |
uploads_ | Integer | Uploads size in bytes |
wiki_ | Integer | Wiki size in bytes |
APIEntitiesProject
| Property | Type | Description |
|---|---|---|
_ | Object | — |
_ | String | Example:https: |
_ | String | Example:https: |
_ | String | Example:https: |
_ | String | Example:https: |
_ | String | Example:https: |
_ | String | Example:https: |
_ | String | Example:https: |
_ | String | Example:https: |
allow_ | Boolean | — |
allow_ | Boolean | — |
analytics_ | String | Example:enabled |
archived | Boolean | — |
auto_ | String | Example:enabled |
auto_ | String | Example:continuous |
auto_ | Boolean | — |
autoclose_ | Boolean | — |
automatic_ | Boolean | — |
avatar_ | String | Example:http: |
build_ | String | Example:fetch |
build_ | Integer | Example:3600 |
builds_ | String | Example:enabled |
can_ | Boolean | — |
ci_ | Boolean | — |
ci_ | String | Example: |
ci_ | Integer | Example:20 |
ci_ | Integer | Example:86400 |
ci_ | Boolean | — |
ci_ | Boolean | — |
ci_ | Boolean | — |
ci_ | Array of strings | — |
ci_ | Boolean | — |
ci_ | String | — |
ci_ | Boolean | — |
ci_ | Boolean | — |
ci_ | Boolean | — |
container_ | APIEntities | — |
container_ | String | Example:enabled |
container_ | Boolean | — |
container_ | String | Example:registry. |
created_ | String (date- | Example:2020- |
creator_ | Integer (int64) | Example:1 |
custom_ | APIEntities | — |
default_ | String | Example:main |
description | String | Example:desc |
description_ | String | — |
emails_ | Boolean | — |
emails_ | Boolean | — |
empty_ | Boolean | — |
enforce_ | Boolean | — |
environments_ | String | Example:enabled |
fe_ | Object | — |
feature_ | String | Example:enabled |
forked_ | APIEntities | — |
forking_ | String | Example:enabled |
forks_ | Integer | Example:1 |
group_ | Boolean | — |
http_ | String | Example:https: |
id | Integer (int64) | Example:1 |
import_ | String | Example:Import error |
import_ | String | Example:none |
import_ | String | Example:git |
import_ | String | Example:https: |
infrastructure_ | String | Example:enabled |
issue_ | String | Example:%(title) |
issues_ | String | Example:enabled |
issues_ | Boolean | — |
jobs_ | Boolean | — |
keep_ | Boolean | — |
last_ | String (date- | Example:2013- |
lfs_ | Boolean | — |
license | APIEntities | — |
license_ | String | Example:https: |
marked_ | String (date- | Example:2020- |
marked_ | String (date- | Example:2020- |
max_ | Integer | — |
max_ | Integer | — |
merge_ | String | Example:%(title) |
merge_ | String | Example:merge |
merge_ | Boolean | — |
merge_ | String | — |
merge_ | String | — |
merge_ | String | Example:enabled |
merge_ | Boolean | — |
merge_ | Boolean | — |
merge_ | Boolean | — |
merge_ | Boolean | — |
model_ | String | Example:enabled |
model_ | String | Example:enabled |
monitor_ | String | Example:enabled |
mr_ | Boolean | — |
mr_ | String | Example:%(source_ |
name | String | Example:project1 |
name_ | String | Example:John Doe / |
namespace | APIEntities | — |
only_ | Boolean | — |
only_ | Boolean | — |
open_ | Integer | Example:1 |
owner | APIEntities | — |
package_ | String | Example:enabled |
packages_ | Boolean | — |
pages_ | String | Example:enabled |
path | String | Example:project1 |
path_ | String | Example:namespace1/ |
printing_ | Boolean | — |
protect_ | Boolean | — |
public_ | Boolean | — |
readme_ | String | Example:https: |
releases_ | String | Example:enabled |
remove_ | Boolean | — |
repository_ | String | Example:enabled |
repository_ | String | Example:sha1 |
repository_ | String | Example:default |
request_ | Boolean | — |
resolve_ | Boolean | — |
resource_ | String | Example:unordered |
restrict_ | Boolean | — |
runner_ | Integer | Example:3600 |
runners_ | String | Example:b8547b1dc37721d05889 |
security_ | String | Example:enabled |
service_ | String | Example:address@example. |
service_ | Boolean | — |
shared_ | Boolean | — |
shared_ | Array of objects | — |
show_ | Boolean | — |
snippets_ | String | Example:enabled |
snippets_ | Boolean | — |
squash_ | String | Example:%(source_ |
squash_ | String | Example:default_ |
ssh_ | String | Example:git@gitlab. |
star_ | Integer | Example:1 |
statistics | APIEntities | — |
suggestion_ | String | Example:Suggestion message |
tag_ | Array of strings | Example:["tag"] |
topics | Array of strings | Example:["topic"] |
updated_ | String (date- | Example:2020- |
visibility | String | Example:public |
warn_ | Boolean | — |
web_ | String | Example:https: |
wiki_ | String | Example:enabled |
wiki_ | Boolean | — |
APIEntitiesProjectStatistics
| Property | Type | Description |
|---|---|---|
commit_ | Integer | Example:37 |
container_ | Integer | Example:0 |
job_ | Integer | Example:0 |
lfs_ | Integer | Example:0 |
packages_ | Integer | Example:0 |
pipeline_ | Integer | Example:0 |
repository_ | Integer | Example:1. |
snippets_ | Integer | Example:0 |
storage_ | Integer | Example:1. |
uploads_ | Integer | Example:0 |
wiki_ | Integer | Example:0 |
APIEntitiesTaskCompletionStatus
| Property | Type | Description |
|---|---|---|
completed_ | Integer | Example:3 |
count | Integer | Example:5 |
APIEntitiesUserBasic
| Property | Type | Description |
|---|---|---|
avatar_ | String | Example:/ |
avatar_ | String | Example:https: |
custom_ | Array of APIEntities | — |
id | Integer (int64) | Example:1 |
locked | Boolean | — |
name | String | Example:Administrator |
public_ | String | Example:john@example. |
state | String | Example:active |
username | String | Example:admin |
web_ | String | Example:https: |
APIEntitiesUserSafe
| Property | Type | Description |
|---|---|---|
id | Integer (int64) | Example:1 |
name | String | Example:Administrator |
public_ | String | Example:john@example. |
username | String | Example:admin |