# Get Perk Groups
> Source: /api-reference/members/loyalty/get-perk-groups
> Get paginated list of perk groups
> Endpoint: GET /members/me/loyalty/perk-groups

## Overview [#overview]

Returns a paginated list of available perk groups. Perk groups organize related perks and benefits within the loyalty program.

## Authentication [#authentication]

Requires a valid Clerk JWT token in the Authorization header.

## Query Parameters [#query-parameters]

<ParamField query="limit" type="number">
  Maximum number of perk groups to return (default: 20, max: 100)
</ParamField>

<ParamField query="offset" type="number">
  Number of perk groups to skip for pagination (default: 0)
</ParamField>

<ParamField query="enabled" type="boolean">
  Filter by enabled status - only return active perk groups
</ParamField>

<ParamField query="stayRequired" type="boolean">
  Filter by stay requirement - only return perk groups that require an active reservation
</ParamField>

<RequestExample>

```bash cURL
curl -X GET "http://localhost:3000/v1/members/me/loyalty/perk-groups?enabled=true&limit=10" \
  -H "Authorization: Bearer YOUR_CLERK_JWT"
```

```typescript TypeScript
const response = await fetch('http://localhost:3000/v1/members/me/loyalty/perk-groups?enabled=true&limit=10', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_CLERK_JWT'
  }
});

const perkGroups = await response.json();
```

</RequestExample>

## Response [#response]

<ResponseField name="items" type="array" required>
  List of perk groups
  
  <Expandable title="array items">
    <ResponseField name="id" type="number" required>
      Unique perk group ID
    </ResponseField>
    
    <ResponseField name="documentId" type="string" required>
      Document identifier for the perk group
    </ResponseField>
    
    <ResponseField name="name" type="string" required>
      Display name of the perk group
    </ResponseField>
    
    <ResponseField name="description" type="string">
      Description of the perk group and its benefits
    </ResponseField>
    
    <ResponseField name="enabled" type="boolean" required>
      Whether this perk group is currently active
    </ResponseField>
    
    <ResponseField name="stayRequired" type="boolean" required>
      Whether perks in this group require an active reservation
    </ResponseField>
    
    <ResponseField name="createdAt" type="string" required>
      ISO 8601 timestamp when perk group was created
    </ResponseField>
    
    <ResponseField name="updatedAt" type="string" required>
      ISO 8601 timestamp when perk group was last updated
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="total" type="number" required>
  Total number of perk groups matching filters
</ResponseField>

<ResponseField name="limit" type="number" required>
  Current pagination limit
</ResponseField>

<ResponseField name="offset" type="number" required>
  Current pagination offset
</ResponseField>

<ResponseExample>

```json 200 Response
{
  "items": [
    {
      "id": 1,
      "documentId": "pg_suite_benefits",
      "name": "Suite Benefits", 
      "description": "Exclusive perks and upgrades for suite accommodations",
      "enabled": true,
      "stayRequired": true,
      "createdAt": "2024-01-15T10:00:00Z",
      "updatedAt": "2024-03-20T14:30:00Z"
    },
    {
      "id": 2, 
      "documentId": "pg_dining_credits",
      "name": "Dining Credits",
      "description": "Food and beverage credits at partner properties",
      "enabled": true,
      "stayRequired": false,
      "createdAt": "2024-01-15T10:00:00Z", 
      "updatedAt": "2024-02-10T09:15:00Z"
    }
  ],
  "total": 8,
  "limit": 10,
  "offset": 0
}
```

</ResponseExample>

## Related Endpoints [#related-endpoints]

- [Get Perk Group](/api-reference/members/loyalty/get-perk-group) - Get details of a specific perk group
- [Get Perks for Group](/api-reference/members/loyalty/get-perks-for-group) - Get all perks within a perk group
