# Get all membership type groups

`GET /api/configuration/membership-type-groups`

- **Success:** `200 OK`
- **Products:** Operator (`FOH`)
- **Features:** Front of House Generic Access (`FOHGENERIC`)

HTML version: [Get all membership type groups](https://support.gladstonesoftware.cloud/reference/configuration/get-all-membership-type-groups)

## Overview

Lists the membership type groups the operator has configured. A membership type group is a folder for membership types: the operator defines individual membership types (adult, junior, concession) and then bundles related ones under a group so they can be presented, priced or targeted together.

**This endpoint returns the groups only — never their contents.** You get an id, a name and a comment; nothing here tells you which membership types belong to a group. To expand a group into its membership types, call `GET /api/configuration/membership-types/groups?groupIds={id}` and read the membership type ids from that response. This trips people up: passing a group id where a membership type id is expected does not fail loudly, it simply matches nothing. If you are building an audience or segment selector, expand the group client-side before you send the ids on.

Groups are entirely operator-defined, with no starter set. Ids are chosen by whoever configured the site, so they are tenant-specific and must never be hard-coded — resolve them from this call at run time.

Results come back in no guaranteed order, and there is no filter and no paging, and there is no active/inactive flag: every group is returned, including empty ones that contain no membership types at all. When none exist you get `200` with an empty array `[]`. A newly created group may not appear immediately.

## Endpoint

`GET {base_url}/api/configuration/membership-type-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/membership-type-groups' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `[].id` | string | The group's identifier, and the value you pass to the membership-types-by-group lookup to expand it. Maximum 15 characters, unique within the tenant. **Operator-defined, so it is tenant-specific** — an id such as `MEMBER` may be absent or mean something different in another operator's tenant. It is not interchangeable with a membership type id: sending a group id to an endpoint that expects membership types matches nothing rather than erroring. |
| `[].description` | string | The group's display name. **Maximum 25 characters** — short enough that operators routinely abbreviate, so expect terse labels. Nullable, so a group can come back with a `null` description while still having a valid `id`; fall back to the `id` rather than rendering a blank entry. Free text the operator can edit; never match on it. |
| `[].comments` | string | A longer free-text note for the group, taken from the group's web comment field and intended for display alongside it in a consumer-facing journey. Maximum 255 characters. Optional — `null` or empty when the operator has not set one, which is common. A separate second-language version of this text can be configured, but it is **not** returned here, so a bilingual interface cannot be built from this response alone. |

## Sample response

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

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `500` | Internal server error | Any unexpected server-side failure while reading the groups. The response is a bare status code with **no body**. Retry with backoff. |
