This document provides a comprehensive list of all error codes used in the Bookings API.
Format: RESOURCE-X-NNN
- RESOURCE: 3-5 character resource identifier (AVAIL, OPRUL, BOOK, PMAP, VENUE, USER, IDENT)
- X: Retryability indicator
R= Retryable (transient error, may succeed on retry)N= Non-retryable (permanent error, requires different input)
- NNN: 3-digit error code (001-999)
All errors follow the RFC 7807 ProblemDetails format:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Error Title",
"status": 400,
"detail": "Detailed error message",
"code": "RESOURCE-N-001",
"isRetryable": false
}Availability checking and product validation errors
| Code | Title | Description | Retryable |
|---|---|---|---|
AVAIL-N-001 | Product Not Found | The requested product could not be found for the specified venue | No |
AVAIL-N-002 | Venue Not Configured for Partner | The venue is not configured for access by the current partner | No |
AVAIL-N-003 | No Products Available for Partner | No products are accessible to this partner based on partner mappings | No |
AVAIL-N-004 | Venue Closed on Requested Date | The venue is closed on the requested date and cannot accept bookings | No |
AVAIL-N-005 | No Availability for Time Slot | No availability exists for the requested date and time | No |
AVAIL-N-006 | Requested Duration Outside Product Bounds | The requested booking duration is outside the minimum/maximum duration configured for the requested product(s) | No |
AVAIL-N-007 | Requested Time Within Booking Cutoff Window | The requested start time is too close to now to satisfy the product's minimum advance-booking notice, or an operator booking-window rule (BOO-823) that closes bookings this close to the reservation | No |
AVAIL-N-008 | Requested Date Beyond Advance Booking Horizon | The requested date is further ahead than the product's maximum advance-booking horizon, or than an operator booking-window rule (BOO-823) allows | No |
AVAIL-N-009 | Date and Time Conflict With startDateTime | The request sent both startDateTime and date/startTime/endTime, and they describe different moments. Send one form, or make them agree. | No |
AVAIL-N-010 | Invalid Availability Window | startDateTime/endDateTime must carry a UTC offset, endDateTime needs startDateTime, must not be before it, and the window may span at most 48 hours | No |
AVAIL-R-001 | Availability Check Rate Limited | The rate management system rejected the availability check due to rate limiting. Retry after a short delay. | Yes |
Operator availability rule validation errors
| Code | Title | Description | Retryable |
|---|---|---|---|
OPRUL-N-001 | Specific Date Disabled | The operator has disabled availability for the requested specific date | No |
OPRUL-N-002 | Date Range Disabled | The requested date falls within a date range disabled by the operator | No |
OPRUL-N-003 | Recurring Pattern Disabled | The requested date matches a recurring pattern disabled by the operator | No |
OPRUL-N-004 | Time Range Disabled | The requested start time falls within a time range disabled by the operator | No |
OPRUL-N-005 | Availability Rule Not Found | The requested availability rule could not be found | No |
OPRUL-N-006 | Scope Value Already Exists | The value is already present in the scope collection and cannot be added again | No |
OPRUL-N-007 | Scope Entity Not Found | One or more scope values do not correspond to an existing entity for this operator | No |
OPRUL-N-008 | Product Reserved For Other | The operator has reserved the requested date/time for a different product | No |
OPRUL-N-009 | Space Blocked By Operator Rule | The selected space is not available at the requested date/time because of an operator rule that targets the space or one of its zones | No |
OPRUL-N-010 | Dmn Rule Not Supported | A rule scoped to the DesignMyNight channel can only hide booking types on whole weekdays: recurring, daysOfWeek only, permitted false, no packages, menus, zones or spaces. It may name other channels too, but the whole rule must fit | No |
OPRUL-N-011 | Dmn Collins Managed Day | The DesignMyNight rule would replace a custom DesignMyNight setup that DesignMyNight staff configured in Collins; narrow the rule, or resend with replaceCollinsManaged=true | No |
OPRUL-N-012 | Dmn Channel Not Linked | The DesignMyNight channel is not enabled in this environment, or not linked to this operator's DesignMyNight booking source | No |
OPRUL-N-013 | Rule Scope Invalid | The rule's scope expression is not valid: malformed JsonLogic, an operator or fact outside the scope profile, a limit exceeded (depth 8, 64 nodes, 200-element lists) or an unresolved reference. Applies to availability, booking condition and booking label rules | No |
OPRUL-N-014 | Rule Scope Reference Not Found | The rule's scope names a channel category that does not exist or is neither global nor this operator's own, or a partner or a venue (composite id) that does not exist for this operator | No |
OPRUL-N-015 | Dmn Rule Cannot Have Scope | A rule that targets DesignMyNight (DMN) cannot use a scope: DMN rules are sent to Collins and need explicit venues and channels. Remove the scope, or remove DMN from the rule's channels | No |
Partner access and mapping validation errors
| Code | Title | Description | Retryable |
|---|---|---|---|
PMAP-N-001 | Venue Not Mapped to Partner | The requested venue is not mapped to the current partner | No |
PMAP-N-002 | Product Not Mapped to Partner | The requested product is not accessible to the current partner | No |
PMAP-N-003 | Partner Booking Access Denied | You do not have permission to perform this action on the requested booking. Check that the booking reference is correct and that your credentials are authorised for it. | No |
PMAP-N-004 | Partner Not Found | The specified partner could not be found | No |
PMAP-N-005 | Product Mapping Not Found | Cannot replace: one or more products are not currently mapped to this partner | No |
PMAP-N-006 | Product Already Mapped | Cannot add: one or more products are already mapped to this partner | No |
PMAP-N-007 | Partner Source Mapping Not Found | Cannot replace: one or more partner sources are not currently mapped to this operator | No |
PMAP-N-008 | Partner Source Already Exists | A partner source with this identifier already exists for the operator | No |
PMAP-N-009 | Partner Source Owned By Another Partner | This partner source identifier is already linked to a different partner | No |
PMAP-N-010 | Partner Source Not Found | The specified partner source has not been registered for this operator | No |
PMAP-N-011 | Partner Source Unresolved | This partner source is not currently linked to a partner | No |
PMAP-N-012 | Partner Source Already Resolved | This partner source is already linked to a partner; use PUT to relink, or unmap first | No |
PMAP-N-013 | Company Config Invalid | The company configuration is invalid: mode must be none, single or list, with at most 500 company names of at most 150 characters each | No |
PMAP-N-014 | Similar Partner Exists | A partner with the same or a near-identical name already exists; link the partner source to it, or retry with allowSimilarName to create a new partner anyway | No |
PMAP-N-015 | Dmn Mapping Not Supported | DesignMyNight's own marketplace reads booking types straight from Collins, so its venue, product, menu and package mappings can't be changed; hide or show a booking type on DMN with an availability rule scoped to the DesignMyNight channel | No |
Booking creation and management errors
| Code | Title | Description | Retryable |
|---|---|---|---|
BOOK-N-001 | No TMS Configurations Found | Cannot perform any research for the provided venue group. No TMS configurations found. | No |
BOOK-N-002 | Booking Already Exists | The booking already exists in the database | No |
BOOK-N-003 | TMS Configuration Not Found | No TMS configuration found for the specified composite ID | No |
BOOK-N-004 | Missing Partner Source Configuration | The partner source is not configured for this venue group and partner | No |
BOOK-N-005 | Venue Group Partner Association Not Found | No venue group and partner association found | No |
BOOK-N-006 | Booking Not Found | The requested booking could not be found | No |
BOOK-N-007 | Preorder is required | A preorder is required to proceed with this booking | No |
BOOK-N-008 | Card prepayment required | This booking requires a card pre‑payment, but card payments are not currently supported. | No |
BOOK-N-009 | TMS Booking Request Failed | The booking request was rejected by the table management system | No |
BOOK-N-010 | Space Does Not Exist | The specified space ID does not exist | No |
BOOK-N-011 | Space Not Configured | The space exists but is not linked to a TMS zone. Please configure the space correctly. | No |
BOOK-N-012 | Space Zone Has No Areas | The TMS zone linked to this space has no areas defined. Please sync areas to zone before booking. | No |
BOOK-R-001 | TMS Booking Temporarily Rate Limited | The table management system rate-limited this booking request. The booking, amendment, or cancellation was not applied — please retry shortly. | Yes |
BOOK-R-002 | TMS Temporarily Unavailable | The table management system could not process this booking request due to an upstream error. The change was not applied — please retry shortly. | Yes |
BOOK-N-013 | Ticket Quantity Increase Not Supported | This booking's ticket quantity cannot be increased via update — only decreasing it is supported, which is processed as a partial refund of the difference. To add more tickets, create a new order item instead. | No |
BOOK-N-014 | Invalid Booking Status Transition | The requested status change is not allowed from the booking's current status. Only pending or in-progress bookings can be confirmed or rejected. | No |
BOOK-N-015 | Company Not In Channel List | The company does not match any company name configured for this channel. Use one of bookingRequirements.company.companyNames from GET /venues/{venueId}. | No |
BOOK-N-016 | Company Required | This channel requires a company on every booking. Supply one of bookingRequirements.company.companyNames from GET /venues/{venueId}. | No |
BOOK-N-017 | Space Not Offered By Product | The space's area is not offered by the product being booked. Use a spaceId from this product's availability response (times[].product.spaces). | No |
BOOK-N-018 | Date and Time Conflict With dateTime | The request sent both dateTime and date/time, and they describe different moments. Send one form, or make them agree. | No |
BOOK-N-019 | Booking Date and Time Missing | A booking needs either dateTime, or both date and time | No |
BOOK-N-020 | Invalid Booking Date Time | dateTime was supplied but is not RFC 3339 with a UTC offset or Z, e.g. 2026-10-18T00:30:00+01:00 | No |
Venue retrieval and management errors
| Code | Title | Description | Retryable |
|---|---|---|---|
VENUE-N-001 | Venue Not Found | The requested venue could not be found | No |
VENUE-N-002 | Product Not Found for Venue | The specified product does not exist for this venue and cannot be used | No |
VENUE-N-003 | TMS Zone Not Found | The specified TMS zone does not exist for this venue | No |
VENUE-N-004 | Space Not Found | The requested Venue Bible space could not be found | No |
VENUE-N-005 | TMS Zone Cannot Be Cleared | This space already has a TMS zone; an update cannot remove it. Include the existing tms_zone_id in the request. | No |
VENUE-N-006 | Invalid Time Range | The supplied time range is invalid | No |
VENUE-N-007 | Override Windows Overlap | Minimum spend overrides on the same date must not have overlapping time windows | No |
VENUE-N-008 | Invalid Zone Count for RMS | The number of TMS zone IDs provided is not supported by this venue's RMS | No |
VENUE-N-009 | Venue No Longer Available | The venue is no longer available and cannot be retrieved, checked for availability, or booked | No |
VENUE-N-010 | Booking Rule Change In Progress | A booking-rule change for the same venue, product and weekday is still queued or being written; retry once it completes | Yes |
VENUE-N-011 | Media File Rejected | The file is not a supported photo or video, or is over the size limit for its type | No |
VENUE-N-012 | Media Upload Incomplete | The uploaded file was not found in storage, or does not match the type and size declared when the upload started | No |
Event-ticket availability and booking errors
| Code | Title | Description | Retryable |
|---|---|---|---|
EVENT-N-001 | RMS Configuration Not Found | No RMS configuration found for the specified event | No |
EVENT-N-002 | Ticket Type Not Found | The requested ticket type does not exist for this event | No |
EVENT-N-003 | Ticket Quantity Increase Not Supported | This booking's ticket quantity cannot be increased via update — only decreasing it is supported, which is processed as a partial refund of the difference. To add more tickets, create a new order item instead. | No |
Operator management and access errors
| Code | Title | Description | Retryable |
|---|---|---|---|
OPRTR-N-001 | Operator Not Found | The requested operator could not be found | No |
OPRTR-N-002 | Operator Access Denied | You do not have permission to access this operator | No |
OPRTR-N-003 | Partner Source Required | The partnerSource field is required when creating an operator as a partner user | No |
OPRTR-N-004 | Operator Already Exists | An operator with this name already exists | No |
OPRTR-N-005 | Cannot Delete Operator | This operator cannot be deleted because it has associated resources | No |
OPRTR-N-006 | Invalid Operator Configuration | The operator configuration is invalid or incomplete | No |
OPRTR-N-007 | TMS Credentials Already Exists | TMS credentials already exist for this operator and TMS combination | No |
OPRTR-N-008 | TMS Credentials Not Found | The requested TMS credentials for this operator could not be found | No |
OPRTR-N-009 | Invalid TMS Credentials | The TMS credentials could not be validated. Please check your configuration and try again. | No |
User management and authentication errors
| Code | Title | Description | Retryable |
|---|---|---|---|
USER-N-001 | Email Already In Use | A user with this email address already exists | No |
USER-N-002 | User Not Found | The specified user could not be found | No |
USER-N-003 | Invalid User Credentials | The provided credentials are invalid | No |
USER-N-004 | User Invite Not Found | The user invitation could not be found | No |
USER-N-005 | User Invite Already Accepted | This invitation has already been accepted | No |
USER-N-006 | User Invite Expired | This invitation has expired | No |
USER-N-007 | Invalid Venue Group Assignment | The user cannot be assigned to the specified venue group | No |
USER-N-008 | Insufficient Permissions | You do not have sufficient permissions to perform this action | No |
USER-N-009 | Invalid Role Assignment | The specified role cannot be assigned to this user | No |
USER-N-010 | User Account Disabled | This user account has been disabled | No |
USER-N-011 | Invalid Email Format | The provided email address format is invalid | No |
USER-N-012 | Password Requirements Not Met | The password does not meet security requirements | No |
USER-N-013 | User Session Expired | Your session has expired, please log in again | No |
USER-N-014 | Maximum Login Attempts Exceeded | Account locked due to too many failed login attempts | Yes |
USER-N-015 | Email Verification Required | Email address must be verified before proceeding | No |
Identity resolution errors
| Code | Title | Description | Retryable |
|---|---|---|---|
IDENT-N-001 | Invalid Identity | The identity could not be resolved | No |
IDENT-N-002 | Invalid Partner Reference | The partner reference could not be resolved | No |
IDENT-N-003 | Partner Impersonation Not Allowed | The agent partner is not permitted to impersonate the requested partner reference | No |
IDENT-N-004 | Agent Partner Allowlist Entry Already Exists | An allowlist entry already exists for this agent and target partner pair | No |
Sandbox environment restriction errors
| Code | Title | Description | Retryable |
|---|---|---|---|
SBOX-N-001 | Not Available in Sandbox | This endpoint is not available in the sandbox environment | No |
SBOX-N-004 | Invalid Simulation | The simulated change can't be applied to this booking | No |
Request validation errors
| Code | Title | Description | Retryable |
|---|---|---|---|
VALID-N-001 | Validation Failed | One or more validation errors occurred. | No |
Additional Response Fields for VALID-N-001:
errors(object): Dictionary of field names mapped to arrays of validation error messages"errors": { "Date": [ "Availability date cannot be in the past." ], "EndTime": [ "EndTime must be after StartTime." ]
}
## FSEL Errors (FSEL)
Field selection (partial response) validation errors
| Code | Title | Description | Retryable |
|------|-------|-------------|-----------|
| `FSEL-N-001` | Unknown Field | One or more requested field names are not valid for this resource type | No |
**Additional Response Fields for FSEL-N-001:**
- **`invalid_fields`** (array): List of unrecognised field names
```json
"invalid_fields": [
"badField",
"unknownNested"
]valid_fields(array): List of valid field names for the resource type
| FSEL-N-002 | Malformed Field Selection Syntax | The fields parameter contains malformed syntax (e.g. unmatched parentheses or empty field name) | No |
MCP tool invocation and parameter resolution errors
| Code | Title | Description | Retryable |
|---|---|---|---|
MCP-N-001 | Venue Group ID Required | venueGroupId must be provided when calling as an Administrator. | No |
API rate limiting errors
| Code | Title | Description | Retryable |
|---|---|---|---|
RATE-R-001 | Rate Limit Exceeded | Too many requests have been made in a short period. Please wait and retry. | Yes |
Messaging errors
| Code | Title | Description | Retryable |
|---|---|---|---|
MSG-N-001 | Recipient Required | The recipient field is required for administrator callers. Specify 'guest' or 'venue'. | No |
MSG-N-002 | Venue Booking Email Not Configured | The venue does not have a booking email address configured in the TMS. | No |
MSG-N-003 | Booking Contact Unavailable | The booking contact details (guest email or venue ID) are not available in the TMS response. | No |
On-demand force sync errors
| Code | Title | Description | Retryable |
|---|---|---|---|
SYNC-N-001 | RMS Not Eligible For On-Demand Sync | The venue group's TMS cannot be force-synced right now (e.g. Zonal syncs only within its contractual window). | No |
SYNC-N-002 | No RMS Configured | The venue group has no TMS credentials configured to sync. | No |
SYNC-N-003 | No Sync Phase Requested | The request didn't resolve to any deployed job profile (every relevant phase flag was false/absent). Set at least one of performBookingSync, performVenueSync, performBookingSourceSync, performZoneSync, or performCategorization. | No |
SYNC-R-001 | Force Sync Cooldown Active | A force sync was already triggered for this venue group recently. Please wait before retrying. | Yes |
SYNC-R-002 | Venue Sync Already In Progress | A venue sync is already actively running for this venue group's RMS (recent progress, not a stale/dead lock). Wait for it to finish, or check /force-sync/status. | Yes |
SYNC-N-004 | Venue Refresh Not Supported | A single venue can't be refreshed from this venue's TMS (only Collins can read one venue on its own). Force-sync the operator's venues instead. | No |
Third-party (3P) commercial record errors (BOO-40)
| Code | Title | Description | Retryable |
|---|---|---|---|
TPRTY-N-001 | Third Party Not Found | No third party with this id exists for this operator | No |
TPRTY-N-002 | Category Already Exists | A category with this slug already exists for this operator | No |
TPRTY-N-003 | Partner Not Associated With Operator | The referenced Partner doesn't exist, or isn't associated with this operator | No |
TPRTY-N-004 | Partner Already Linked | Another third party for this operator is already linked to this Partner | No |
TPRTY-N-005 | Commission Agreement Not Found | No commission agreement with this id exists for this third party | No |
TPRTY-N-006 | Commission Rule Not Found | No commission rule with this id exists for this agreement | No |
TPRTY-N-007 | Category Not Found | No custom category with this id exists for this operator | No |
Pre-order catalog errors (BOO-714). This surface is asynchronous: a well-formed request is accepted with 202 and a batchId, and individual package/menu rows succeed or fail later in the background processor. Codes below are therefore split into two groups. The first group is returned as a ProblemDetails on the PUT itself. The second is recorded on the history row and read back via GET /venue-management/preorder-catalog/{batchId}/history - those never appear as an HTTP status. Read a history row's status BEFORE its errorCode: a retryable code can sit on a row that is still Pending and will be retried automatically, which is not a failure.
| Code | Title | Description | Retryable |
|---|---|---|---|
PCAT-N-001 | Invalid Venue Identifier | A venue entry could not be decoded. Each must be a composite venueGroupId|rmsSlug|venueId. | No |
PCAT-N-002 | No Catalog Operations Specified | The request carried no package or menu operation. Supply at least one create, update or delete. | No |
PCAT-N-003 | Ambiguous Item Reference | Each update or delete must set exactly one of id or clientRef, never both and never neither. A blank string counts as absent. | No |
PCAT-N-004 | Invalid Menu Item | Each menu item is either a package reference (packageId with its type - Food, Drink or Other, matched case-insensitively) or a heading separator (headingText), never both and never neither. | No |
PCAT-N-005 | Venues Span Multiple Venue Groups | Every venue in one request must belong to the same venue group and RMS. | No |
PCAT-N-006 | Duplicate Item Reference | The same id or clientRef was targeted more than once for the same venue. The offending references are listed in the references extension. | No |
PCAT-N-007 | Duplicate Client Reference Among Creates | The same clientRef appears on more than one create in this request. The offending references are listed in the clientRefs extension. | No |
PCAT-N-008 | Venue Not Found | One or more venues do not exist in the requested venue group. The offending ids are listed in the venueIds extension. | No |
PCAT-N-009 | Package Not Found | One or more package ids do not exist in the requested venue group. The offending ids are listed in the packageIds extension. | No |
PCAT-N-010 | Menu Not Found | One or more menu ids do not exist in the requested venue group. The offending ids are listed in the menuIds extension. | No |
PCAT-N-011 | Item Id Matched More Than One Venue | An id-addressed operation resolved to more than one venue, so the intended target is ambiguous. Ids are not unique across venues in existing inventory. A clientRef is not a way out for such an item: it resolves only for an item created through this endpoint, so pre-existing shared inventory cannot be addressed here at all and can currently be renamed only through the deprecated per-resource name-change endpoints. The offending ids are listed in the itemIds extension. | No |
PCAT-N-012 | Client Reference Already In Use | A create used a clientRef that already exists at the target venue. Address the existing item with an update instead. The offending references are listed in the clientRefs extension. | No |
PCAT-N-013 | Item Targeted By More Than One Operation | Two operations in this request resolve to the same item, for example a delete by id and an update by the clientRef that maps to it. | No |
PCAT-N-014 | No Change Resolved To An Existing Target | Every clientRef-addressed operation was absent on every requested venue, so the request would do nothing. | No |
PCAT-R-001 | Venue Batch Already In Progress | One or more venues already have a pre-order catalog batch in flight. The write is whole-document per venue, so batches are serialised. Retry once the in-flight batch completes. | Yes |
PCAT-N-015 | Batch Not Found | No pre-order catalog batch exists with this id. | No |
PCAT-N-016 | Batch Access Denied | This batch belongs to a venue group you do not have access to. | No |
PCAT-N-017 | Referential Integrity Violation | The change would leave a menu referencing a package that no longer exists. Nothing was written for this venue. Recorded on the history row; never returned as an HTTP status. | No |
PCAT-N-018 | Item Missing In RMS | The item was present in our mirror but absent from the RMS when the write ran, so the local view was stale. Re-read the catalog before resubmitting. Recorded on the history row. | No |
PCAT-N-019 | Outcome Could Not Be Verified | The RMS accepted the write but returned no document to verify it against, so this change MAY have been applied. Check the RMS before resubmitting - a blind retry of a create would duplicate it. Recorded on the history row. | No |
PCAT-N-020 | Processing Interrupted | Processing was interrupted before the outcome could be recorded, so this change MAY have been applied. Deliberately not retried automatically: re-running a create that landed would duplicate it. Verify against the RMS before resubmitting. Recorded on the history row. | No |
PCAT-N-021 | Change Not Applied | The RMS did not apply this change - the entry is absent, or a delete left it in place. Nothing landed, so this is safe to resubmit. Recorded on the history row. | No |
PCAT-N-022 | Change Applied With Differences | The change reached the RMS but the stored entry differs from what was requested, usually because the RMS normalised or discarded a value it does not accept. The write DID land - resubmitting a create would duplicate it. Compare the stored entry before acting. Recorded on the history row. | No |
PCAT-N-023 | Rate Limit Retry Budget Exhausted | The RMS rate-limited this change repeatedly and the retry budget ran out. Nothing was applied. Recorded on the history row. | No |
PCAT-N-024 | RMS Configuration Not Found | No RMS configuration exists for this venue group and RMS, so the change cannot be delivered. This is a configuration problem, not a problem with the request. Recorded on the history row. | No |
PCAT-N-025 | Internal Write Invariant Violated | The change was rejected by an internal consistency check before reaching the RMS. This indicates a defect rather than a problem with the request. Recorded on the history row. | No |
PCAT-N-026 | RMS Write Failed | The change could not be applied to the RMS for a reason with no more specific code. The accompanying errorMessage carries the underlying detail. Recorded on the history row. | No |
PCAT-R-002 | Minted Item Id Already Exists | The id minted for a create already existed on the venue's page, so the write was refused rather than creating a duplicate. Resubmitting mints a fresh id and will succeed. Recorded on the history row. | Yes |
PCAT-R-003 | RMS Response Malformed | The RMS returned a response that could not be read. Nothing was applied. Recorded on the history row. | Yes |
PCAT-R-004 | Rate Limited By RMS | The RMS rate-limited this change and it has been queued for retry automatically. The row stays Pending - this is not a failure and needs no action. | Yes |
PCAT-R-005 | Requeued After Host Restart | The service shut down before this change reached the RMS, so it was returned to the queue and will be retried automatically. The row stays Pending - this is not a failure and needs no action. | Yes |
PCAT-N-027 | Sub Type Not Valid For Package Type | subType describes where a dish sits in a meal, so it is only meaningful on a package whose type is Food. Remove it, or set the type to Food. | No |
PCAT-N-028 | Invalid Menu Item Discount | A menu item discount tier needs a quantity of at least 1 and an amount greater than 0 - each tier means 'order at least this many of this item, take this much off'. | No |
PCAT-N-029 | Description Contains Disallowed Markup | Package and menu descriptions are rendered as HTML by the RMS, so only the markup its own editor produces is accepted: p, br, strong, b, em, i, u, a, ul, ol, li and h1-h3, with href (http, https or mailto), style, class, target and rel. Plain text needs no escaping and passes as-is. Anything else is rejected rather than silently stripped. | No |
PCAT-R-006 | Venue Busy | Another venue-management write to the same venue was in progress. The row is back in Pending and will be retried automatically; no action needed. Recorded on the history row. | Yes |
PCAT-N-030 | Menu Has No Package Items | A menu must contain at least one package item - headings alone do not count. The RMS drops a menu with none without reporting an error, so a create would never appear and an update that leaves none would delete the menu. | No |
PCAT-N-031 | Package Not Used By Venue | The venue is set to use its organisation's packages in the RMS, which ignores packages of the venue's own: a package created there would never be used, and a menu item referencing one is dropped - along with a menu left with no package item. Nothing was written for this venue. Reference the organisation's existing packages instead, or switch the venue to custom packages in the RMS, which hides the organisation packages at that venue. Creating organisation packages through this API is not supported yet. Recorded on the history row; never returned as an HTTP status. | No |
PCAT-N-032 | Package Create At Organisation Packages Venue | The venue is set to use its organisation's packages, so the RMS would store a package created there but never use it - no menu could reference it and the venue would not offer it. Switch the venue to custom packages in the RMS first, which hides the organisation packages at that venue; creating organisation packages through this API is not supported yet. The offending venues are listed in the venueIds extension. Judged from synced venue settings, which can lag the RMS; PCAT-N-031 is the backstop once the write runs. | No |
PCAT-N-033 | Menu Not Used By Venue | The venue is set to use its organisation's menus in the RMS, which stores a menu of the venue's own but never uses it, so a menu create there is refused. Updates and deletes of the venue's existing menus are still applied, so they can be cleaned up. Nothing was written for this venue. Switch the venue to custom menus in the RMS first, which hides the organisation menus at that venue; creating organisation menus through this API is not supported yet. Recorded on the history row; never returned as an HTTP status. | No |
PCAT-N-034 | Menu Create At Organisation Menus Venue | The venue is set to use its organisation's menus, so the RMS would store a menu created there but never use it. Switch the venue to custom menus in the RMS first, which hides the organisation menus at that venue; creating organisation menus through this API is not supported yet. The offending venues are listed in the venueIds extension. Judged from synced venue settings, which can lag the RMS; PCAT-N-033 is the backstop once the write runs. | No |
Booking condition rule violations (BOO-699) — same_package, max_quantity_party_size, max_quantity, preorder_required, lock_preorder_edits
| Code | Title | Description | Retryable |
|---|---|---|---|
BKRUL-N-001 | Same Package Violation | The booking mixes more than one item from a same-package exclusivity set, or the chosen item's quantity does not equal the party size | No |
BKRUL-N-002 | Max Quantity Party Size Exceeded | The total quantity of the selected package(s)/menu(s) exceeds the booking's party size | No |
BKRUL-N-003 | Max Quantity Exceeded | The total quantity of the selected package(s)/menu(s) exceeds the operator-configured maximum per booking | No |
BKRUL-N-004 | Preorder Required For Party Size | The party size meets or exceeds the operator's pre-order threshold, but no qualifying pre-order item is included | No |
BKRUL-N-005 | Preorder Edits Locked | Adding or changing pre-order items is not permitted this close to the booking date for this partner category | No |
BKRUL-N-006 | Deposit Required | The booking does not carry the deposit an operator rule requires (per person or per booking); collect it and resend with depositAmount | No |
BKRUL-N-007 | Amendment Window Closed | An operator booking-window rule (BOO-823) stops channels amending this booking: the reservation starts in fewer hours than the rule allows. Measured from the booking's stored start, so moving the booking does not reopen the window; the message states when the window closed | No |
BKRUL-N-008 | Cancellation Window Closed | An operator booking-window rule (BOO-823) stops channels cancelling this booking: the reservation starts in fewer hours than the rule allows. Contact the venue to cancel; the message states when the window closed | No |
BKRUL-N-100 | Generic Rule Violation | The booking breaks an operator expression rule (generic rule, ADR-0004); the message is the rule's own text and extensions.violations lists every rejecting rule | No |
BKRUL-N-101 | Rule Invalid | The booking condition rule cannot be saved: a required parameter or target for its effect is missing or malformed | No |
BKRUL-N-102 | Target Not In Operator | One or more rule targets (product, package, menu, partner category or partner) do not belong to this operator | No |
BKRUL-N-103 | Rule Duplicate | An active booking condition rule with the same effect, targets and parameters already exists for this operator | No |
BKRUL-N-104 | Rule Not Found | The booking condition rule could not be found for this operator | No |
BKRUL-N-110 | Draft Text Required | Drafting a booking condition rule needs the operator's text (1 to 8000 characters) | No |
BKRUL-R-111 | Draft Model Failed | The drafting model did not return a usable proposal; retry, or author the rule with the form | Yes |
BKRUL-N-112 | Unknown Booking Hook | The hook filter of GET /booking-rules is not a hook the platform knows; use booking.create, booking.amend or payment | No |
BKRUL-N-113 | Venue Operator Mismatch | The venueId filter of GET /booking-rules belongs to a different operator than the operatorId filter | No |
Webhook subscription management errors (BOO-732)
| Code | Title | Description | Retryable |
|---|---|---|---|
WHK-N-001 | Subscription Not Found | No webhook subscription with that id exists for this partner | No |
WHK-N-002 | Invalid Callback URL | The callback URL must be an absolute HTTPS URL that resolves to a public address | No |
WHK-N-003 | Duplicate Callback URL | This partner already has a subscription for that callback URL | No |
WHK-N-004 | Subscription Limit Reached | This partner already holds the maximum number of webhook subscriptions | No |
WHK-N-005 | Unknown Event Type | eventTypes may only contain booking.updated, message.received or venue.updated | No |
WHK-N-006 | Test Event Not Available | Only webhook.ping test events are available in production | No |
WHK-N-007 | Invalid Test Event | The test request combines fields that do not apply to its event type | No |
Agency enquiry errors (BOO-888)
| Code | Title | Description | Retryable |
|---|---|---|---|
ENQRY-N-001 | Mailbox Not Found | No connected mailbox with this id exists for this operator | No |
ENQRY-N-002 | Enquiry Not Found | No enquiry with this id exists for this operator | No |
ENQRY-N-003 | Brief Not Ready | The enquiry's brief hasn't been read from its emails yet, so no proposal can be drafted | No |
ENQRY-N-004 | Drafting Not Supported | Proposals are only drafted for enquiries, not for listing-site notifications | No |
ENQRY-N-005 | Draft Model Failed | The drafting model failed or did not answer in time; try again | Yes |
ENQRY-N-006 | Draft Not Found | No draft with this id exists for this enquiry | No |
ENQRY-N-007 | Venue Not Found | The venue isn't one of the operator's active venues | No |
ENQRY-N-008 | Draft In Progress | A draft for this enquiry is already being written; wait for it instead of generating again | Yes |
ENQRY-N-009 | Status Not Allowed | That status change isn't allowed: confirmed comes only from a paid booking, and a confirmed enquiry's status can't be changed | No |
ENQRY-N-010 | Owner Not In Operator | The owner must be a user of this operator | No |
ENQRY-N-011 | Channel Not Connected | The channel isn't an active channel of this operator | No |
ENQRY-N-012 | Collins Booking Not Found | This operator has no synced Collins booking with that id | No |
ENQRY-N-013 | Collins Booking Already Linked | That Collins booking is already linked to another enquiry | No |
ENQRY-N-014 | Contact Not Found | No enquiry contact with this id exists for this operator | No |
ENQRY-N-015 | Contact Email Conflict | Another contact of this operator already has that email address | No |
ENQRY-N-016 | Guidance Not Found | No enquiry guidance with this id exists for this operator | No |
ENQRY-N-017 | Guidance Channel Not Connected | A channel in the guidance's scope isn't an active channel of this operator | No |
ENQRY-N-018 | Mailbox Cannot Send | The enquiry's mailbox can't send replies: it's IMAP, sending isn't enabled, or its sign-in has expired | No |
ENQRY-N-019 | Mailbox Provider Rejected | Microsoft or Google refused to send the reply | Yes |
ENQRY-N-020 | Reply In Progress | A reply with this idempotency key is still being sent | Yes |
ENQRY-N-021 | Lost Reason Not Found | No lost reason with this id exists for this operator | No |
ENQRY-N-022 | Lost Reason Unknown | The lost reason isn't one of the operator's active lost reasons | No |
ENQRY-N-023 | Lost Reason Label Taken | The operator already has an active lost reason with this label | No |
ENQRY-N-024 | Lost Reason Cannot Be Merged | The lost reason can't be merged that way: it is already merged, or the target is itself or a merged reason | No |
ENQRY-N-025 | Lost Reason Not Merged | Only a merged lost reason can be restored | No |
ENQRY-N-050 | Enquiry Channel Required | The enquiry has no channel. Assign a channel first (the operator's Direct channel for a direct enquiry): the booking is made as that channel | No |
ENQRY-N-051 | Enquiry Contact Incomplete | The enquiry's contact needs a first and last name and an email address before a booking can be made from it | No |
ENQRY-N-052 | Enquiry Payment Option Unavailable | The venue can't take this payment for this slot: the space has no minimum spend then, or the option isn't one the venue collects through Bookable | No |
ENQRY-N-053 | Enquiry Booking In Progress | A booking with this idempotency key is already being made | No |
ENQRY-N-054 | Enquiry Booking Key Reused | This idempotency key was already used for a booking from another enquiry | No |
ENQRY-R-055 | Enquiry Payment Link Failed | The booking was made but its payment link couldn't be created. Retry with the same idempotency key to try the payment again; nothing is booked twice | Yes |
ENQRY-N-056 | Enquiry Booking Outcome Unknown | The booking may have been made: something failed after it was sent to the venue's booking system. Check there before booking again; the idempotency key stays used | No |
ENQRY-N-057 | Enquiry Already Booked | The enquiry already has a booking that may be live. Send allowAdditionalBooking true to book another as well | No |
ENQRY-N-058 | Enquiry Payment In Progress | The booking's payment link is already being created by another request | No |
ENQRY-N-059 | Enquiry Not In Channel Inventory | The venue or booking type isn't in the inventory of the enquiry's channel, so the channel can't book it | No |
Booking type errors (BOO-834). PUT /venue-management/booking-types is asynchronous: a well-formed request is accepted with 202 and a batchId, and each venue+booking type target succeeds or fails later in the background processor. Codes below are therefore split into two groups. The first group is returned as a ProblemDetails on the request itself. The second is recorded on the history row and read back via GET /venue-management/booking-types/{batchId}/history - those never appear as an HTTP status. Read a history row's status BEFORE its errorCode: a retryable code can sit on a row that is still Pending and will be retried automatically, which is not a failure.
| Code | Title | Description | Retryable |
|---|---|---|---|
BTYPE-N-001 | Invalid Target Identifier | A target could not be decoded. Each must be a composite venueGroupId|rmsSlug|venueId|bookingTypeId with all four parts. | No |
BTYPE-N-002 | No Changes Specified | The request carried no change. Supply at least one of name, preorderSettings, bookingRules or overrides; a preorderSettings block needs at least one field, and bookingRules or overrides at least one entry. | No |
BTYPE-N-003 | Targets Span Multiple Venue Groups | All targets in one request must belong to the same venue group and RMS. | No |
BTYPE-N-004 | Targets Not Found | One or more venue+booking type targets do not exist in the venue group. The missing targets are listed in the targets extension. Nothing was queued. | No |
BTYPE-N-005 | Preorder Menus Not Found | A menu in menuRules.add does not exist at one or more target venues. The venue and menu pairs are listed in the menus extension. Nothing was queued. | No |
BTYPE-N-006 | Invalid Preorder Settings | The pre-order settings are inconsistent: a percentage outside 0-100, paymentPercentage without paymentRequired percentage, a lower bound above its upper bound, or an unparseable time or date. | No |
BTYPE-N-007 | Duplicate Targets | The same venue+booking type target appears more than once. List each target once. | No |
BTYPE-R-001 | Venue Batch Already In Progress | One or more target venues already have a booking-type batch queued or being written. The RMS write is whole-document per venue, so batches for a venue are serialised. The busy venues are listed in the venueIds extension. Retry once the in-flight batch completes. | Yes |
BTYPE-N-008 | Batch Not Found | No booking-type batch exists with this id. | No |
BTYPE-N-009 | Batch Access Denied | The batch belongs to a venue group the caller cannot access. | No |
BTYPE-N-010 | Booking Type Not Found | No booking type exists with this venue+booking type id. | No |
BTYPE-N-011 | RMS Write Failed | The RMS refused the write (a 4xx), or the write failed before it was sent. Nothing landed, so this is safe to resubmit. Recorded on the history row. | No |
BTYPE-N-012 | Booking Type Missing In RMS | The booking type no longer exists at this venue in the RMS (deleted since the last sync). Nothing was written for it. Recorded on the history row. | No |
BTYPE-N-013 | Preorder Menu Missing In RMS | A menu in menuRules.add no longer exists at this venue or its organisation in the RMS (deleted since the last sync). Nothing was written for this booking type. Recorded on the history row. | No |
BTYPE-N-014 | Change Not Applied | The RMS accepted the write but the booking type does not carry the change. Nothing landed, so this is safe to resubmit. Recorded on the history row. | No |
BTYPE-N-015 | Change Applied With Differences | The RMS stored the change but some fields differ from what was sent. Check the booking type's current values before resubmitting. Recorded on the history row. | No |
BTYPE-N-016 | Outcome Could Not Be Verified | The write's outcome is unknown: the RMS accepted it but returned no document to verify against, or the call timed out, lost its connection, failed with a 5xx or returned an unreadable response. This change MAY have been applied. Check the booking type's current values before resubmitting. Recorded on the history row. | No |
BTYPE-N-017 | Processing Interrupted | Processing was interrupted before the outcome could be recorded, so this change MAY have been applied. Not retried automatically. Check the booking type's current values before resubmitting. Recorded on the history row. | No |
BTYPE-N-018 | Rate Limit Retry Budget Exhausted | The RMS kept rate limiting this venue and the automatic retry window ran out. Nothing landed; resubmit later. Recorded on the history row. | No |
BTYPE-N-019 | RMS Configuration Not Found | The venue group has no RMS configuration to write with. Nothing was written. Recorded on the history row. | No |
BTYPE-R-002 | Rate Limited By RMS | The RMS rate limited this write. The row is back in Pending and will be retried automatically; no action needed. Recorded on the history row. | Yes |
BTYPE-R-003 | Venue Busy | Another venue-management write to the same venue was in progress. The row is back in Pending and will be retried automatically; no action needed. Recorded on the history row. | Yes |
BTYPE-R-004 | Requeued After Host Restart | The host shut down before this row was written. It is back in Pending and will be retried automatically; no action needed. Recorded on the history row. | Yes |
BTYPE-N-020 | Duplicate Booking Rule Weekday | The same dayOfWeek appears more than once in bookingRules. List each weekday once. | No |
BTYPE-N-021 | Invalid Booking Override Changes | The overrides section is inconsistent: an id both upserted and removed or listed twice, a clientRef shared by two creates, two creates with identical values, or a dateFrom after its dateTo. | No |
BTYPE-N-022 | Booking Overrides Not Found | An override id to update or remove does not exist on one or more targets. The target and id pairs are listed in the overrides extension. Nothing was queued. | No |
BTYPE-N-023 | Booking Override Missing In RMS | An override id to update or remove no longer exists on this booking type in the RMS (deleted since the last sync). Nothing was written for this booking type. Recorded on the history row. | No |
If you're migrating from the old error code format, here's the mapping:
| Old Code | New Code | Notes |
|---|---|---|
| USER001 | USER-N-001 | Email already in use |
| BOOKING001 | BOOK-N-001 | No RMS configurations |
| BOOKING002 | BOOK-N-002 | Booking already exists |
| BOOKING003 | BOOK-N-003 | RMS configuration not found |
| BOOKING004 | BOOK-N-004 | Missing partner source |
| BOOKING005 | BOOK-N-005 | Venue group partner association not found |
| OPERATOR_AVAILABILITY_DISABLED | OPRUL-N-001 to OPRUL-N-004 | Now split into 4 specific codes based on rule type |
| VENUE001 | VENUE-N-001 | Invalid pagination cursor |
| IDENTITY001 | IDENT-N-001 | Invalid identity |
| IDENTITY002 | IDENT-N-002 | Invalid partner reference |
Errors with isRetryable: true indicate transient failures that may succeed if retried:
- Implement exponential backoff
- Limit retry attempts (recommended: 3-5 attempts)
- Examples: Rate limits (429), temporary service unavailability
Errors with isRetryable: false indicate permanent failures:
- Do not retry with the same input
- Modify request parameters or contact support
- Examples: Invalid data (400), unauthorized (401), not found (404)
For questions or issues with error codes, please contact api-support@bookingsgroup.com.
Last updated: 2026-10-02 06:19:13 UTC Version: 2.0 This file is auto-generated from ErrorCatalog.yaml - DO NOT EDIT MANUALLY