Skip to main content
This page provides concise, action-oriented documentation for the core LI.FI API endpoints that AI agents need.

Base URL

https://li.quest/v1
All endpoints use this base URL. Authentication via x-lifi-api-key header is optional but recommended for higher rate limits.

GET /chains

Action: Retrieve all supported blockchain networks.

Request

curl "https://li.quest/v1/chains"

Parameters

ParameterTypeRequiredDescription
chainTypesstringNoFilter by type: EVM, SVM, UTXO, MVM (comma-separated)

Response

{
  "chains": [
    {
      "id": 1,
      "key": "eth",
      "chainType": "EVM",
      "name": "Ethereum",
      "coin": "ETH",
      "mainnet": true,
      "logoURI": "https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/chains/ethereum.svg",
      "tokenlistUrl": "https://gateway.ipfs.io/ipns/tokens.uniswap.org",
      "multicallAddress": "0xcA11bde05977b3631167028862bE2a173976CA11",
      "metamask": {
        "chainId": "0x1",
        "blockExplorerUrls": ["https://etherscan.io/"],
        "chainName": "Ethereum Mainnet",
        "nativeCurrency": { "name": "ETH", "symbol": "ETH", "decimals": 18 },
        "rpcUrls": ["https://mainnet.infura.io/v3/"]
      },
      "nativeToken": {
        "address": "0x0000000000000000000000000000000000000000",
        "chainId": 1,
        "symbol": "ETH",
        "decimals": 18,
        "name": "ETH",
        "coinKey": "ETH",
        "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png",
        "priceUSD": "2923.27"
      }
    }
    // ... 58 chains total
  ]
}

Key Fields

FieldUse
idChain ID for all other API calls
keyShort identifier (e.g., “eth”, “arb”, “pol”)
chainTypeEVM, SVM (Solana), UTXO (Bitcoin), MVM (Sui)
mainnettrue for production chains
nativeTokenGas token with price
metamaskChain config for wallet connection

GET /tokens

Action: Retrieve tokens available on specified chains.

Request

curl "https://li.quest/v1/tokens?chains=1,42161"

Parameters

ParameterTypeRequiredDescription
chainsstringYesComma-separated chain IDs

Response

{
  "tokens": {
    "1": [
      {
        "address": "0x0000000000000000000000000000000000000000",
        "chainId": 1,
        "symbol": "ETH",
        "decimals": 18,
        "name": "ETH",
        "coinKey": "ETH",
        "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png",
        "priceUSD": "2923.27"
      },
      {
        "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
        "chainId": 1,
        "symbol": "USDC",
        "decimals": 6,
        "name": "USD Coin",
        "coinKey": "USDC",
        "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
        "priceUSD": "0.999606",
        "tags": ["stablecoin"]
      }
      // ... hundreds more tokens per chain
    ],
    "42161": [
      // ... tokens for Arbitrum
    ]
  }
}

Key Fields

FieldUse
addressToken contract address (use in quote)
decimalsFor converting human amounts to smallest units
priceUSDCurrent USD price
coinKeyCanonical identifier across chains
tagsCategories like “stablecoin”

Native Token Address

Native tokens (ETH, MATIC, etc.) use: 0x0000000000000000000000000000000000000000

GET /quote

Action: Get a transfer quote with ready-to-execute transaction data.

Request

curl "https://li.quest/v1/quote?fromChain=1&toChain=42161&fromToken=USDC&toToken=USDC&fromAmount=10000000&fromAddress=0x..."

Parameters

ParameterTypeRequiredDescription
fromChainnumberYesSource chain ID
toChainnumberYesDestination chain ID
fromTokenstringYesSource token address or symbol
toTokenstringYesDestination token address or symbol
fromAmountstringYesAmount in smallest unit
fromAddressstringYesSender wallet address
toAddressstringNoRecipient (defaults to fromAddress)
slippagenumberNoMax slippage (default: 0.005 = 0.5%)
orderstringNoFASTEST, CHEAPEST
bridgesstringNoAllowed bridges (comma-separated)
exchangesstringNoAllowed DEXs (comma-separated)
denyBridgesstringNoExcluded bridges
denyExchangesstringNoExcluded DEXs
maxPriceImpactnumberNoMax price impact (e.g., 0.05 = 5%)

