Namespaces API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

Use this API to interact with namespaces, a special resource category used to organize users and groups. For more information, see namespaces.

This API uses Pagination to filter results.

List all namespaces

Lists all namespaces available to the current user. If the user is an administrator, this endpoint returns all namespaces in the instance.

GET /namespaces
Attribute Type Required Description
search string no Returns only namespaces that contain the specified value in their name or path.
owned_only boolean no If true, only returns namespaces by the current user.
top_level_only boolean no If true, only returns top-level namespaces.
full_path_search boolean no If true, the search parameter is matched against the full path of the namespaces.

If successful, returns 200 OK and the following response attributes:

Attribute Type Description
id integer ID of the namespace.
name string Name of the namespace.
path string Path segment of the namespace.
kind string Namespace type: user or group.
full_path string Full path of the namespace, including parent paths for subgroups.
parent_id integer ID of the parent namespace. null for top-level namespaces.
avatar_url string URL of the namespace avatar. null if not set.
web_url string URL of the namespace on GitLab.
billable_members_count integer Number of billable members in the namespace.
plan string Subscription plan of the namespace (for example, free, ultimate).
end_date date End date of the current subscription. null if not applicable.
trial_ends_on date Date the trial ends. null if not on a trial.
trial boolean Whether the namespace is on a trial plan.
root_repository_size integer Total size of all repositories in the namespace, in bytes.
projects_count integer Number of projects in the namespace.
members_count_with_descendants integer Total number of members including those in subgroups. Only returned for group namespaces.
max_seats_used integer Maximum number of seats used during the current subscription period. Only returned for Group owners or on GitLab.com.
max_seats_used_changed_at datetime Timestamp of when max_seats_used last changed. Only returned for Group owners or on GitLab.com.
seats_in_use integer Number of seats currently in use. Only returned for Group owners or on GitLab.com.
ci_minutes_usage object Compute minutes usage breakdown. On GitLab.com, reflects the compute minutes quota system applied to all namespaces. On GitLab Self-Managed and GitLab Dedicated, returned only when compute quotas are configured on a namespace. Only returned for top-level groups when the user has the Owner role or is an administrator.
ci_minutes_usage.total_minutes_used integer Total compute minutes used in the current billing period.
ci_minutes_usage.monthly_minutes_used integer Compute minutes used from the monthly quota.
ci_minutes_usage.purchased_minutes_used integer Compute minutes used from additional purchased allocations.
shared_runners_minutes_limit integer Monthly compute minutes quota allocated to the namespace. On GitLab.com only, for instance administrators.
extra_shared_runners_minutes_limit integer Additional compute minutes added on top of the monthly quota. Reflects purchased minute packs. On GitLab.com only, for instance administrators.

Example request:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/namespaces"

Example response:

[
  {
    "id": 1,
    "name": "user1",
    "path": "user1",
    "kind": "user",
    "full_path": "user1",
    "parent_id": null,
    "avatar_url": "https://secure.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/user1",
    "billable_members_count": 1,
    "plan": "ultimate",
    "end_date": null,
    "trial_ends_on": null,
    "trial": false,
    "root_repository_size": 100,
    "projects_count": 3
  },
  {
    "id": 2,
    "name": "group1",
    "path": "group1",
    "kind": "group",
    "full_path": "group1",
    "parent_id": null,
    "avatar_url": null,
    "web_url": "https://gitlab.example.com/groups/group1",
    "members_count_with_descendants": 2,
    "billable_members_count": 2,
    "plan": "ultimate",
    "end_date": null,
    "trial_ends_on": null,
    "trial": false,
    "root_repository_size": 100,
    "projects_count": 3
  },
  {
    "id": 3,
    "name": "bar",
    "path": "bar",
    "kind": "group",
    "full_path": "foo/bar",
    "parent_id": 9,
    "avatar_url": null,
    "web_url": "https://gitlab.example.com/groups/foo/bar",
    "members_count_with_descendants": 5,
    "billable_members_count": 5,
    "end_date": null,
    "trial_ends_on": null,
    "trial": false,
    "root_repository_size": 100,
    "projects_count": 3
  }
]

Additional attributes might be returned for Group owners or on GitLab.com:

[
  {
    ...
    "max_seats_used": 3,
    "max_seats_used_changed_at":"2025-05-15T12:00:02.000Z",
    "seats_in_use": 2,
    "projects_count": 1,
    "root_repository_size":0,
    "members_count_with_descendants":26,
    "plan": "free",
    ...
  }
]

