---
title: "Read the change feed"
url: "https://portal.konghotels.cloud/apis/kong-hotels-partner-api-1/versions/23cc133a-2f87-4d55-9490-0b8b2bb7dd78/operations/listChanges"
---

> Full API specification: https://portal.konghotels.cloud/apis/kong-hotels-partner-api-1/versions/23cc133a-2f87-4d55-9490-0b8b2bb7dd78.md

# Read the change feed

`GET` `/changes`

Operation ID: `listChanges`

An append-only, ordered feed of events. Public events (rates, availability, content, promotions, reviews) are visible to everyone; reservation and group-request events only to the partner that owns them. Start with `since=0`, process the events in order, store `meta.next_cursor`, and pass it as `since` next time. Keep calling straight away while `meta.has_more` is `true`.

## Query parameters

- `since` (integer, optional) - The sequence number to read after.
- `types` (string, optional) - Comma-separated event types to include.
- `property` (string, optional)
- `limit` (integer, optional)

## Responses

- `200` - Events after the cursor.

## OpenAPI definition

```yaml
openapi: 3.1.0
info:
  title: Kong Hotels Partner API
  version: 1.0.0
servers:
  - url: https://api.konghotels.cloud
    description: Kong Gateway
paths:
  /changes:
    get:
      tags:
        - Change Feed
      operationId: listChanges
      summary: Read the change feed
      description: >
        An append-only, ordered feed of events. Public events (rates,
        availability, content, promotions,

        reviews) are visible to everyone; reservation and group-request events
        only to the partner that

        owns them.


        Start with `since=0`, process the events in order, store
        `meta.next_cursor`, and pass it as `since`

        next time. Keep calling straight away while `meta.has_more` is `true`.
      parameters:
        - name: since
          in: query
          description: The sequence number to read after.
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: types
          in: query
          description: Comma-separated event types to include.
          schema:
            type: string
            examples:
              - availability.changed,rates.changed
        - name: property
          in: query
          schema:
            type: string
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
      responses:
        "200":
          description: Events after the cursor.
          headers:
            X-Request-ID:
              $ref: "#/components/headers/RequestId"
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/ChangeEvent"
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type: integer
                      has_more:
                        type: boolean
security:
  - KongKeyAuth: []
  - KongConsumer: []
components:
  headers:
    RequestId:
      description: Correlation ID for support.
      schema:
        type: string
    RateLimitLimit:
      description: Requests allowed per minute in this bucket.
      schema:
        type: integer
    RateLimitRemaining:
      description: Requests left in the current window.
      schema:
        type: integer
  schemas:
    ChangeEvent:
      type: object
      properties:
        id:
          type: string
          examples:
            - evt_01jbx5a1b2c3d4e5f6g7h8j9k0
        sequence:
          type: integer
          description: Monotonic position in the feed; use as the `since` cursor.
        type:
          $ref: "#/components/schemas/EventType"
        occurred_at:
          type: string
          format: date-time
        property_code:
          type:
            - string
            - "null"
        subject:
          type: object
          properties:
            type:
              type: string
              examples:
                - reservation
                - room_type
                - property
                - review
                - group_request
            id:
              type: string
              examples:
                - KH7Q4M2X9
                - KTNYC:TWRK
        data:
          type: object
          additionalProperties: true
          description: >
            Payload by event type:


            | Type | `data` fields |

            |---|---|

            | `availability.changed` | `room_type_code`, `start_date`,
            `end_date` (inclusive stay nights). Refetch availability for that
            range. |

            | `rates.changed` | `room_type_code`, `start_date`, `end_date`,
            `rate_plan_codes`, `lowest_rate` (current lowest nightly base rate
            in the range), `currency` |

            | `property.updated` | `changed_sections` (any of `description`,
            `amenities`, `photos`, `policies`), `summary` |

            | `promotion.published` | `code`, `name`, `bookable_until`,
            `property_codes` (null = all) |

            | `review.published` | `review_id`, `overall_rating` |

            | `reservation.created` / `.modified` / `.cancelled` /
            `.add_ons_changed` | `confirmation_number`, `partner_reference`,
            `status`, `check_in`, `check_out`, `total`, `currency`, plus
            `changed_fields` (modified), `cancellation_fee` (cancelled) or
            `add_ons` (add-ons changed). Status changes made at the property,
            such as check-in and check-out, arrive as `reservation.modified`. |

            | `group_request.created` / `.updated` | `reference`, `status`,
            `rooms_requested` |

            | `webhook.ping` | `message` |
      examples:
        - id: evt_01jbx5a1b2c3d4e5f6g7h8j9k0
          sequence: 4182
          type: availability.changed
          occurred_at: 2026-10-24T05:54:42Z
          property_code: KTNYC
          subject:
            type: room_type
            id: KTNYC:TWRK
          data:
            room_type_code: TWRK
            start_date: 2026-12-04
            end_date: 2026-12-06
    EventType:
      type: string
      enum:
        - reservation.created
        - reservation.modified
        - reservation.cancelled
        - reservation.add_ons_changed
        - availability.changed
        - rates.changed
        - property.updated
        - promotion.published
        - review.published
        - group_request.created
        - group_request.updated
        - webhook.ping
  securitySchemes:
    KongKeyAuth:
      type: apiKey
      in: header
      name: apikey
      description: Your API key, validated by Kong Gateway. The header name depends on
        the gateway's key-auth configuration.
    KongConsumer:
      type: apiKey
      in: header
      name: X-Consumer-ID
      description: "**Local development only.** Simulates the consumer identity Kong
        Gateway injects after authentication."
```
