Asynchronous operations
Some on-chain operations don't settle in the transaction that triggers them. You submit a request now, and the funds it produces arrive at the intermediary account later — minutes, hours, or even days afterwards. There is no way to say "do the request, wait for settlement, then bridge the result out" inside a single execution, so model it as two separate executions:
Trigger the async operation with
POST /api/v1/executions/{wallet}/steps.Once the settled funds (a 1Click-supported token) land at the intermediary, move them to another network with
POST /api/v1/executions/{wallet}.
TL;DR
Trigger — call
POST /api/v1/executions/{wallet}/stepswith the steps that submit the request (e.g. anapprove+ a request-redeem). Nox-api-keyis needed for this endpoint.Wait — the operation settles off the critical path. When it does, the payout token (e.g. USDC — anything 1Click supports) arrives at the intermediary account on the destination chain.
Move — call
POST /api/v1/executions/{wallet}with a quote andoutOperation: trueto bridge the settled funds to another network. This endpoint requires anx-api-keyheader.
Why two executions
Request-style flows (request-then-redeem, queued withdrawals, epoch-based unstaking, …) only enqueue the operation in the triggering transaction. The payout is produced asynchronously, so it cannot be bridged in the same transaction — at trigger time the funds don't exist yet.
The intermediary account is the constant across both executions: the trigger runs there, the settled funds arrive there, and the second execution spends from there. So you split the work along the settlement boundary — one execution to start the operation, a second one to move the result once it's real.
The intermediary account
The intermediary is a deterministic EVM address derived from the wallet. It is where steps execute and where bridged or settled funds land on the destination chain. Fetch it before building steps:
GET /api/v1/executions/{wallet}/intermediary{ "result": { "evm": "0x3eb032bca9a6ceeb8ce69fdf4ec79187fdddd25e" } }Two things to keep in mind:
It must already hold the destination token to pay gas on step 1. The
/stepsexecution collects its network fee in the destination token, so the intermediary needs a balance there before you triggerThe settled funds arrive here, not at the user's wallet. That is exactly why step 2 exists: to forward them on.
Step 1 — trigger the async operation (/steps)
/steps)POST /api/v1/executions/{wallet}/steps runs your steps against the funds the intermediary already holds — no bridge, no quote. Submit the steps that enqueue the operation:
Notes:
destinationAssetis the token the operation eventually pays out (here, USDC on Base). It is required.Neither step above calls the USDC contract — they only touch the vault. The
/stepsendpoint rejects step sets that never call the destination token, so you'll need to append a zero-value transfer to satisfy that guardThis endpoint does not require
x-api-key.
The execution returns a payload to sign and submit (see Signing & status). Once submitted, the request is enqueued on-chain and you wait for settlement.
Step 2 — move settled funds to another network
When the operation settles and the payout token is at the intermediary, bridge it out with the quote-backed endpoint:
originAssetis the settled token now held by the intermediary;destinationAssetis where the user wants it.outOperation: trueexecutes on the origin chain and bridges the output to the destination via 1Click.This endpoint requires
x-api-key— it fetches a 1Click quote and prices per-key fees server-side.
Last updated
