GET /intent-factory/status returns the status of one escrow that a continuation.settle node registered. The status comes unchanged from LI.FI’s settlement service (intent-factory). Use it to track a continuation, cross-chain or same-chain, to completion or refund. For the bridge of a cross-chain flow, poll LI.FI’s /v1/status.
LI.FI plans a dedicated settlement status endpoint, which can have a different path and response shape. This endpoint keeps working while you move to the new one.
Request
https://composer.li.quest. It is a read-only GET: polling it never changes the escrow.
Authentication
string
required
Your LI.FI API key, the same key you pass to
createComposeSdk. A request without a key fails with 401. Keep the key on your server; see Before you start.Query parameters
Both values come from the compile response:settlements[<settle id>].escrow.chainId and settlements[<settle id>].escrow.address. Together they identify one escrow.
integer
required
The chain the escrow lives on. A positive integer. For a bridge-funded settle node this is the bridge’s destination chain, not the chain the user signed on.
string
required
The escrow address:
0x followed by 40 hex characters. A mixed-case address must carry a valid EIP-55 checksum, or the request fails with 400. An all-lowercase address is always accepted, and the lookup ignores case.Response
A200 response wraps the escrow’s state in data:
boolean
true on a 200.object
Status values
A new status value can be added in a minor Composer release. Handle unknown values in your client, for example by continuing to poll.
Typical paths
- Happy path:
AWAITING_FUNDS → READY → EXECUTING → COMPLETED. The destination flow runs at most once per escrow. - Funded but not run:
AWAITING_FUNDS → EXPIRED → AWAITING_REFUND → REFUNDEDfor an escrow that holds funds belowescrow.floor, andREADY → EXPIRED → AWAITING_REFUND → REFUNDEDfor aREADYescrow whose destination flow does not run before its expiry. - Never funded:
AWAITING_FUNDS → EXPIRED, and it staysEXPIRED. There is nothing to refund. This happens when the user never sends the transaction, the bridge fails before delivering, or an external payer never pays. - Failed run:
READY → EXECUTING → FAILED_FINAL → AWAITING_REFUND → REFUNDED. A temporary failure goes back toAWAITING_FUNDSand is retried until it succeeds, fails for good, or the escrow expires.
Errors
Errors use the same envelope:{ "success": false, "error": { "type", "message" } }.
Example
404:
What to show your user
Most statuses are steps your user doesn’t need to see. A pending screen needs about five states. Map the statuses to them, and adapt the copy to your flow:
Treat an unknown status as Finishing and keep polling.
Polling
Poll the endpoint to read the escrow’s current state. Stop atCOMPLETED or REFUNDED. A REFUND_FAILED refund is retried automatically a limited number of times, so keep polling for a while before you treat it as final. Also stop when the status is still EXPIRED well past expiresAt: the escrow was never funded. The settlement service keeps checking an expired escrow for about an hour (six checks, ten minutes apart), so the sample waits 90 minutes. On 503, wait the Retry-After seconds, then retry.
waitForEscrow(escrow.chainId, escrow.address).
See also
- Cross-chain flows: how an escrow is funded, run and refunded.
- Build a cross-chain flow: the end-to-end guide.
continuation.settleerrors: errors fromPOST /composefor a settle node.