Retrieve namespace details

Retrieves details for a specified namespace.

GET /namespaces/:id
Attribute Type Required Description
id integer or string yes ID or URL-encoded path of the namespace.

If successful, returns 200 OK and the following response attributes:

Attribute Type Description
id integer ID of the namespace.
name string Name of the namespace.
path string Path segment of the namespace.
kind string Namespace type: user or group.
full_path string Full path of the namespace, including parent paths for subgroups.
parent_id integer ID of the parent namespace. null for top-level namespaces.
avatar_url string URL of the namespace avatar. null if not set.
web_url string URL of the namespace on GitLab.
billable_members_count integer Number of billable members in the namespace.
plan string Subscription plan of the namespace (for example, free, ultimate).
end_date date End date of the current subscription. null if not applicable.
trial_ends_on date Date the trial ends. null if not on a trial.
trial boolean Whether the namespace is on a trial plan.
root_repository_size integer Total size of all repositories in the namespace, in bytes.
projects_count integer Number of projects in the namespace.
members_count_with_descendants integer Total number of members including those in subgroups. Only returned for group namespaces.
max_seats_used integer Maximum number of seats used during the current subscription period. Only returned for Group owners or on GitLab.com.
max_seats_used_changed_at datetime Timestamp of when max_seats_used last changed. Only returned for Group owners or on GitLab.com.
seats_in_use integer Number of seats currently in use. Only returned for Group owners or on GitLab.com.
ci_minutes_usage object Compute minutes usage breakdown. On GitLab.com, reflects the compute minutes quota system applied to all namespaces. On GitLab Self-Managed and GitLab Dedicated, returned only when compute quotas are configured on a namespace. Only returned for top-level groups when the user has the Owner role or is an administrator.
ci_minutes_usage.total_minutes_used integer Total compute minutes used in the current billing period.
ci_minutes_usage.monthly_minutes_used integer Compute minutes used from the monthly quota.
ci_minutes_usage.purchased_minutes_used integer Compute minutes used from additional purchased allocations.
shared_runners_minutes_limit integer Monthly compute minutes quota allocated to the namespace. On GitLab.com only, for instance administrators.
extra_shared_runners_minutes_limit integer Additional compute minutes added on top of the monthly quota. Reflects purchased minute packs. On GitLab.com only, for instance administrators.

Example request:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/namespaces/2"

Example response:

{
  "id": 2,
  "name": "group1",
  "path": "group1",
  "kind": "group",
  "full_path": "group1",
  "parent_id": null,
  "avatar_url": null,
  "web_url": "https://gitlab.example.com/groups/group1",
  "members_count_with_descendants": 2,
  "billable_members_count": 2,
  "max_seats_used": 0,
  "seats_in_use": 0,
  "plan": "default",
  "end_date": null,
  "trial_ends_on": null,
  "trial": false,
  "root_repository_size": 100,
  "projects_count": 3,
  "ci_minutes_usage": {
    "total_minutes_used": 450,
    "monthly_minutes_used": 400,
    "purchased_minutes_used": 50
  }
}

Example request:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
    --url "https://gitlab.example.com/api/v4/namespaces/group1"

Example response:

{
  "id": 2,
  "name": "group1",
  "path": "group1",
  "kind": "group",
  "full_path": "group1",
  "parent_id": null,
  "avatar_url": null,
  "web_url": "https://gitlab.example.com/groups/group1",
  "members_count_with_descendants": 2,
  "billable_members_count": 2,
  "max_seats_used": 0,
  "seats_in_use": 0,
  "plan": "default",
  "end_date": null,
  "trial_ends_on": null,
  "trial": false,
  "root_repository_size": 100,
  "ci_minutes_usage": {
    "total_minutes_used": 450,
    "monthly_minutes_used": 400,
    "purchased_minutes_used": 50
  }
}

Verify namespace availability

Verifies if a specified namespace exists. If the namespace exists, the endpoint suggests an alternate name.

GET /namespaces/:namespace/exists
Attribute Type Required Description
namespace string yes Path of the namespace.
parent_id integer no ID of the parent namespace. If unspecified, only returns top-level namespaces.

Example request:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/namespaces/my-group/exists?parent_id=1"

Example response:

{
    "exists": true,
    "suggests": [
        "my-group1"
    ]
}