Response

{
  "type": "lifi",
  "id": "9f32864e-d704-46c1-874e-20f492c0ce77:0",
  "tool": "across",
  "toolDetails": {
    "key": "across",
    "name": "AcrossV4",
    "logoURI": "https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/bridges/across.svg"
  },
  "action": {
    "fromToken": {
      "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "chainId": 1,
      "symbol": "USDC",
      "decimals": 6,
      "name": "USD Coin",
      "coinKey": "USDC",
      "logoURI": "https://...",
      "priceUSD": "0.999606",
      "tags": ["stablecoin"]
    },
    "fromAmount": "10000000",
    "toToken": {
      "address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
      "chainId": 42161,
      "symbol": "USDC",
      "decimals": 6,
      "name": "USD Coin",
      "coinKey": "USDC",
      "logoURI": "https://...",
      "priceUSD": "0.999606",
      "tags": ["stablecoin"]
    },
    "fromChainId": 1,
    "toChainId": 42161,
    "slippage": 0.001,
    "fromAddress": "0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0",
    "toAddress": "0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0"
  },
  "estimate": {
    "tool": "across",
    "approvalAddress": "0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE",
    "toAmountMin": "9965731",
    "toAmount": "9965731",
    "fromAmount": "10000000",
    "feeCosts": [
      {
        "name": "LIFI Fixed Fee",
        "description": "Fixed LIFI fee, independent of any other fee",
        "token": { /* full token object */ },
        "amount": "25000",
        "amountUSD": "0.0250",
        "percentage": "0.0025",
        "included": true,
        "feeSplit": { "integratorFee": "0", "lifiFee": "25000" }
      }
      // ... additional fee items
    ],
    "gasCosts": [
      {
        "type": "SEND",
        "price": "65729222",
        "estimate": "220266",
        "limit": "286346",
        "amount": "14477912813052",
        "amountUSD": "0.0423",
        "token": { /* native token object */ }
      }
    ],
    "executionDuration": 4,
    "fromAmountUSD": "9.9961",
    "toAmountUSD": "9.9618"
  },
  "includedSteps": [
    {
      "id": "e1c87be5-80be-4e2d-8c96-a6492566a739",
      "type": "protocol",
      "action": { /* step action */ },
      "estimate": { /* step estimate */ },
      "tool": "feeCollection",
      "toolDetails": { /* tool info */ }
    },
    {
      "id": "529839e7-a048-4abe-99ad-d650a0fe469e",
      "type": "cross",
      "action": { /* step action */ },
      "estimate": { /* step estimate */ },
      "tool": "across",
      "toolDetails": { /* tool info */ }
    }
  ],
  "integrator": "lifi-api",
  "transactionRequest": {
    "value": "0x0",
    "to": "0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE",
    "data": "0x1794958f...",
    "from": "0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0",
    "chainId": 1,
    "gasPrice": "0x3eaf2c6",
    "gasLimit": "0x45e8a"
  },
  "transactionId": "0x1695bded7c1634dce4a200bdec72be0ed6cc5f7153ec2dc832b271d790eb00c8"
}
See the Five-Call Recipe for the complete untruncated response.

Key Fields

FieldUse
toolBridge/DEX used (optional for status check, speeds up response)
estimate.toAmountExpected output amount
estimate.toAmountMinMinimum guaranteed (slippage-protected)
estimate.approvalAddressSpender address for ERC20 approval
estimate.feeCostsDetailed fee breakdown
estimate.gasCostsGas cost estimates
includedStepsEach step in multi-step transfers
transactionRequestReady-to-sign transaction object
transactionIdUnique ID for tracking

Constraints

  • fromAmount must be in smallest unit (e.g., 6 decimals for USDC)
  • slippage is a decimal (0.005 = 0.5%, not 0.5)
  • Quote expires after ~60 seconds

