Errors
The Agency API uses standard HTTP status codes.
| Status | Meaning |
|---|---|
200 OK | Request succeeded (reads: Search, Extras, History, Get, List/Get webhook). |
201 Created | A webhook was registered. |
202 Accepted | A booking or cancellation was accepted for asynchronous processing — poll the attempt, or use webhooks, for the final outcome. |
204 No Content | A webhook was deleted. |
400 Bad Request | The request body failed validation, or (for Create/Cancel) a walletId was supplied that doesn't match your own authenticated wallet. |
401 Unauthorized | No credential was supplied, or it doesn't match a valid, enabled, non-revoked API key. |
403 Forbidden | Your API key is valid but not scoped for this endpoint. |
404 Not Found | The resource doesn't exist, or it exists but belongs to a different tenant. This API deliberately returns 404, not 403, when a resource exists but isn't yours — it doesn't confirm to an unauthorized caller that a given ID exists at all. Scope errors above are the one deliberate exception: your own key's scopes aren't sensitive information, so those return a real 403. |
429 Too Many Requests | You've exceeded your tenant's rate limit. Back off and retry — rate limits are tracked per tenant, not shared across agencies. |
A note on booking outcomes
A booking attempt reaching Failed (via GET /api/v1/FlightBooking/{attemptId} or a
flight_booking.failed webhook) is not an HTTP error — the request to create the
attempt succeeded (202 Accepted); Failed is one of several possible final states of
that attempt, and no charge was made. See the booking flow guide
for the full set of terminal states.