Documentation Index
Fetch the complete documentation index at: https://docs.travelbase.ai/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Travelbase removes all guesswork from retry logic. Every error response includes aretryable flag and a fault field — your code never needs to
maintain a list of retryable status codes or infer blame from HTTP semantics.
retryable
A boolean telling you directly whether this exact error is safe to
retry. If
false, retrying the same request will produce the same error.fault
"server" means Travelbase caused the failure. "client" means something
in your request needs to be fixed before retrying.Error Response Shape
Every error from the Travelbase API follows this consistent envelope. Theretryable, errorCode, fault fields are your source of truth for retry decisions — not the HTTP status code.
Always drive retry decisions from
retryable and fault — not the HTTP
status code. The status code is a useful hint, but these two fields are the
source of truth.Decision Matrix
Useretryable and fault together to decide your next move.
retryable | fault | What to do |
|---|---|---|
true | "server" | Back off and retry — Travelbase had a transient fault. |
true | "client" | Wait for the condition to clear (e.g. rate limit), then retry. |
false | "server" | Do not retry. Contact support — this is an unexpected server-side error. |
false | "client" | Fix your request (auth, validation, missing resource) and resubmit a corrected payload. |
Backoff Strategy
For everyretryable: true response, use exponential backoff with jitter.
Always honour the Retry-After header when it is present.
Idempotency Keys
retryable: true on a mutating request (POST, PATCH, DELETE) is only
safe to act on when you include an Idempotency-Key. Without one, a retry
may create duplicates or trigger the same side-effect twice.
Retry Limits
Max Attempts
Cap at 5 attempts per request. After that, surface the error to the
caller rather than retrying indefinitely.
Max Backoff
Clamp the delay to a 30-second ceiling to prevent exponential growth
from producing multi-minute waits.
Total Budget
Set a 2-minute total timeout across all attempts. Abort the entire
operation once exceeded, regardless of attempt count.

