---
title: "GET /v1/relayer/status/{taskId}"
method: GET
path: "/v1/relayer/status/{taskId}"
---

# GET /v1/relayer/status/{taskId}

`GET /v1/relayer/status/{taskId}`

## Request

- Base URL: `https://li.quest`
- URL: `https://li.quest/v1/relayer/status/{taskId}`
- Auth: none declared
- TypeScript: <https://skmtc.dev/lifi/apis/li-fi-api/docs/v1/relayer/status/:taskId/get.ts> (a function with typed inputs; its response is checked against the schema)

Cross chain relay transfers might take a while to complete. Waiting on the transaction on the sending chain doesn't help here. For this reason we build a simple endpoint that let's you check the status of your transfer.
Important: The endpoint returns a `200` successful response even if the transaction can not be found. This behavior accounts for the case that the transaction hash is valid but the transaction has not been mined yet.
While non of the parameters `fromChain`, `toChain` and `bridge` are required, passing the `fromChain` parameter will speed up the request and is therefore encouraged.
If you want to learn more about how to use this endpoint please have a look at our [guide](/introduction/user-flows-and-examples/status-tracking).

## Response `200`

- RelayTransactionStatusResponse
  - `status` string
  - `data` RelayTransactionStatus, required: Status details of a relay transaction
    - `status` string
    - `message` string
    - `metadata` RelayTransactionMetadata: Extra information about a relay transaction
      - `chainId` integer
      - `txHash` string
    - `transactionStatus` StatusResponse: The current status of a transfer
      - `sending` TransactionInfo, required: A transaction info object
        - `txHash` string, required: The hash of the transaction
        - `txLink` string, required: Link to a block explorer showing the transaction
        - `amount` string, required: The amount of the transaction
        - `token` Token, required: Representation of a Token
          - `address` string, required: Address of the token
          - `decimals` number, required: Number of decimals the token uses
          - `symbol` string, required: Symbol of the token
          - `chainId` number, required: Id of the token's chain
          - `coinKey` string: Identifier for the token
          - `name` string, required: Name of the token
          - `logoURI` string: Logo of the token
          - `priceUSD` string: Token price in USD
        - `chainId` number, required: The id of the chain
        - `gasToken` Token: Representation of a Token
          - `address` string, required: Address of the token
          - `decimals` number, required: Number of decimals the token uses
          - `symbol` string, required: Symbol of the token
          - `chainId` number, required: Id of the token's chain
          - `coinKey` string: Identifier for the token
          - `name` string, required: Name of the token
          - `logoURI` string: Logo of the token
          - `priceUSD` string: Token price in USD
        - `gasAmount` string: The amount of the gas that was paid
        - `gasAmountUSD` string: The amount of the gas that was paid in USD
        - `gasPrice` string: The price of the gas
        - `gasUsed` string: The amount of the gas that was used
        - `timestamp` number: The transaction timestamp
        - `value` string: The transaction value
        - `includedSteps` IncludedSwapSteps[]: An array of swap or protocol steps included in the LI.FI transaction
          - `tool` string: The tool used for this step
          - `toolDetails` object: The details of the tool used for this step. E.g. `1inch` or `feeProtocol`
            - `key` string: The tool key
            - `name` string: The tool name
            - `logoURI` string: The tool logo URL
          - `fromAmount` string: The amount that was sent to the tool
          - `fromToken` string: The token that was sent to the tool
          - `toAmount` string: The amount that was received from the tool
          - `toToken` string: The token that was received from the tool
          - `bridgedAmount` string: The amount that was sent to the bridge
      - `receiving` TransactionInfo: A transaction info object
        - `txHash` string, required: The hash of the transaction
        - `txLink` string, required: Link to a block explorer showing the transaction
        - `amount` string, required: The amount of the transaction
        - `token` Token, required: Representation of a Token
          - `address` string, required: Address of the token
          - `decimals` number, required: Number of decimals the token uses
          - `symbol` string, required: Symbol of the token
          - `chainId` number, required: Id of the token's chain
          - `coinKey` string: Identifier for the token
          - `name` string, required: Name of the token
          - `logoURI` string: Logo of the token
          - `priceUSD` string: Token price in USD
        - `chainId` number, required: The id of the chain
        - `gasToken` Token: Representation of a Token
          - `address` string, required: Address of the token
          - `decimals` number, required: Number of decimals the token uses
          - `symbol` string, required: Symbol of the token
          - `chainId` number, required: Id of the token's chain
          - `coinKey` string: Identifier for the token
          - `name` string, required: Name of the token
          - `logoURI` string: Logo of the token
          - `priceUSD` string: Token price in USD
        - `gasAmount` string: The amount of the gas that was paid
        - `gasAmountUSD` string: The amount of the gas that was paid in USD
        - `gasPrice` string: The price of the gas
        - `gasUsed` string: The amount of the gas that was used
        - `timestamp` number: The transaction timestamp
        - `value` string: The transaction value
        - `includedSteps` IncludedSwapSteps[]: An array of swap or protocol steps included in the LI.FI transaction
          - `tool` string: The tool used for this step
          - `toolDetails` object: The details of the tool used for this step. E.g. `1inch` or `feeProtocol`
            - `key` string: The tool key
            - `name` string: The tool name
            - `logoURI` string: The tool logo URL
          - `fromAmount` string: The amount that was sent to the tool
          - `fromToken` string: The token that was sent to the tool
          - `toAmount` string: The amount that was received from the tool
          - `toToken` string: The token that was received from the tool
          - `bridgedAmount` string: The amount that was sent to the bridge
      - `feeCosts` object[]: An array of fee costs for the transaction
        - `name` string
        - `description` string
        - `percentage` string
        - `token` object
          - `address` string
          - `decimals` number
          - `symbol` string
          - `chainId` number
          - `coinKey` string
          - `name` string
          - `logoURI` string
        - `amount` string
        - `amountUSD` string
        - `included` boolean
      - `status` 'NOT_FOUND' | 'INVALID' | 'PENDING' | 'DONE' | 'FAILED', required: The current status of the transfer. Can be `PENDING`, `DONE`, `NOT_FOUND` or `FAILED`
      - `substatus` 'WAIT_SOURCE_CONFIRMATIONS' | 'WAIT_DESTINATION_TRANSACTION' | 'BRIDGE_NOT_AVAILABLE' | 'CHAIN_NOT_AVAILABLE' | 'REFUND_IN_PROGRESS' | 'UNKNOWN_ERROR' | 'COMPLETED' | 'PARTIAL' | 'REFUNDED': A more specific substatus. This is available for PENDING and DONE statuses. More information can be found here: https://docs.li.fi/introduction/user-flows-and-examples/status-tracking
      - `substatusMessage` string: A message that describes the substatus
      - `tool` string, required: The tool used for this transfer
      - `transactionId` string: The ID of this transfer (NOT a transaction hash).
      - `fromAddress` string: The address of the sender.
      - `toAddress` string: The address of the receiver.
      - `lifiExplorerLink` string: The link to the LI.FI explorer.
      - `metadata` Metadata: The metadata of the transaction which includes integrator data, etc.
        - `integrator` string: Integrator ID
      - `quote` TransferQuote: The quote that was issued for a transfer at quote time. The `action` describes what was requested and the `estimate` records the quoted amounts and costs, so they can be compared against the actual outcome reported by the status response.
        - `stepId` string, required: The id of the quoted step, matching `id` on the quote response.
        - `tool` string, required: The tool that was quoted for this transfer.
        - `type` string, required: The type of the quoted step.
        - `action` Action, required: Object describing what happens in a `Step`
          - `fromChainId` number, required: The id of the chain where the transfer should start
          - `fromAmount` string, required: The amount that should be transferred including all decimals
          - `fromToken` Token, required: Representation of a Token
            - `address` string, required: Address of the token
            - `decimals` number, required: Number of decimals the token uses
            - `symbol` string, required: Symbol of the token
            - `chainId` number, required: Id of the token's chain
            - `coinKey` string: Identifier for the token
            - `name` string, required: Name of the token
            - `logoURI` string: Logo of the token
            - `priceUSD` string: Token price in USD
          - `toChainId` number, required: The id of the chain where the transfer should end
          - `toToken` Token, required: Representation of a Token
            - `address` string, required: Address of the token
            - `decimals` number, required: Number of decimals the token uses
            - `symbol` string, required: Symbol of the token
            - `chainId` number, required: Id of the token's chain
            - `coinKey` string: Identifier for the token
            - `name` string, required: Name of the token
            - `logoURI` string: Logo of the token
            - `priceUSD` string: Token price in USD
          - `slippage` number, double: The maximum allowed slippage
          - `fromAddress` string: The sending wallet address
          - `toAddress` string: The receiving wallet address
        - `estimate` Estimate, required: An estimate for the current transfer
          - `tool` string, required: The tools that is being used for this step
          - `fromAmount` string, required: The amount that should be transferred including all decimals
          - `fromAmountUSD` string: The amount that should be transferred in USD equivalent
          - `toAmount` string, required: The estimated resulting amount of the `toToken` including all decimals
          - `toAmountMin` string, required: The minimal outcome of the transfer including all decimals. It may reflect applicable slippage and known fee-on-transfer tax adjustments.
          - `toAmountUSD` string: The estimated resulting amount of the `toToken` in USD equivalent
          - `approvalAddress` string, required: The contract address for the approval
          - `skipApproval` boolean: Optional flag indicating that this step needs no token approval, because the executing contract moves funds under the authorization already carried by the signed transaction or message.
          - `feeCosts` FeeCost[]: Fees charged on the transfer. On a `lifi` step this array is the concatenation of the fee costs of every entry in `includedSteps`, so it already contains them. Do not add both together.
            - `name` string, required: Human-readable name of the fee, for example `LIFI Fixed Fee` or `Relayer Gas fee`. Names are tool-specific free text and are not a stable enum. Do not branch on this value.
            - `description` string: Description of the fee costs
            - `percentage` string, required: The fee expressed as a fraction of the transferred amount, for example `0.0025` for 0.25%. A fee whose name contains `Fixed` may still report a non-zero fraction; do not infer the fee model from `name` or assume fixed-fee entries report `0`.
            - `token` Token, required: Representation of a Token
              - …
            - `amount` string: The fee amount in the smallest unit of `token`, before decimals are applied. Divide by `10 ** token.decimals` for a human-readable amount.
            - `amountUSD` string, required: The amount of fees in USD
            - `included` boolean, required: `true` means the fee is already accounted for in the quoted amounts and must not be added again as a separate user payment. `false` means the user pays it on top of `fromAmount`.
            - `feeSplit` object: Response-only breakdown of this fee entry's `amount` into the parties that share it. Returned for the LI.FI/integrator fee entry and for a separate `Distributions` entry when distributions are present; omitted for fees such as a relayer or bridge gas fee. For the LI.FI/integrator entry, `lifiFee`, `integratorFee`, and `intermediaryFee` (when present) are disjoint slices of its `amount`. For the `Distributions` entry, `lifiFee` and `integratorFee` are both "0"; its `amount` is the sum of its distribution recipients. `recipients[]` describes only the parent fee entry. It is a breakdown of that entry's `amount`, not an additional charge. This field is returned, not accepted: the API ignores a `feeSplit` posted in a request body, so integrations must read the split from the response instead of echoing back a previously quoted one.
              - …
          - `gasCosts` GasCost[]: Estimated network gas for the transfer. On a `lifi` step this is a single estimate for the transaction that is actually submitted. It aggregates raw gas costs from source-chain entries in `includedSteps` and, for EVM transactions, adds estimated LI.FI contract overhead. It may differ from and often exceed the sum of the source-chain per-step entries. Raw destination-chain gas costs are not added directly. Do not add the top-level and included-step arrays together.
            - `type` 'SUM' | 'APPROVE' | 'SEND' | 'FEE', required: The kind of gas cost this entry represents. - `SEND`: estimated network gas for the transaction the sender submits, normally on the source chain. This is the only value the API currently returns. - `APPROVE`: estimated network gas for a separate ERC-20 approval transaction. Reserved; approval gas is not currently returned as its own entry. - `FEE`: an execution cost charged as a fee rather than as a transaction the user signs. Reserved; such costs are currently reported in `feeCosts` instead. - `SUM`: an aggregate of the other entries. Reserved and not currently returned. Treat `APPROVE`, `FEE`, and `SUM` as forward-compatible values: handle them if they appear, but do not build a flow that depends on them.
            - `price` string: Gas price used for the estimate, in the smallest unit of the gas token per unit of gas (wei per gas on EVM chains).
            - `estimate` string: Estimated units of gas the transaction consumes
            - `limit` string: Suggested gas limit: `estimate` plus a safety buffer. Use this value when submitting the transaction, not `estimate`.
            - `amount` string, required: The estimated total gas cost in the smallest unit of the gas token. For EVM entries this is `estimate` multiplied by `price`. Other ecosystems may use chain-specific units and rounding, so consumers should treat `amount` as authoritative rather than reconstructing it from the other fields. Divide by `10 ** token.decimals` for a human-readable amount.
            - `amountUSD` string: Amount of the gas cost in USD
            - `token` Token, required: Representation of a Token
              - …
          - `executionDuration` number, required: The time needed to complete the following step
          - `data` object: Arbitrary data that depends on the the used tool
            - `bid` object
              - …
            - `bidSignature` string
            - `gasFeeInReceivingToken` string
            - `totalFee` string
            - `metaTxRelayerFee` string
            - `routerFee` string
        - `includedSteps` object[], required: The steps included in the quoted step.
          - `tool` string, required
          - `type` string, required
          - `action` Action, required: Object describing what happens in a `Step`
            - `fromChainId` number, required: The id of the chain where the transfer should start
            - `fromAmount` string, required: The amount that should be transferred including all decimals
            - `fromToken` Token, required: Representation of a Token
              - …
            - `toChainId` number, required: The id of the chain where the transfer should end
            - `toToken` Token, required: Representation of a Token
              - …
            - `slippage` number, double: The maximum allowed slippage
            - `fromAddress` string: The sending wallet address
            - `toAddress` string: The receiving wallet address
          - `estimate` Estimate, required: An estimate for the current transfer
            - `tool` string, required: The tools that is being used for this step
            - `fromAmount` string, required: The amount that should be transferred including all decimals
            - `fromAmountUSD` string: The amount that should be transferred in USD equivalent
            - `toAmount` string, required: The estimated resulting amount of the `toToken` including all decimals
            - `toAmountMin` string, required: The minimal outcome of the transfer including all decimals. It may reflect applicable slippage and known fee-on-transfer tax adjustments.
            - `toAmountUSD` string: The estimated resulting amount of the `toToken` in USD equivalent
            - `approvalAddress` string, required: The contract address for the approval
            - `skipApproval` boolean: Optional flag indicating that this step needs no token approval, because the executing contract moves funds under the authorization already carried by the signed transaction or message.
            - `feeCosts` FeeCost[]: Fees charged on the transfer. On a `lifi` step this array is the concatenation of the fee costs of every entry in `includedSteps`, so it already contains them. Do not add both together.
              - …
            - `gasCosts` GasCost[]: Estimated network gas for the transfer. On a `lifi` step this is a single estimate for the transaction that is actually submitted. It aggregates raw gas costs from source-chain entries in `includedSteps` and, for EVM transactions, adds estimated LI.FI contract overhead. It may differ from and often exceed the sum of the source-chain per-step entries. Raw destination-chain gas costs are not added directly. Do not add the top-level and included-step arrays together.
              - …
            - `executionDuration` number, required: The time needed to complete the following step
            - `data` object: Arbitrary data that depends on the the used tool
              - …
        - `integrator` string: The integrator the quote was issued for.
        - `gasLimit` string, required: The gas limit of the transaction that was proposed at quote time.
        - `createdAt` string, date-time, required: When the quote was issued (ISO 8601).
        - `routeSlippage` RouteSlippageCommitment: Route-wide slippage commitment attached to a route and its steps when the request used `slippageScope=route`. `minimumToAmount` is `ceil(referenceToAmount × (1 − slippage))` and doesn't change for the life of the route: every build of the transaction enforces at least this amount, or is refused.
          - `scope` 'route', required
          - `slippage` string, required: The budget for the whole route, as a decimal string, for example `0.01`
          - `referenceToAmount` string, required: The expected output the floor was computed from, in base units of the destination token
          - `minimumToAmount` string, required: The floor, in base units of the destination token. Also returned as `toAmountMin`.
          - `toChainId` integer, required: The chain the floor applies to
          - `toTokenAddress` string, required: The token the floor applies to
          - `toAddress` string: The recipient the delivery is measured at
          - `settlement` 'atomic' | 'conditional', required: `atomic`: a single transaction; a delivery below the floor reverts it. `conditional`: a cross-chain transfer. The source transaction enforces the source checkpoint, and the bridge holds the floor from there: Mayan, Across and Stargate V2 carry it in their own order, and other bridges are built only when their own minimum reaches it. A bridge that can't deliver its minimum refunds or recovers instead, which `/v1/status` reports as `NOT_FULFILLED`.
          - `checkpoints` object[], required: Amounts enforced along the way. `atomic`: one entry, the floor. `conditional`: the source checkpoint (the minimum the source transaction must hand to the bridge, in the bridged token) followed by the floor.
            - `stepId` string, required
            - `chainId` integer, required
            - `tokenAddress` string, required
            - `minimumAmount` string, required
      - `routeSlippage` RouteSlippageOutcome: How a route-wide slippage commitment played out, judged from the transfer's final state. Present on the status response only for transfers requested with `slippageScope=route`.
        - `outcome` 'PENDING' | 'FULFILLED' | 'NOT_FULFILLED', required: `FULFILLED`: the committed token arrived on the committed chain with at least `minimumToAmount`. `NOT_FULFILLED`: it didn't, see `shortfall`. `PENDING`: the transfer is still in flight, or its delivery isn't resolved yet.
        - `minimumToAmount` string, required: The floor, in base units of the committed token
        - `deliveredAmount` string: What arrived in the committed token, once known
        - `shortfall` 'REVERTED' | 'REFUNDED' | 'DIFFERENT_TOKEN' | 'BELOW_FLOOR': Why the floor wasn't met. `REVERTED`: the source transaction reverted. `REFUNDED`: the bridge refunded instead of delivering. `DIFFERENT_TOKEN`: another token was delivered, for example a recovered bridged token. `BELOW_FLOOR`: the committed token arrived under the floor, which isn't an expected outcome: the bridge delivered under the minimum it was built with.

---

[API](https://skmtc.dev/lifi/apis/li-fi-api.md) - [All operations](https://skmtc.dev/lifi/apis/li-fi-api/llms.txt) - [OpenAPI document](https://skmtc.dev/lifi/apis/li-fi-api/revisions/82e72a7fa5e0?raw)
