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

# ProblemCode

> The contract of an error.

Branch on this, never on `type`, `title` or `detail`.

A closed vocabulary that only ever grows, so treat an unrecognised value as its HTTP
status class. A code is permanent from the moment it is published: renaming one is a
breaking change.

## Values

| Value | Meaning |
| - | - |
| `validation_failed` | The body, query or path failed the published schema. `errors` names the fields. |
| `unauthorized` | No usable token: absent, malformed, expired, revoked, or a human credential. |
| `workspace_scope_mismatch` | The token's environment claim disagrees with the workspace it addresses. |
| `insufficient_scope` | Your key was not issued with the scope this route requires. |
| `property_not_found` | No such property in this workspace. One answer for "no such" and "not yours". |
| `listing_not_found` | No such listing in this workspace. |
| `unit_not_found` | No such unit in this workspace. |
| `conflict` | The write collides with something already on the calendar. `conflicts` lists the dates. |
| `property_not_simple` | The property has a topology this contract cannot address from a property id alone. |
| `listing_pooled_unsupported` | The listing sells a room type over several rooms, so a calendar block has no single unit to close. Retrying cannot help. |
| `inventory_not_supported` | The listing is not a stay. See `InventoryKind`. |
| `photo_not_found` | No such photo on that property. |
| `rate_limited` | Too many requests. Read the rate-limit headers and retry after the window. |
| `photo_quota_exceeded` | The property already holds as many photos as it may. |
| `internal_error` | A fault on our side. Quote `instance` when you report it. |
| `not_enabled` | The contract is published but does no work for this workspace yet. |
| `service_unavailable` | A dependency was unreachable. Retryable. |
| `pricing_mode_conflict` | Another source prices this listing; you do not hold it. |
| `booking_not_found` | No such booking in this workspace. |
| `review_not_found` | No such review in this workspace. |
| `delivery_not_found` | No such delivery for your endpoint. |
| `redrive_budget_exhausted` | You have spent this window's redrives. |
| `test_event_budget_exhausted` | You have spent this window's test events. |
| `rotation_in_progress` | A rotation overlap is still open on your endpoint, so a second rotation is refused until it closes. `detail` names the instant. |
| `sandbox_only` | The operation acts on sandbox inventory only, and you named the listing in your own live workspace. Retrying cannot help. |

## In Maat

The published set is exactly Maat's own `ChannelPartnerProblem`. A member added to one and not the other fails our build.

## Where it appears

**Fields**

* `Problem` · `code`

**Operations**

* `POST /token` — Exchange your API key for a token


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.