---
title: "Hold inventory"
url: "https://portal.konghotels.cloud/apis/kong-hotels-partner-api-1/versions/23cc133a-2f87-4d55-9490-0b8b2bb7dd78/operations/createHold"
---

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

# Hold inventory

`POST` `/holds`

Operation ID: `createHold`

**Write.** Takes a quote's rooms off sale for `KONG_HOLD_TTL_MINUTES` (15 by default) so they can't be sold to anyone else while your guest completes payment. The quote stays bookable for at least as long as the hold. One active hold per quote.

## Header parameters

- `Idempotency-Key` (string, optional) - Optional. Makes the request safe to retry for 24 hours.

## Request body (required)

Content types: `application/json`

## Responses

- `201` - Hold created.
- `403` - The API is in read-only mode.
- `404` - Not found, or owned by another partner.
- `409` - Inventory or state conflict.
- `410` - The quote has expired.

## 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:
  /holds:
    post:
      tags:
        - Quotes & Holds
      operationId: createHold
      summary: Hold inventory
      description: >
        **Write.** Takes a quote's rooms off sale for `KONG_HOLD_TTL_MINUTES`
        (15 by default) so they can't

        be sold to anyone else while your guest completes payment. The quote
        stays bookable for at least

        as long as the hold. One active hold per quote.
      x-write: true
      parameters:
        - $ref: "#/components/parameters/IdempotencyKey"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - quote_id
              properties:
                quote_id:
                  type: string
                  examples:
                    - qt_01jbx4m6n2kz9v8c7d5e3f1g0h
      responses:
        "201":
          description: Hold created.
          headers:
            Location:
              $ref: "#/components/headers/Location"
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: "#/components/schemas/Hold"
        "403":
          $ref: "#/components/responses/WritesDisabled"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "410":
          $ref: "#/components/responses/Gone"
security:
  - KongKeyAuth: []
  - KongConsumer: []
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: Optional. Makes the request safe to retry for 24 hours.
      schema:
        type: string
        maxLength: 255
        examples:
          - 8e03978e-40d5-43e8-bc93-6894a57f9324
  headers:
    Location:
      description: URL of the created resource.
      schema:
        type: string
        format: uri
  schemas:
    Hold:
      type: object
      properties:
        id:
          type: string
          examples:
            - hld_01jbx4q2r8s7t6u5v4w3x2y1z0
        status:
          type: string
          enum:
            - active
            - released
            - converted
            - expired
        quote_id:
          type: string
        room_type_code:
          type: string
        check_in:
          type: string
          format: date
        check_out:
          type: string
          format: date
        rooms:
          type: integer
        expires_at:
          type: string
          format: date-time
        released_at:
          type:
            - string
            - "null"
          format: date-time
        created_at:
          type: string
          format: date-time
    Problem:
      type: object
      description: RFC 9457 problem details. Extra members (e.g. `available_units`,
        `restrictions`, `reasons`) may be present.
      required:
        - type
        - title
        - status
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
        instance:
          type: string
        request_id:
          type: string
      additionalProperties: true
  responses:
    WritesDisabled:
      description: The API is in read-only mode.
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Problem"
          example:
            type: https://developers.konghotels.example/problems/writes-disabled
            title: Write operations are disabled
            status: 403
            detail: The Kong Hotels partner API is currently read-only. POST requests will
              be enabled in a later phase.
            instance: /quotes
            request_id: 0b7e2c9a-5d41-4e8b-a1f3-6c9d8e7f6a5b
    NotFound:
      description: Not found, or owned by another partner.
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Problem"
          example:
            type: https://developers.konghotels.example/problems/not-found
            title: Resource not found
            status: 404
            detail: Property not found.
            instance: /properties/KXXXX
            request_id: 9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d
    Conflict:
      description: Inventory or state conflict.
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Problem"
          examples:
            roomUnavailable:
              value:
                type: https://developers.konghotels.example/problems/room-unavailable
                title: Room unavailable
                status: 409
                detail: Tower King is not available for the requested stay.
                instance: /quotes
                request_id: 3c2b1a0f-9e8d-4c7b-6a5f-4e3d2c1b0a9f
                available_units: 0
                restrictions:
                  - stop_sell
            invalidState:
              value:
                type: https://developers.konghotels.example/problems/invalid-state
                title: Invalid state for this operation
                status: 409
                detail: Reservation KH4DEMO06 is cancelled and can no longer be changed.
                instance: /reservations/KH4DEMO06/cancel
                request_id: 1f2e3d4c-5b6a-4978-8a9b-0c1d2e3f4a5b
    Gone:
      description: The quote has expired.
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Problem"
          example:
            type: https://developers.konghotels.example/problems/quote-expired
            title: Quote expired
            status: 410
            detail: The quote expired at 2026-10-24T06:09:42Z. Request a new quote to
              re-check price and availability.
            instance: /reservations
            request_id: 6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a
  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."
```