GET /status

Action: Check the status of a cross-chain transfer.

Request

curl "https://li.quest/v1/status?txHash=0x..."

Parameters

ParameterTypeRequiredDescription
txHashstringYesSource chain transaction hash
fromChainnumberNoSource chain ID (recommended for speed)
toChainnumberNoDestination chain ID
bridgestringNoBridge tool from quote
Only txHash is required. Providing fromChain significantly speeds up the response.

Response

{
  "transactionId": "0x1695bded7c1634dce4a200bdec72be0ed6cc5f7153ec2dc832b271d790eb00c8",
  "sending": {
    "txHash": "0x1695bded7c1634dce4a200bdec72be0ed6cc5f7153ec2dc832b271d790eb00c8",
    "txLink": "https://etherscan.io/tx/0x1695bded7c1634dce4a200bdec72be0ed6cc5f7153ec2dc832b271d790eb00c8",
    "chainId": 1,
    "amount": "10000000",
    "token": {
      "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "chainId": 1,
      "symbol": "USDC",
      "decimals": 6,
      "name": "USD Coin",
      "coinKey": "USDC",
      "logoURI": "https://...",
      "priceUSD": "0.999606"
    },
    "amountUSD": "9.9961",
    "gasPrice": "65729222",
    "gasUsed": "220266",
    "gasToken": { /* native token */ },
    "gasAmount": "14477912813052",
    "gasAmountUSD": "0.0423",
    "timestamp": 1737625200
  },
  "receiving": {
    "txHash": "0xdef456789abc...",
    "txLink": "https://arbiscan.io/tx/0xdef456789abc...",
    "chainId": 42161,
    "amount": "9965731",
    "token": {
      "address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
      "chainId": 42161,
      "symbol": "USDC",
      "decimals": 6,
      "name": "USD Coin",
      "coinKey": "USDC",
      "logoURI": "https://...",
      "priceUSD": "0.999606"
    },
    "amountUSD": "9.9618",
    "timestamp": 1737625204
  },
  "lifiExplorerLink": "https://explorer.li.fi/tx/0x1695bded7c1634dce4a200bdec72be0ed6cc5f7153ec2dc832b271d790eb00c8",
  "fromAddress": "0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0",
  "toAddress": "0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0",
  "tool": "across",
  "status": "DONE",
  "substatus": "COMPLETED"
}

Key Fields

FieldUse
statusMain status (see table below)
substatusDetailed outcome
sending.txHashSource chain transaction
receiving.txHashDestination chain transaction
lifiExplorerLinkLink to LI.FI explorer
receiving.amountActual received amount

Status Values

StatusSubstatusMeaning
NOT_FOUND-Transaction not indexed yet
PENDING-Transfer in progress
DONECOMPLETEDSuccess - received requested token
DONEPARTIALSuccess - received different token
DONEREFUNDEDFailed - tokens returned to sender
FAILEDvariousPermanent failure (see substatus)

POST /advanced/routes

Action: Get multiple route options for a transfer.

Request

curl -X POST "https://li.quest/v1/advanced/routes" \
  -H "Content-Type: application/json" \
  -d '{
    "fromChainId": 1,
    "toChainId": 42161,
    "fromTokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "toTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
    "fromAmount": "10000000",
    "fromAddress": "0x..."
  }'

Parameters (JSON Body)

ParameterTypeRequiredDescription
fromChainIdnumberYesSource chain ID
toChainIdnumberYesDestination chain ID
fromTokenAddressstringYesSource token address
toTokenAddressstringYesDestination token address
fromAmountstringYesAmount in smallest unit
fromAddressstringYesSender address
optionsobjectNoAdditional options

Response

{
  "routes": [
    {
      "id": "0x...",
      "steps": [...],
      "toAmount": "9900000",
      "toAmountMin": "9850000",
      "gasCostUSD": "5.23",
      "tags": []
    }
  ]
}

