Skip to main content
In Omnibeds a failure is explained, never hidden. Every error a user sees carries a reason in plain words, and an unexpected one also carries the id of a trace that holds the technical detail and the supplier payloads.

One error format

Every failed API call answers with the same body:
Some errors add fields: issues for invalid input, problems when a room rule is broken, and check when an offer was refreshed. There are two kinds of failure:
  • An expected refusal (a rule, a missing record, a stale price) answers with its code and message. Nothing is logged.
  • Anything else is explained, logged as a trace, and answered with the trace’s id. In the screen, the error offers Open log, which opens that trace in the Inspector in a new window.

Common codes

Quote rules that aren’t listed above answer 409.

Traces and the Inspector

Every search, price check, booking and cancellation is recorded as a trace: one span per supplier step, with timings, retries, whether the cache answered, and the raw request and response next to what we made of it.
  • Traces are kept for 7 days, and at most the newest 300.
  • Secrets in payloads are masked before they are stored.
  • Confidential suppliers’ payloads are only shown in presenter mode. See Confidential suppliers.
  • Very large payloads are shown as a preview with a download, so the Inspector stays fast.

Health

The Health page is computed from the same spans: for each supplier, the median and 95th-percentile latency, error and timeout counts, the cache hit ratio and the circuit breaker’s state.

API usage

The API usage page counts live calls to real suppliers per day, so you can see how much of each quota is used. A small counter in the top bar shows the same.