GET /v1/order/{orderId}/status
The aggregator-backed projection of an openFor order.
One of the hub’s three status views — the advisory one. Which view answers which question:
Order lifecycle.
Request
Path parameters
Response
data (UpstreamOrderStatus):
Behavior
- This is advisory. Neither
finalized,settlednorfilledproves settlement; use the on-chain views for observed facts. - States only move forward:
created<pending<executing<executed<settling<settled<finalized, withfailedandrefundedreachable from any non-terminal state. The terminal states arefinalized,failedandrefunded:settledcan still become any of them. A backwards, unknown or contradictory report is not applied: it setsrejectedUpstreamTransitionandupstreamStaleand keeps the previous state. - Served from a 2-second cache; when a refresh fails the last good state is served with
upstreamStale: true. - Stop polling at
finalized,failedorrefunded, and do not present any of them as verified finality. - Give the loop a stall rule. An EVM gasless order can stay
executedlong after it filled and settled on chain, with fresh syncs,upstreamStale: falseand nofillTransaction;settledmay never be reported (known issue). Once the order reachesexecuted, readGET /onchain/{orderId}/fillwith itsonchainOrderId(fromGET /orders): itsfilledandsettledfacts are the chain’s answer. Hand off to it after a few minutes without progress. The chain facts are open to your project id too; a page, which cannot list orders, takes the on-chain id from the order it submitted: on the escrow lanes the openFor ack’sorderIdis the on-chain id, and the SDK’sexecuteQuotefinds it for you. - Open to a project id, like every route but
GET /orders. Anyone who holds your project id and one of your order ids can read that order’s status. Nothing lists the ids to a page.
Errors
The gateway’s own refusals — a refused credential, a route not open to it, a rate limit, the hub unreachable or too slow — can come back from every route, with an
EPX code and a real HTTP status (Errors — gateway codes); EIN0049 (internal, scrubbed) can come back from any route.
Example
Response
Illustrative values; formats follow the Response table.failedAt/failureReason are absent: this order is not on the failure arm. The first at is the
hub’s first read, three seconds after the ack’s submittedAt.
See also
- SDK:
client.api.getOrderStatus();client.trackOrder()polls it together with the chain facts (Tracking) - Order lifecycle
- Execution errors