Skip to main content
After you execute a swap, track it to a terminal state. You can poll the swap status endpoint with the quote’s quoteId, or subscribe to live WebSocket updates keyed by the wallet address. Both reach the same outcome — poll when a request/response loop is enough, subscribe when you want push updates without polling.
quote.quoteId and the top-level id identify different resources. quoteId tracks the saved swap quote — it is the {id} for GET /v2/swap/status/{id}. The top-level id is the Action id — use it with GET /actions/{id} and to correlate WebSocket action_update events.

Poll swap status

Track onramp, offramp, swap, and yield quote flows with the Swap v2 status endpoint, using the quote.quoteId from the quote response.
Successful response (trimmed to the fields you branch on):
Poll until status is terminal (fulfilled, expired, failed, or refunded).
Already have the mined transaction hash? Report it with POST /v2/swap/status/{id}/update/{txHash} so the API processes it immediately instead of waiting for indexer webhooks, then poll GET /v2/swap/status/{id} for the outcome. Resubmissions are idempotent.
Subscribe to live updates instead of polling. Connect, subscribe to the wallet channel, and listen for action_update events.
Listen for action_update events where action.id matches the top-level id from the quote/execution response: Re-subscribe on reconnect. Alternatively, use your customer webhook (ACTION_UPDATE events) — set a per-quote webhookURL on the quote to override the default endpoint.

Action execution status

For on-chain execution progress (as opposed to quote settlement), poll the Action by the top-level id:
Use this when you need the execution/Action state; use GET /v2/swap/status/{quoteId} for quote settlement. Reference: