---
title: "Errors"
description: "RFC 9457 problem details, every problem type the Partner API returns, and request IDs for support."
url: "https://portal.konghotels.cloud/guides/errors"
image: "https://portal.konghotels.cloud/_og/d/c_Ocean.takumi,title_Errors,description_~UkZDIDk0NTcgcHJvYmxlbSBkZXRhaWxzLCBldmVyeSBwcm9ibGVtIHR5cGUgdGhlIFBhcnRuZXIgQVBJIHJldHVybnMsIGFuZCByZXF1ZXN0IElEcyBmb3Igc3VwcG9ydC4,props_eyJ0aGVtZSI6eyJtb2RlIjoibGlnaHQiLCJjb2xvcnMiOnsicHJpbWFyeSI6IiMwRTJBMUYifX19,p_Ii9ndWlkZXMvZXJyb3JzIg,s_HCWv98mfYY732F_X.png"
---

# Errors

Errors are RFC 9457 problem details. Switch on the type, and quote the request ID when you need help.

## [Problem details](#problem-details)

Errors use [RFC 9457 problem details](https://www.rfc-editor.org/rfc/rfc9457) with `Content-Type: application/problem+json`. Switch on `type`, not on `title` or `detail`, which may change.

```json
{
  "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": "1929cbf3-f6ed-4611-83ec-6880c4458152"
}
```

## [Problem types](#problem-types)

| type suffix                              | Status | Meaning                                                                          |
| :--------------------------------------- | :----- | :------------------------------------------------------------------------------- |
| validation-failed                        | 422    | Field errors in errors (field → messages).                                       |
| booking-rule-violation                   | 422    | Valid input that breaks a rule, such as minimum stay or occupancy. restrictions may list codes. |
| membership-required                      | 422    | A member-only rate requested without verified loyalty details.                   |
| loyalty-verification-failed              | 422    | Member number and last name don't match.                                         |
| promotion-invalid / promotion-ineligible | 422    | Unknown code, or not applicable (see reasons).                                   |
| modification-not-allowed                 | 422    | The rate plan doesn't permit stay changes.                                       |
| idempotency-key-reused                   | 422    | Same key, different request body.                                                |
| idempotency-key-required                 | 400    | POST /reservations without an Idempotency-Key.                                   |
| writes-disabled                          | 403    | The API is in read-only mode.                                                    |
| not-found                                | 404    | Unknown resource, or one that belongs to another partner.                        |
| room-unavailable                         | 409    | Inventory is gone. available_units shows what's left.                            |
| invalid-state                            | 409    | For example, cancelling a cancelled reservation or re-booking a used quote.      |
| cancellation-fee-changed                 | 409    | The fee rose above your expected_fee.                                            |
| idempotency-request-in-progress          | 409    | Retry after Retry-After seconds.                                                 |
| quote-expired                            | 410    | Request a new quote.                                                             |
| rate-limited                             | 429    | See Retry-After.                                                                 |
| internal-error                           | 500    | Unexpected server error. request_id identifies the failed request.               |

## [Request IDs](#request-ids)

Every response, success or error, includes an `X-Request-ID` header. We reuse the gateway's `Kong-Request-ID`, or your own `X-Request-ID` if you send one.

Contacting support

Log the `X-Request-ID` of every failed call. Quoting it is the fastest way for your partner manager to trace what happened.