Skip to content
ApiqDevelopers
API v1.64.0Open console

List order events

GET/v1/orders/{orderRef}/events
Accepts X-Api-Key · oauthClientCredentials · bearer

The order's timeline — its events, oldest first, in the GET /v1/events vocabulary

One order's events, in the same WebhookEnvelope / EventPage shape and the same event-type catalog as GET /v1/events and webhook deliveries, so a timeline, the replay feed and a webhook receiver read…Show moreOne order's events, in the same WebhookEnvelope / EventPage shape and the same event-type catalog as GET /v1/events and webhook deliveries, so a timeline, the replay feed and a webhook receiver read one vocabulary. Reconciliation is not a separate event type: entering and leaving PENDING_RECONCILIATION are order.state_changed transitions carrying data.from and data.to. payment.* events that carry this orderRef belong on the timeline too. Oldest first; `cursor` continues where nextCursor left off, `type` filters to one event type, both with GET /v1/events' semantics. actor is optional, and actor.kind = ai is mandatory on AI-initiated events (the envelope law). Same permission as the order read: orders:read plus the tab permission of the order's domain; an absent or another tenant's order is a 404. Read-path failures: a `cursor` this route never issued is 400 VALIDATION (details.field cursor), not an empty page; when the order store times out the answer is 502 UPSTREAM_UNAVAILABLE, retryable true; when the deployment has no order reader assembled it is 501 NOT_IMPLEMENTED, retryable false.

Path parameters

  • orderRefstringRequired
    MO-XXX-XXX-XXX; BK- retained as read alias

Query parameters

  • cursorstringOptional
    The nextCursor of the previous page; absent for the first page.
  • typestringOptional
    Only events of this type, for example order.state_changed.

Request body

This operation takes no request body.

Responses

  • 200The order's events, oldest first, with a next cursor when more remainOrderEventsResponse
  • 400VALIDATION or UNKNOWN_DOMAINApiErrorResponse
  • 401
    UNAUTHENTICATED — missing or expired token.Show moreUNAUTHENTICATED — missing or expired token. Declared on every operation because `security` is declared globally at the document root: every route is authenticated, so every route can answer 401.
    ApiErrorResponse
  • 403
    AGENT_TIER_INSUFFICIENT, also 403, is a request whose agent tier does not allow the tool class; it carries nextAction verify_agent and details.tier, details.required, details.toolClass and…Show moreAGENT_TIER_INSUFFICIENT, also 403, is a request whose agent tier does not allow the tool class; it carries nextAction verify_agent and details.tier, details.required, details.toolClass and details.operationId. A ceiling only narrows an unverified caller and never widens a scope.
    ApiErrorResponse
  • 404NOT_FOUND — unknown or expired ref (unguessable refs, 15)ApiErrorResponse
  • 405
    VALIDATION — the public edge serves GET, POST, PUT, PATCH and DELETE only; any other method is refused before the platform sees it (details.reason METHOD_NOT_ALLOWED, details.source edge).Show moreVALIDATION — the public edge serves GET, POST, PUT, PATCH and DELETE only; any other method is refused before the platform sees it (details.reason METHOD_NOT_ALLOWED, details.source edge). Not retryable as sent.
    ApiErrorResponse
  • 414
    VALIDATION — the request URI (path and query string) is longer than 8 KiB; the public edge refuses it before the platform sees it (details.reason URI_TOO_LONG, details.source edge).Show moreVALIDATION — the request URI (path and query string) is longer than 8 KiB; the public edge refuses it before the platform sees it (details.reason URI_TOO_LONG, details.source edge). Not retryable as sent: send long input in the body of a POST.
    ApiErrorResponse
  • 500INTERNAL — a bug, and traceId is the support handle.ApiErrorResponse
  • 501
    NOT_IMPLEMENTED — honest fallback; every production 501 is a capabilities-doc bug.Show moreNOT_IMPLEMENTED — honest fallback; every production 501 is a capabilities-doc bug. Also the order read routes (getOrder, listOrderDocuments, listOrderEvents, searchOrders) on a deployment with no order reader assembled; not retryable.
    ApiErrorResponse
  • 502Also the order read routes (getOrder, listOrderDocuments, listOrderEvents, searchOrders) when the order store times out: details.store names the store, retryable true.ApiErrorResponse

Errors you should handle

Branch on code and honour retryable — never on the HTTP status alone.

400VALIDATION
message.intent.checkOut must be after message.intent.checkIn
not retryable
400UNKNOWN_DOMAIN
Unknown domain 'HOTELS'. Did you mean HTL?
not retryable
401UNAUTHENTICATED
The bearer token is expired. Re-authenticate and retry.
not retryable
403PERMISSION_DENIED
Role lacks the required scope: booking:write
not retryable
403TAB_DISABLED
Tenant acme-travel is not entitled to sell CRU
not retryable
403OUT_OF_SCOPE
The token's scope ladder does not reach this customer subtree
not retryable
403TENANT_MISMATCH
orderRef MO-8KD-2FQ-9XT does not belong to tenant acme-travel
not retryable
404NOT_FOUND
searchRef SR-F-7b31d0a9 is unknown or has expired; re-search
not retryable
405VALIDATION
This method is not served.
not retryable
414VALIDATION
The request URI is longer than 8 KiB.
not retryable
500INTERNAL
An unexpected error occurred. Quote the traceId to support.
retryable
501NOT_IMPLEMENTED
seatmap is NOT_APPLICABLE for HTL; GET /v1/capabilities says so
not retryable
502UPSTREAM_UNAVAILABLE
Every supplier for HTL is circuit-open; no fan-out was attempted
retryable