When to Use

  • Need multiple route options
  • User wants to compare bridges
  • Complex multi-hop transfers

POST /advanced/stepTransaction

Action: Get transaction data for a specific route step.

Request

curl -X POST "https://li.quest/v1/advanced/stepTransaction" \
  -H "Content-Type: application/json" \
  -d '{ "step": { ... } }'

Parameters

ParameterTypeRequiredDescription
stepobjectYesStep object from routes response

Response

Returns the step with transactionRequest populated.

When to Use

After /advanced/routes to get transaction data for each step.

GET /connections

Action: Get all possible token connections from/to a chain.

Request

curl "https://li.quest/v1/connections?fromChain=1&toChain=42161"

Parameters

ParameterTypeRequiredDescription
fromChainnumberNo*Source chain ID
toChainnumberNo*Destination chain ID
fromTokenstringNoFilter by source token
toTokenstringNoFilter by destination token
*At least one of fromChain or toChain required.

Response

{
  "connections": [
    {
      "fromChainId": 1,
      "toChainId": 42161,
      "fromTokens": [
        {
          "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
          "chainId": 1,
          "symbol": "USDC",
          "decimals": 6,
          "name": "USD Coin",
          "coinKey": "USDC",
          "logoURI": "https://...",
          "priceUSD": "0.999606"
        }
        // ... more tokens that can be sent
      ],
      "toTokens": [
        {
          "address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
          "chainId": 42161,
          "symbol": "USDC",
          "decimals": 6,
          "name": "USD Coin",
          "coinKey": "USDC",
          "logoURI": "https://...",
          "priceUSD": "0.999606"
        }
        // ... more tokens that can be received
      ]
    }
  ]
}

Key Fields

FieldUse
fromChainIdSource chain
toChainIdDestination chain
fromTokensTokens that can be sent
toTokensTokens that can be received

When to Use

  • Check if a route is possible before quoting
  • Discover available destination tokens
  • Build token selection UI

GET /tools

Action: Get available bridges and exchanges.

Request

curl "https://li.quest/v1/tools"

Response

{
  "bridges": [
    {
      "key": "across",
      "name": "AcrossV4",
      "logoURI": "https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/bridges/across.svg",
      "supportedChains": [
        { "fromChainId": 1, "toChainId": 42161 },
        { "fromChainId": 1, "toChainId": 10 },
        { "fromChainId": 1, "toChainId": 137 }
        // ... more chain pairs
      ]
    },
    {
      "key": "stargate",
      "name": "Stargate",
      "logoURI": "https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/bridges/stargate.png",
      "supportedChains": [
        { "fromChainId": 1, "toChainId": 42161 },
        { "fromChainId": 1, "toChainId": 43114 }
        // ... more chain pairs
      ]
    }
    // ... 27 bridges total
  ],
  "exchanges": [
    {
      "key": "uniswap",
      "name": "Uniswap V3",
      "logoURI": "https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/exchanges/uniswap.png",
      "supportedChains": [1, 42161, 10, 137, 8453]
    },
    {
      "key": "1inch",
      "name": "1inch",
      "logoURI": "https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/exchanges/oneinch.png",
      "supportedChains": [1, 42161, 10, 137, 8453, 43114]
    }
    // ... 31 exchanges total
  ]
}

Key Fields

FieldUse
bridges[].keyUse in allowBridges / denyBridges
bridges[].supportedChainsCheck if bridge supports your chain pair
exchanges[].keyUse in allowExchanges / denyExchanges
exchanges[].supportedChainsChains where DEX is available

When to Use

  • Filter routes by specific bridges/exchanges
  • Show available tools to users
  • Validate bridge/exchange selection

Quick Reference

EndpointMethodPurpose
/chainsGETList supported chains
/tokensGETGet tokens for chains
/quoteGETGet quote with tx data
/statusGETCheck transfer status
/advanced/routesPOSTGet multiple route options
/advanced/stepTransactionPOSTGet tx data for route step
/connectionsGETCheck route availability
/toolsGETList bridges and exchanges