Error Response Format
Every error response follows the same structure:Error Codes
Validation Rules
Every field is validated on the server. Here are the rules for each field:Date Format
Strict ISO 8601. No exceptions.
When a date fails validation, the error message includes what you sent and what’s expected:
Phone Number Format
E.164 format required. Starts with+, followed by country code and number. No spaces, dashes, or parentheses.
Common Mistakes
Sending dates in DD.MM.YYYY format
Sending dates in DD.MM.YYYY format
This is the most common error for Turkish PMS integrations. Protel, Byte, and Hicell all default to
DD.MM.YYYY internally.Fix: Convert all dates to YYYY-MM-DD before sending. For example, 18.02.2026 → 2026-02-18.Missing country code on phone numbers
Missing country code on phone numbers
Sending
05551234567 instead of +905551234567. The phone field requires the full international number with country code.Fix: Prepend the country code with +. For Turkey, that’s +90. For Germany, +49. For the UK, +44.Sending roomNumber as an integer
Sending roomNumber as an integer
Sending
{"roomNumber": 301} instead of {"roomNumber": "301"}. Room numbers are strings because they can contain letters (e.g., "301A", "P2-105").Fix: Always send room numbers as strings: "301", not 301.Forgetting the Idempotency-Key header
Forgetting the Idempotency-Key header
All POST endpoints require an
Idempotency-Key header. Without it, you’ll receive a 400 error.Fix: Include Idempotency-Key: your_unique_key in every POST request. See Idempotency for key format recommendations.Reusing the same Idempotency-Key for different operations
Reusing the same Idempotency-Key for different operations
Each unique operation needs its own key. If you use the same key for two different guests, the second request will return the first guest’s cached response.Fix: Use a key format like
{operation}_{pmsGuestId}_{date}. Example: checkin_RES2026001_20260218.Checking in a guest without checking out the previous one
Checking in a guest without checking out the previous one
Handling Errors in Your Code
Here’s a recommended error handling pattern:Retry guidance:
- 4xx errors (except 429): Fix your request before retrying. Retrying the same payload will return the same error.
- 429 errors: Wait for the
retryAfterperiod, then retry. - 5xx errors: Retry with exponential backoff (1s, 2s, 4s, 8s). Include the
requestIdif contacting support.