GetOrder takes the quote hash and returns everything known about it: the quote, the order, the deposit, and the fulfillment or refund.
Until the deposit is indexed, GetOrder returns NOT_FOUND with order not found. Between the deposit landing and the indexer seeing it that is normal for the first seconds; keep polling. A Sui deposit that swaps first has a stage before the deposit: the user’s transaction only opens a swap intent, and the deposit appears once the relayer has run the swap. GetSourceSwap reports that stage. When it says executed, the order exists or is about to; when it says lapsed, no deposit will come from that intent and nothing left the user’s wallet. The SDK’s swap step does this polling for you.

Polling

Poll every couple of seconds, treat NOT_FOUND as waiting, and stop on a terminal state.
Polling is the supported pattern for tracking one order; keep the interval at a couple of seconds and it stays well inside rate limits. An integrator that follows every order, such as an explorer, can use StreamOrderUpdates instead. There is no webhook.

What to render

See Order lifecycle for what each state means.
dst_tx_hash is set when a transaction is submitted, not when it confirms. Only the order state tells you the funds arrived.
GetChains returns URL templates per chain. Substitute the hash or address rather than assembling explorer URLs yourself:
The Blink explorer page for an order is https://hular.dev/explorer/<quote_hash>.

Finding orders another way

Search is what a support box should call: it accepts whichever hash the user has in hand.

Pagination

Listing RPCs are cursor-paginated. Pass next_cursor from the previous page; an absent cursor means the end.
Default page size is 20 and the maximum is 100; larger values are clamped rather than rejected. Cursors are opaque; do not parse or construct them.