Skip to content

Errors

Every failure is an RFC 7807 problem document with a stable machine-readable code.

  1. Problem details
  2. Codes you will meet
  3. Retrying safely

Problem details

Non-2xx responses carry application/problem+json with status, title, detail, a stable code (snake_case), an optional field naming the offending request property, and a traceId to quote when you contact support.

Example
{
  "type": "https://dubaitrip.com/docs/api/errors#price_changed",
  "title": "Price changed",
  "status": 409,
  "detail": "The fare is now 412.50 USD (was 398.00 USD). Re-price and confirm.",
  "code": "price_changed",
  "traceId": "00-3f2a…"
}

Codes you will meet

401 api_key_invalid, api_signature_invalid, api_timestamp_skew, api_nonce_reused, api_token_invalid — authentication problems. 403 api_scope_missing (your key lacks the scope), api_ip_not_allowed, api_partner_suspended. 429 api_rate_limited, api_quota_exceeded. 400 validation_failed (with field). 404 search_session_not_found, order_not_found, booking_not_found. 409 offer_expired, rate_expired, price_changed. 402 insufficient_credit (production only — top up your deposit). 502 supplier_error — the airline or hotel supplier failed; retry the search.

Retrying safely

Retry 429 after Retry-After, and 502/503/504 with exponential backoff. Never retry a 4xx other than 429. Retry commits (orders, bookings, issue, cancel) only with the same Idempotency-Key. If a search session expires (404), start a new search — offer IDs and rate keys are not valid across sessions.