Error codes returned by the hotel booking flow: search rates, prebook, and book.
Use error.code to handle failures in your integration.
Error response format:
{
"error": {
"code": 4002,
"message": "required request field is missing or wrong input",
"description": "offerId field missing or empty"
}
}| Field | Meaning |
|---|---|
code | Stable numeric error code — match on this |
message | Short, generic error label |
description | Optional detail for this specific failure |
Tips
- Match on
error.code, not HTTP status. Status codes can vary for the same error (for example, no availability on rates search returns HTTP 200 with code2001). - Prefer
descriptionfor display to end users when it is present; otherwise usemessage.
Endpoints
| Step | Method | Path |
|---|---|---|
| Search rates | POST | /v3.0/hotels/rates |
| Prebook | POST | /v3.0/rates/prebook |
| Get prebook | GET | /v3.0/prebooks/{prebookId} |
| Book | POST | /v3.0/rates/book |
Shared errors
These can appear on any authenticated request.
| Code | HTTP | Message | What it means | What to do |
|---|---|---|---|---|
| 401 | 401 | unauthorized | API key missing or invalid | Check your API key header |
| 40302 | 403 | user is suspended | Account is suspended | Contact LiteAPI support |
| 4290 | 429 | You have exceeded the allowed request limit | Too many requests | Back off and retry later |
| 4291 | 5xx | Unexpected error happened during rate limit checking | Temporary rate-limit system issue | Retry; contact support if it persists |
Search rates — POST /v3.0/hotels/rates
POST /v3.0/hotels/rates| Code | HTTP | Message | What it means | What to do |
|---|---|---|---|---|
| 2001 | 200 | no availability found | No rates for the search criteria | Try different hotels, dates, or occupancy |
| 4000 | 400 | bad request | Invalid request (for example unknown hotel IDs, invalid sort or payment types, or conflicting markup fields) | Fix the request body and retry |
| 4002 | 400 | required request field is missing or wrong input | Required field missing or invalid (occupancies, checkin, checkout, guestNationality, currency, boardType, or too many hotelIds) | Correct the field and retry |
| 40020 | 400 | Feed not found | Unknown or invalid feed | Use a valid feed for your account |
| 4011 | 408 / 500 | suppliers communication error | Upstream supplier timed out or failed | Retry the search |
Prebook — POST /v3.0/rates/prebook
POST /v3.0/rates/prebook| Code | HTTP | Message | What it means | What to do |
|---|---|---|---|---|
| 2001 | 400 / 409 | no availability found | Offer no longer available, or the price changed and cannot be honored | Search again and prebook a fresh offer |
| 2013 | 500 | booking failed | Booking could not proceed (for example voucher configuration issue) | Check the voucher or try again; contact support if it persists |
| 4000 | 400 | bad request | Request validation failed (for example add-ons) | Fix the request and retry |
| 4002 | 400 | required request field is missing or wrong input | Missing/invalid offerId, voucher problem, or invalid hotel | Fix the field or voucher and retry |
| 4003 | 400 | request field is invalid or wrong | Invalid field value (for example add-on price, payment gateway, or Stripe setup) | Correct the field or complete Stripe setup in the dashboard |
| 4016 | 408 | prebook timeout exceeded, please consider increasing the timeout value | Prebook took too long | Increase timeout and retry, or search again |
| 4020 | 500 | — | Hotel could not be loaded for this offer | Search again with a valid hotel/offer |
| 5000 | 400 / 500 | unable to process request | Temporary or unexpected failure (offer not found, provider error, payment or save failure) | Retry; if it continues, search again or contact support |
| 50071 | 500 | Error creating provider order | Travel-protection offer could not be created | Retry without the add-on, or contact support |
Get prebook — GET /v3.0/prebooks/{prebookId}
GET /v3.0/prebooks/{prebookId}| Code | HTTP | Message | What it means | What to do |
|---|---|---|---|---|
| 4004 | 400 | entity not found | Prebook ID does not exist (or is not yours) | Use a valid prebookId from a successful prebook |
| 5000 | 400 / 500 | unable to process request | Could not load or process the prebook | Retry; contact support if it persists |
Book — POST /v3.0/rates/book
POST /v3.0/rates/book| Code | HTTP | Message | What it means | What to do |
|---|---|---|---|---|
| 2001 | 409 | no availability found | The prebooked rate is no longer available | Search and prebook again |
| 2013 | 403 / 5xx | booking failed | Booking rejected or provider returned an unsuccessful response | Do not retry blindly; search again or contact support |
| 2014 | 400 / 500 | booking incomplete | Payment or booking confirmation did not finish | Check payment status; contact support before charging again |
| 4000 | 400 | bad request | Unsupported or invalid payment method / request | Fix payment details and retry |
| 4002 | 400 | required request field is missing or wrong input | Missing prebookId, payment details, guest/card fields, or invalid prebook | Complete required fields and retry |
| 4003 | 400 | request field is invalid or wrong | Invalid payment method, gateway, or token | Correct payment fields and retry |
| 4005 | 400 | duplicate booking attempt with existing client reference | clientReference was already used | Use a unique clientReference |
| 4006 | 400 | the provided payment token is malformed | Payment token is malformed | Create a new payment token |
| 4007 | 400 | the provided payment token is expired | Payment token expired | Create a new payment token |
| 40010 | 400 | the provided payment token has an invalid signature | Payment token signature invalid | Create a new payment token |
| 40011 | 400 | the provided payment token is not valid yet | Payment token not yet valid | Wait or create a new token |
| 40012 | 400 | the provided payment token is missing a transaction id | Token missing transaction ID | Use a complete payment token |
| 40013 | 400 | the provided payment token is missing a payment provider | Token missing payment provider | Use a complete payment token |
| 40014 | 400 | the provided payment token is missing a prebook id | Token missing prebook ID | Use a token issued for this prebook |
| 40021 | 400 | credit line is suspended | Credit line cannot be used | Contact support or use another payment method |
| 4012 | 4xx / 5xx | booking is not confirmed. The room(s) may no longer be available or the rate expired | Provider did not confirm the booking | Search and prebook again |
| 40900 | 409 | booking amendment already exists | A rebook for this prebook was already completed | Do not submit the same rebook again |
| 5000 | 400 / 401 / 500 | unable to process request | Temporary or unexpected failure | Retry carefully; contact support if payment may have been taken |
| 50062 | 400 / 500 | credit line backup payment failed | Credit-line backup payment failed | Contact support or use another payment method |
| 50066 | 500 | Error creating provider order | Travel-protection order could not be created | Contact support; booking may need manual review |
| 50067 | 500 | Error purchasing provider order | Travel-protection purchase failed | Contact support; booking may need manual review |
| 50071 | 500 | Error creating provider order | Travel-protection offer could not be fetched | Contact support; booking may need manual review |
Integration Notes
- This page covers hotel rates, prebook, and book only. Flight errors are documented separately.
- For payment SDK flows, treat
2014(booking incomplete) and payment-token errors (4006–40014) carefully to avoid duplicate charges. - After
2001or4012on prebook/book, always run a new rates search before trying again.

