> ## Documentation Index
> Fetch the complete documentation index at: https://docs.elivaas.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Promotion Groups

## Overview

Returns all active promotions for a property, grouped by promotion type. This is a convenience endpoint for building categorized promotion displays (e.g., separate sections for coupons, early bird deals, and free night offers).

***

## Request

```
GET /v1/properties/{propertyId}/promotion-groups
```

### Headers

| Header       | Type   | Required | Description                           |
| ------------ | ------ | -------- | ------------------------------------- |
| `Api-Key`    | string | Yes      | Your API key for authentication.      |
| `Channel-Id` | string | Yes      | Your distribution channel identifier. |

### Path Parameters

| Parameter    | Type   | Required | Description                        |
| ------------ | ------ | -------- | ---------------------------------- |
| `propertyId` | string | Yes      | Unique identifier of the property. |

### Example Request

```bash theme={null}
curl -X GET "https://sandbox.elivaas.com/v1/properties/prop_456/promotion-groups" \
  -H "Api-Key: YOUR_API_KEY" \
  -H "Channel-Id: YOUR_CHANNEL_ID"
```

***

## Response — `200 OK`

A JSON object where each key is a promotion type string and each value is an array of [Promotion](/api-reference/promotions/promotions-retrieve#promotion-object) objects of that type.

### Response Structure

| Key            | Type               | Description                          |
| -------------- | ------------------ | ------------------------------------ |
| `COUPON`       | array of Promotion | Code-based discount promotions.      |
| `EARLY_BOOKER` | array of Promotion | Advance booking discount promotions. |
| `LAST_MINUTE`  | array of Promotion | Last-minute booking promotions.      |
| `FREE_NIGHT`   | array of Promotion | Free night promotions.               |
| `BASIC`        | array of Promotion | Standard promotions.                 |
| `UNKNOWN`      | array of Promotion | Promotions without a defined type.   |

Only keys with at least one promotion are present in the response. Each promotion object follows the same schema documented in [Promotions - Retrieve](/api-reference/promotions/promotions-retrieve#promotion-object).

### Example Response

```json theme={null}
{
  "COUPON": [
    {
      "id": "promo_001",
      "code": "SUMMER20",
      "title": "Summer Discount",
      "description": "Get 20% off on stays during summer season",
      "discountMethod": "PERCENTAGE",
      "discountPercentage": 20.0,
      "maximumDiscountAllowed": 5000,
      "status": "ACTIVE",
      "type": "COUPON",
      "nonRefundable": false,
      "weekendOnly": false,
      "clubbed": false,
      "rank": 1
    }
  ],
  "EARLY_BOOKER": [
    {
      "id": "promo_002",
      "code": "EARLY15",
      "title": "Early Bird Offer",
      "description": "Book 30 days in advance and get 15% off",
      "discountMethod": "PERCENTAGE",
      "discountPercentage": 15.0,
      "maximumDiscountAllowed": 3000,
      "status": "ACTIVE",
      "type": "EARLY_BOOKER",
      "earlyBookerValueInDays": 30,
      "clubbed": true,
      "rank": 2
    }
  ],
  "FREE_NIGHT": [
    {
      "id": "promo_003",
      "code": "STAY3PAY2",
      "title": "Stay 3, Pay 2",
      "description": "Get one night free when you book 3 nights",
      "minimumNights": 3,
      "freeNights": 1,
      "status": "ACTIVE",
      "type": "FREE_NIGHT",
      "rank": 1
    }
  ]
}
```

***

## Error Handling

| Status | Meaning               | Description                                                        |
| ------ | --------------------- | ------------------------------------------------------------------ |
| `200`  | Success               | Grouped promotions returned. Empty object `{}` if none are active. |
| `401`  | Unauthorized          | Missing or invalid `Api-Key` or `Channel-Id`.                      |
| `404`  | Not Found             | Property ID does not exist.                                        |
| `500`  | Internal Server Error | Unexpected error.                                                  |
