# Retrieves all available system configuration groups

`GET /api/configuration/system/groups`

- **Success:** `200 OK`
- **Products:** Operator (`FOH`), Consumer (`CONSUMER`) (any one of these products, not all)
- **Features:** Online Bookings (`ONLINEBOOK`), Online Joining (`ONLINEJOIN`), Front of House Generic Access (`FOHGENERIC`) (any one of these features, not all)

HTML version: [Retrieves all available system configuration groups](https://support.gladstonesoftware.cloud/reference/configuration/retrieves-all-available-system-configuration-groups)

## Overview

Lists the groups that system configuration settings are organised into — the categories a back
office user would see as tabs or sections. It returns the groups themselves, not the settings inside
them.

This is the first step in discovering configuration keys, since no endpoint lists keys directly:
take an `id` from here, pass it to
[Retrieve system configuration by group id](retrieves-system-configuration-settings-grouped-by-configuration-group-ids.md)
to get that group's settings and their `configKey` values, then read individual values with
[Retrieve a system configuration value](retrieves-a-specific-system-configuration-value-by-key-and-optional-site-id.md).

**The list is filtered by what your token can reach.** A group is only returned when it is empty or
contains at least one setting that either needs no module or needs a module your token carries. Two
integrations against the same tenant can therefore see different groups, and a group missing from
your list is more likely a licensing matter than a configuration error.

The whole set is returned in one response: no paging, no filtering parameters.

## Endpoint

`GET {base_url}/api/configuration/system/groups`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Sample request

```bash title="cURL"
curl -X GET '{base_url}/api/configuration/system/groups' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `[].id` | integer (int32) | The group's identifier, and the value to pass as `groupIds` to [Retrieve system configuration by group id](retrieves-system-configuration-settings-grouped-by-configuration-group-ids.md). That endpoint accepts several ids at once, so collect the ids you need from this list first. |
| `[].configurationGroupKey` | string | The group's stable string key, as opposed to its numeric `id`. Use it to recognise a group across environments where the numeric ids may differ — but note settings are still fetched by `id`, not by this key. |
| `[].description` | string | The group's human-readable label, suitable for display in a picker. Configured per tenant, so do not match on it in code. |

## Sample response

```json title="200 OK"
[
  {
    "id": 12345,
    "configurationGroupKey": "string",
    "description": "string"
  }
]
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `500` | Internal server error | An unexpected server-side failure while reading the groups, with an empty body. This endpoint returns `500` for any outcome other than success and never returns `404` — a tenant with no visible groups gets `200` and an empty array. |
