Quick Reference
All endpoints accept two query parameters:
chainId— source chain ID (number)txHash— source transaction hash (string,0x+ 64 hex characters)
Status Lifecycle
Bridge transactions progress through a unified status lifecycle:pending— Source transaction confirmed, bridge protocol hasn’t picked it up yetinflight— Bridge protocol is processing the cross-chain messagedelivered— Tokens and callbacks successfully delivered on the destination chainfailed— Bridge or callback execution failed (checkerrorandensoDestinationEventfor details)ready_for_manual_execution— Funds are recoverable, but the destination action needs manual completion: claim an attested CCTP transfer or retry a stored Stargate payloadunknown— Status could not be determined
Identifying the Bridge Protocol
- Route API
- Bundle API
When using the Route API, the response tells you which bridge was automatically selected:
- Check the
routearray for the hop whereaction === "bridge"— itsprotocolfield contains the bridge protocol - The
bridgingEstimatesarray provides the protocol name and estimated delivery time
Status Check Endpoints
CCIP (Chainlink)
CCIP (Chainlink)
GET /api/v1/ccip/bridge/check — Check Chainlink CCIP bridge transaction status.CCTP (Circle)
CCTP (Circle)
GET /api/v1/cctp/bridge/check — Check Circle CCTP v2 bridge transaction status.Fast vs Standard detection: After the burn is attested,
transferType
is set from finalityThresholdExecuted (≤ 1000 = fast, ≥ 2000 =
standard). This is the actual path Circle took — it can differ from your
requested protocolArgs.transferType if Fast allowance was exhausted or the source
chain didn’t support Fast.Forwarding Service transfers: For a CCTP transfer with a forwarding hook,
including a HyperCore deposit,
status is delivered only after
forward.state is complete. A Circle message marked complete can remain
inflight while forwarding is pending, or return failed with the forwarding
error details. Enso verifies the destination MessageTransmitter nonce before
returning a non-delivered result, so a consumed nonce is reported as
delivered even if Iris still has a stale forwarding failure state.Attested plain transfers:
ready_for_manual_execution means Circle has
attested a transfer without a forwarding hook, but the destination
receiveMessage mint has not run yet. Use the claim endpoint above. Enso
keeps delivered when it cannot read the destination nonce, so temporary RPC
failures do not falsely report that action is required.Upstream source: this endpoint is backed by Circle’s Iris
GET /v2/messages/{sourceDomainId} —
Enso wraps it with on-chain enrichment (token metadata, chain IDs decoded from
CCTP domains, executed-fee vs requested-fee). See Circle’s supported
blockchains
matrix
for which chains support Fast Transfer.Relay
Relay
GET /api/v1/relay/bridge/check — Check Relay bridge transaction status.Stargate
Stargate
GET /api/v1/stargate/bridge/check — Check Stargate (LayerZero) bridge transaction status.Multi-hop support: Stargate supports multi-hop transactions (up to 5
sequential bridges). When
isMultiBridge is true, the hops array contains
per-hop status tracking with individual sourceChainId, destinationChainId,
status, and layerZeroMessage fields.Stored LayerZero payloads:
ready_for_manual_execution means a
LayerZero message is blocked or stored and needs a retry or clearance before
delivery can continue. It does not mean the funds are lost.Callback Execution Events
Stargate, CCIP, and Relay include bothensoSourceEvent and ensoDestinationEvent in their responses — these track whether Enso’s callback logic executed successfully on each chain.
CCTP returns only ensoSourceEvent. The destination side is Circle receiveMessage execution, including HyperCore forwarding when requested, so there is no Enso destination callback event.
When a callback fails,
refundDetails provides information about where funds were sent:
Resources
- Crosschain Routing Guide — How to build crosschain transactions
- Crosschain Bridges — Bridge protocol use cases and examples
- Bridge Action Reference — Technical details on bridge parameters
Updated
