# Get membership type group by ID

`GET /api/configuration/membership-type-groups/{id}`

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

HTML version: [Get membership type group by ID](https://support.gladstonesoftware.cloud/reference/configuration/get-membership-type-group-by-id)

## Overview

Retrieves a single membership type group by its id. A membership type group is a label an operator
uses to bundle related membership types together — for example a group `MEMBER` covering the
`ADULT`, `CHILD` and `SENIOR` membership types — so that pricing, restrictions and audience rules
can be expressed against the group rather than against each type individually.

The record itself is small: an id, a display description and a free-text comment. **It does not
contain the membership types in the group.** If you need those, call
[Get membership types by membership type groups](get-membership-types-by-membership-type-groups.md)
with the same id — that is a separate call, and forgetting it is the usual reason integrators
believe this endpoint is returning incomplete data.

Use this when you already hold a group id — from
[Get all membership type groups](get-all-membership-type-groups.md), or
stored against your own records — and want its current description. If you are populating a picker
from scratch, list them all instead; this endpoint returns the same data as the list
call, so it saves nothing.

Group ids are operator-defined strings, not generated identifiers, and the lookup compares them
exactly. See the `id` path parameter for what that means in practice.

## Endpoint

`GET {base_url}/api/configuration/membership-type-groups/{id}`

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

## Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | Yes | The group's key, up to 15 characters. Take it from the `id` of an entry returned by [Get all membership type groups](get-all-membership-type-groups.md). It is an operator-chosen code such as `MEMBER`, not a generated identifier, so do not assume a format. The match is exact, so it is **case-sensitive and whitespace-sensitive** — `member` will not find the group stored as `MEMBER`, and returns `404`. |

## Sample request

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

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | The group's key, echoed back exactly as stored — use this rather than the value you sent, since your value only matched if it was already identical. Maximum 15 characters. This is the value to pass as `groupIds` to [Get membership types by membership type groups](get-membership-types-by-membership-type-groups.md). |
| `description` | string | The label shown to staff and members wherever the group is listed. Maximum 25 characters — short enough that it is a label, not a sentence. The create and update endpoints require it, but it can be empty, so groups created before those endpoints existed can come back with `description: null`. Do not rely on it being present. |
| `comments` | string | A free-text note held against the group for display in web-facing contexts, maximum 255 characters. It is optional at creation and is `null` when never set, which is the common case. Only the primary-language comment is returned; the second-language variant stored alongside it is not exposed by this endpoint, nor is the group's second-language description. |

## Sample response

```json title="200 OK"
{
  "id": "MEMBER",
  "description": "Standard memberships",
  "comments": null
}
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `404` | Not found | No group has that exact `id`. The body is a plain-text string, not JSON: `Membership Type Group with ID {id} was not found.` The commonest cause is case: the comparison is exact, so a lower-cased or space-padded id fails here rather than matching. |
| `500` | Internal server error | Any unexpected server-side failure while reading the groups. The body is empty — there is no error payload to parse, so treat it as retryable and log the request id from your side. |
