Transaction Tracking

Track the status of a cross-chain swap with GET /transaction/{requestId}.

Obtaining the requestId

The requestId is emitted in the ComplexOpProcessed event on the source chain after the transaction is confirmed. You can extract it from the transaction receipt.

Response structure

{
  "status": "inProgress",
  "inconsistency": false,
  "source": {
    "chainId": 11155111,
    "transactionHash": "0x...",
    "from": "0x...",
    "events": [],
    "status": "completed"
  },
  "oracle": {
    "relayChainId": 11155111,
    "requestId": "0x...",
    "status": "inProgress",
    "height": null,
    "epoch": null,
    "time": null
  },
  "destination": {
    "chainId": 64165,
    "transactionHash": null,
    "events": [],
    "emergency": false,
    "status": "inProgress",
    "bridgeState": {},
    "error": null
  },
  "data": null
}

The response contains three sub-objects representing each phase of the cross-chain operation:

Sub-object
Description

source

Status on the originating chain

oracle

Validator confirmation status

destination

Status on the target chain

destination.emergency becomes true if over 30 minutes pass without completion.

Top-level status values

Status
Final?
Description

inProgress

No

Transaction is being processed

completed

Yes

Successfully completed

failed

Yes

An error occurred

reverted

Yes

Reverted (emergency completion is available)

retry

No

Delivery is being retried

canceled

Yes

Transaction was canceled

Polling recommendations

  • Poll every 10-15 seconds.

  • Set a 15 minute timeout.

  • Stop polling when the top-level status reaches a final state (completed, failed, reverted, or canceled).


Last updated