LI.FI Quote API

The Quote API from LI.FI — 4 operation(s) for quote.

Operations 4

GET /v1/quote Get a quote for a token transfer
GET /v1/quote/toAmount Get a quote for a token transfer
POST /v1/quote/contractCall Perform a contract call across blockchains (BETA)
POST /v1/quote/contractCalls Perform multiple contract calls across blockchains (BETA)

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lifi-quote-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lifi-quote-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LI.FI Quote API
  version: 1.0.0
  description: LI.FI provides the best cross-chain swap across all liquidity pools and bridges.
servers:
- url: https://li.quest
  description: LI.FI Production Environment
- url: https://staging.li.quest
  description: LI.FI Staging Environment
tags:
- name: Quote
paths:
  /v1/quote:
    get:
      parameters:
      - example: DAI
        name: fromChain
        description: The sending chain. Can be the chain id or chain key
        schema:
          type: string
        in: query
        required: true
      - example: POL
        name: toChain
        description: The receiving chain. Can be the chain id or chain key
        schema:
          type: string
        in: query
        required: true
      - example: '0x4ecaba5870353805a9f068101a40e0f32ed605c6'
        name: fromToken
        description: The token that should be transferred. Can be the address or the symbol
        schema:
          type: string
        in: query
        required: true
      - example: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174'
        name: toToken
        description: The token that should be transferred to. Can be the address or the symbol
        schema:
          type: string
        in: query
        required: true
      - example: '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'
        name: fromAddress
        description: The sending wallet address
        schema:
          type: string
        in: query
        required: true
      - example: '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'
        name: toAddress
        description: The receiving wallet address. If none is provided, the fromAddress will be used
        schema:
          type: string
        in: query
        required: false
      - example: '1000000'
        name: fromAmount
        description: The amount that should be sent including all decimals (e.g. 1000000 for 1 USDC (6 decimals))
        schema:
          type: string
        in: query
        required: true
      - name: order
        description: 'Which kind of route should be preferred **FASTEST**: This sorting criterion prioritizes routes with the shortest estimated execution time. Users who value speed and want their transactions to be completed as quickly as possible should choose the fastest routes. **CHEAPEST**: This criterion focuses on minimizing the cost of the transaction, whether in token amount or USD amount (USD amount minus gas cost). Users looking for the most economical option should choose the cheapest routes.'
        schema:
          enum:
          - FASTEST
          - CHEAPEST
          type: string
        in: query
      - example: 0.005
        name: slippage
        description: The maximum allowed slippage for the transaction as a decimal value. 0.005 represents 0.5%.
        schema:
          maximum: 1
          minimum: 0
          type: number
        in: query
      - example: fee-demo
        name: integrator
        description: A string containing tracking information about the integrator of the API
        schema:
          type: string
        in: query
      - example: 0.02
        name: fee
        description: The percent of the integrator's fee that is taken from every transaction. 0.02 represents 2%. The maximum fee amount should be less than 100%.
        schema:
          minimum: 0
          type: number
          exclusiveMaximum: 1
        in: query
      - name: referrer
        description: A string containing tracking information about the referrer of the integrator
        schema:
          type: string
        in: query
        required: false
      - example: hop,cbridge
        name: allowBridges
        description: List of bridges that are allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteBridgesEnum'
        in: query
      - name: allowExchanges
        description: List of exchanges that are allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteExchangesEnum'
        in: query
      - example: relay
        name: denyBridges
        description: List of bridges that are not allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteBridgesEnum'
        in: query
      - name: denyExchanges
        description: List of exchanges that are not allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteExchangesEnum'
        in: query
      - name: preferBridges
        description: List of bridges that should be preferred for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteBridgesEnum'
        in: query
      - name: preferExchanges
        description: List of exchanges that should be preferred for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteExchangesEnum'
        in: query
      - name: allowDestinationCall
        description: Whether swaps or other contract calls should be allowed as part of the destination transaction of a bridge transfer. Separate swap transactions on the destination chain are not affected by this flag. By default, parameter is `true`.
        schema:
          type: boolean
        in: query
      - name: fromAmountForGas
        description: The amount of the token to convert to gas on the destination side.
        schema:
          type: string
        in: query
        required: false
      - name: maxPriceImpact
        description: The price impact threshold above which routes are hidden. As an example, one should specify 0.15 (15%) to hide routes with more than 15% price impact. The default is 10%.
        schema:
          type: number
        in: query
      - name: swapStepTimingStrategies
        description: Timing setting to wait for a certain amount of swap rates. In the format `minWaitTime-${minWaitTimeMs}-${startingExpectedResults}-${reduceEveryMs}`. Please check [docs.li.fi](https://docs.li.fi) for more details.
        schema:
          type: array
          items:
            type: string
            example: minWaitTime-600-4-300
        in: query
        required: false
      - name: routeTimingStrategies
        description: Timing setting to wait for a certain amount of routes to be generated before chosing the best one. In the format `minWaitTime-${minWaitTimeMs}-${startingExpectedResults}-${reduceEveryMs}`. Please check [docs.li.fi](https://docs.li.fi) for more details.
        schema:
          type: array
          items:
            type: string
            example: minWaitTime-600-4-300
        in: query
        required: false
      - name: skipSimulation
        description: Parameter to skip transaction simulation. The quote will be returned faster but the transaction gas limit won't be accurate.
        schema:
          type: boolean
        in: query
        required: false
      - name: preset
        description: Pre-configured routing optimization preset. The preset value `stablecoin` is supported for requesting swap and/or bridging operations involving stablecoin tokens. Each preset provides optimized default settings for slippage, price impact, and tool preferences that can be overridden by custom configuration parameters set in the request.
        schema:
          type: string
          pattern: ^[a-zA-Z0-9-_]+$
          minLength: 1
          maxLength: 50
        in: query
        required: false
        example: stablecoin
      - name: svmPriorityFeeLevel
        description: Priority fee level for Solana Virtual Machine (SVM) transactions.
        schema:
          enum:
          - NORMAL
          - FAST
          - ULTRA
          type: string
        in: query
        required: false
      - name: x-lifi-api-key
        description: Authentication header, register in the LI.FI Partner Portal (https://portal.li.fi/ ) to get your API Key.
        schema:
          type: string
        in: header
      responses:
        '200':
          $ref: '#/components/responses/StepResponse'
        '400':
          $ref: '#/components/responses/InvalidQuoteRequest'
        '404':
          $ref: '#/components/responses/QuoteNotFound'
      summary: Get a quote for a token transfer
      description: 'This endpoint can be used to request a quote for a transfer of one token to another, cross chain or not.

        The endpoint returns a `Step` object which contains information about the estimated result as well as a `transactionRequest` which can directly be sent to your wallet.

        The estimated result can be found inside the `estimate`, containing the estimated `toAmount` of the requested `Token` and the `toAmountMin`, which is the guaranteed minimum value that the transfer will yield including slippage.

        If you want to learn more about how to use this endpoint please have a look at our [guide](/introduction/user-flows-and-examples/requesting-route-fetching-quote).'
      tags:
      - Quote
  /v1/quote/toAmount:
    get:
      parameters:
      - example: DAI
        name: fromChain
        description: The sending chain. Can be the chain id or chain key
        schema:
          type: string
        in: query
        required: true
      - example: POL
        name: toChain
        description: The receiving chain. Can be the chain id or chain key
        schema:
          type: string
        in: query
        required: true
      - example: '0x4ecaba5870353805a9f068101a40e0f32ed605c6'
        name: fromToken
        description: The token that should be transferred. Can be the address or the symbol
        schema:
          type: string
        in: query
        required: true
      - example: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174'
        name: toToken
        description: The token that should be transferred to. Can be the address or the symbol
        schema:
          type: string
        in: query
        required: true
      - example: '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'
        name: fromAddress
        description: The sending wallet address
        schema:
          type: string
        in: query
        required: true
      - example: '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'
        name: toAddress
        description: The receiving wallet address. If none is provided, the fromAddress will be used
        schema:
          type: string
        in: query
        required: false
      - example: '1000000'
        name: toAmount
        description: The amount that will be received including all decimals (e.g. 1000000 for 1 USDC (6 decimals))
        schema:
          type: string
        in: query
        required: true
      - name: order
        description: 'Which kind of route should be preferred **FASTEST**: This sorting criterion prioritizes routes with the shortest estimated execution time. Users who value speed and want their transactions to be completed as quickly as possible should choose the fastest routes. **CHEAPEST**: This criterion focuses on minimizing the cost of the transaction, whether in token amount or USD amount (USD amount minus gas cost). Users looking for the most economical option should choose the cheapest routes.'
        schema:
          enum:
          - FASTEST
          - CHEAPEST
          type: string
        in: query
      - example: 0.005
        name: slippage
        description: The maximum allowed slippage for the transaction as a decimal value. 0.005 represents 0.5%.
        schema:
          maximum: 1
          minimum: 0
          type: number
        in: query
      - example: fee-demo
        name: integrator
        description: A string containing tracking information about the integrator of the API
        schema:
          type: string
        in: query
      - example: 0.02
        name: fee
        description: The percent of the integrator's fee that is taken from every transaction. 0.02 represents 2%. The maximum fee amount should be less than 100%.
        schema:
          minimum: 0
          type: number
          exclusiveMaximum: 1
        in: query
      - name: referrer
        description: A string containing tracking information about the referrer of the integrator
        schema:
          type: string
        in: query
        required: false
      - example: hop,cbridge
        name: allowBridges
        description: List of bridges that are allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteBridgesEnum'
        in: query
      - name: allowExchanges
        description: List of exchanges that are allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteExchangesEnum'
        in: query
      - example: relay
        name: denyBridges
        description: List of bridges that are not allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteBridgesEnum'
        in: query
      - name: denyExchanges
        description: List of exchanges that are not allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteExchangesEnum'
        in: query
      - name: preferBridges
        description: List of bridges that should be preferred for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteBridgesEnum'
        in: query
      - name: preferExchanges
        description: List of exchanges that should be preferred for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint. Also values `all`, `none`, `default` and `[]` are acceptable and mean all tools of the current type (`all`), no tools (for `none` and `[]` cases) and default tool's settings on the current stage.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QuoteExchangesEnum'
        in: query
      - name: allowDestinationCall
        description: Whether swaps or other contract calls should be allowed as part of the destination transaction of a bridge transfer. Separate swap transactions on the destination chain are not affected by this flag. By default, parameter is `true`.
        schema:
          type: boolean
        in: query
      - name: maxPriceImpact
        description: The price impact threshold above which routes are hidden. As an example, one should specify 0.15 (15%) to hide routes with more than 15% price impact. The default is 10%.
        schema:
          type: number
        in: query
      - name: swapStepTimingStrategies
        description: Timing setting to wait for a certain amount of swap rates. In the format `minWaitTime-${minWaitTimeMs}-${startingExpectedResults}-${reduceEveryMs}`. Please check [docs.li.fi](https://docs.li.fi) for more details.
        schema:
          type: array
          items:
            type: string
            example: minWaitTime-600-4-300
        in: query
        required: false
      - name: routeTimingStrategies
        description: Timing setting to wait for a certain amount of routes to be generated before chosing the best one. In the format `minWaitTime-${minWaitTimeMs}-${startingExpectedResults}-${reduceEveryMs}`. Please check [docs.li.fi](https://docs.li.fi) for more details.
        schema:
          type: array
          items:
            type: string
            example: minWaitTime-600-4-300
        in: query
        required: false
      - name: svmPriorityFeeLevel
        description: Priority fee level for Solana Virtual Machine (SVM) transactions.
        schema:
          enum:
          - NORMAL
          - FAST
          - ULTRA
          type: string
        in: query
        required: false
      - name: x-lifi-api-key
        description: Authentication header, register in the LI.FI Partner Portal (https://portal.li.fi/ ) to get your API Key.
        schema:
          type: string
        in: header
      responses:
        '200':
          $ref: '#/components/responses/StepResponse'
        '400':
          $ref: '#/components/responses/InvalidQuoteRequest'
        '404':
          $ref: '#/components/responses/QuoteNotFound'
      summary: Get a quote for a token transfer
      description: 'This endpoint is an alternative to the `v1/quote` endpoint, taking a `toAmount` value rather than `fromAmount`. This endpoint will calculate an appropriate `fromAmount` based on the specified `toAmount`, and use this value to generate the quote data.

        This endpoint can be used to request a quote for a transfer of one token to another, cross chain or not.

        The endpoint returns a `Step` object which contains information about the estimated result as well as a `transactionRequest` which can directly be sent to your wallet.

        The estimated result can be found inside the `estimate`, containing the estimated required `fromAmount` of the sending `Token` to meet the `toAmountMin` of the receiving token, which is the guaranteed minimum value that the transfer will yield including slippage.

        If you want to learn more about how to use this endpoint please have a look at our [guide](/introduction/user-flows-and-examples/requesting-route-fetching-quote).'
      tags:
      - Quote
  /v1/quote/contractCall:
    post:
      requestBody:
        description: Object describing what tokens to transfer and how to interact with the destination contract.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractCallRequest'
            examples:
              ContractCallRequestExample:
                value:
                  fromChain: BSC
                  fromToken: '0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3'
                  fromAddress: '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'
                  toChain: POL
                  toToken: '0x4e78011ce80ee02d2c3e649fb657e45898257815'
                  toAmount: '300000000'
                  toContractAddress: '0xEde3bd57a04960E6469B70B4863cE1c9d9363Cb8'
                  contractOutputsToken: '0xb0c22d8d350c67420f06f48936654f567c73e8c8'
                  toContractCallData: 0x...
                  toContractGasLimit: '900000'
                  allowBridges:
                  - relay
      parameters:
      - name: x-lifi-api-key
        description: Authentication header, register in the LI.FI Partner Portal (https://portal.li.fi/ ) to get your API Key.
        schema:
          type: string
        in: header
      responses:
        '200':
          $ref: '#/components/responses/ToolsResponse'
      deprecated: true
      summary: Perform a contract call across blockchains (BETA)
      description: This endpoint has been deprecated in favour of /quote/contractCalls.
      tags:
      - Quote
  /v1/quote/contractCalls:
    post:
      requestBody:
        description: Object describing what tokens to transfer and how to interact with the destination contracts.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractCallsRequest'
            example:
              fromChain: 10
              fromToken: '0x4200000000000000000000000000000000000042'
              fromAddress: '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'
              toChain: 1
              toToken: ETH
              toAmount: '100000000000001'
              contractCalls:
              - fromAmount: '100000000000001'
                fromTokenAddress: '0x0000000000000000000000000000000000000000'
                toTokenAddress: '0xae7ab96520de3a18e5e111b5eaab095312d7fe84'
                toContractAddress: '0xae7ab96520de3a18e5e111b5eaab095312d7fe84'
                toContractCallData: 0x
                toContractGasLimit: '110000'
              - fromAmount: '100000000000000'
                fromTokenAddress: '0xae7ab96520de3a18e5e111b5eaab095312d7fe84'
                toTokenAddress: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0'
                toContractAddress: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0'
                toFallbackAddress: '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'
                toContractCallData: '0xea598cb000000000000000000000000000000000000000000000000000005af3107a4000'
                toContractGasLimit: '100000'
              integrator: muc-hackaton-postman
      parameters:
      - name: x-lifi-api-key
        description: The apiKey allows you to authenticate on the API.
        schema:
          type: string
        in: header
      responses:
        '200':
          $ref: '#/components/responses/ToolsResponse'
      summary: Perform multiple contract calls across blockchains (BETA)
      description: 'This endpoint can be used to bridge tokens, swap them and perform a number or arbitrary contract calls on the destination chain. You can find an example of it [here](https://github.com/lifinance/sdk/tree/main/examples).

        This functionality is currently in beta. While we''ve worked hard to ensure its stability and functionality, there might still be some rough edges.'
      tags:
      - Quote
components:
  schemas:
    ContractCallsRequest:
      title: Root type for ContractCallsRequest
      description: Object defining instructions on how to perform multiple cross-chain/same-chain calls
      required:
      - fromChain
      - fromToken
      - fromAddress
      - toChain
      - toToken
      - toAmount
      - contractCalls
      type: object
      properties:
        fromChain:
          description: The sending chain. Can be the chain id or chain key
          type: number
        fromToken:
          description: The token that should be transferred. Can be the address or the symbol
          type: string
        fromAddress:
          description: The wallet that will send the transaction and contains the starting token
          type: string
        toChain:
          description: The receiving chain. Can be the chain id or chain key
          type: number
        toToken:
          description: The token required to perform the contract interaction (can be something to stake, donate or to be used as payment)
          type: string
        toAmount:
          description: The amount of token required by the contract interaction. The LI.FI API will try and generate a quote that guarantees at least that amount on the destination chain.
          type: string
        contractCalls:
          type: array
          items:
            $ref: '#/components/schemas/ContractCall'
        toFallbackAddress:
          description: If the call fails, use this address to send the bridged tokens to. If none is specified, the sending address will be used.
          type: string
        contractOutputsToken:
          description: Some contract interactions will output a token. This is the case in things like staking. Omit this parameter if no token should be returned to the user.
          type: string
        slippage:
          format: double
          description: The maximum allowed slippage for the transaction as a decimal value. 0.005 represents 0.5%.
          maximum: 1
          minimum: 0
          type: number
        integrator:
          description: A string containing tracking information about the integrator of the API
          type: string
        referrer:
          description: A string containing tracking information about the referrer of the integrator
          type: string
        allowBridges:
          description: List of bridges that are allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint.
          type: array
          items:
            type: string
        denyBridges:
          description: List of bridges that are not allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint.
          type: array
          items:
            type: string
        preferBridges:
          description: List of bridges that should be preferred for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint.
          type: array
          items:
            type: string
        allowExchanges:
          description: List of exchanges that are allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint.
          type: array
          items:
            type: string
        denyExchanges:
          description: List of exchanges that are not allowed for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint.
          type: array
          items:
            type: string
        preferExchanges:
          description: List of exchanges that should be preferred for this transaction. Retrieve the current catalog from the `/v1/tools` endpoint.
          type: array
          items:
            type: string
        allowDestinationCall:
          description: Whether swaps or other contract calls should be allowed as part of the destination transaction of a bridge transfer. Separate swap transactions on the destination chain are not affected by this flag. By default, parameter is `true`.
          type: boolean
        fee:
          format: double
          description: The percent of the integrator's fee that is taken from every transaction. The maximum fee amount should be less than 100%.
          minimum: 0
          type: number
          exclusiveMaximum: 1
    IncludedStep:
      title: Root Type for Internal Step
      description: Object that represents one step of an `IncludedSteps` array in `Route`
      required:
      - id
      - action
      - estimate
      - tool
      - type
      - toolDetails
      type: object
      properties:
        id:
          description: Unique identifier of the step
          type: string
        type:
          description: The type of the step. `swap` executes a DEX swap on a single chain, `cross` bridges assets between chains, `lifi` runs LiFi's internal multi-action logic, and `protocol` represents protocol-level actions such as fee collection or vault interactions executed inside LiFi managed contracts.
          enum:
          - swap
          - cross
          - lifi
          - protocol
          type: string
        tool:
          description: The tool used for this step. E.g. `allbridge`
          type: string
        toolDetails:
          description: The details of the tool used for this step. E.g. `allbridge`
          type: object
          properties:
            key:
              description: The tool key
              type: string
            name:
              description: The tool name
              type: string
            logoURI:
              description: The tool logo URL
              type: string
        action:
          $ref: '#/components/schemas/Action'
        estimate:
          $ref: '#/components/schemas/Estimate'
    ContractCall:
      title: Root Type for ContractCall
      description: Object defining a single arbitrary contract call
      required:
      - fromAmount
      - fromTokenAddress
      - toContractAddress
      - toContractCallData
      - toContractGasLimit
      type: object
      properties:
        fromAmount:
          description: The amount that will feed into this contract call. This is not dependent on how much was bridged or deposited before - it's the *expected* amount of token available on order to execute the call.
          type: string
        fromTokenAddress:
          description: The token that will feed into this contract call. E.g. a ETH staking transaction would expect to have ETH available.
          type: string
        toContractAddress:
          description: The address of the contract to interact with.
          type: string
        toContractCallData:
          description: The calldata to be sent to the contract for the interaction on the destination chain.
          type: string
        toContractGasLimit:
          description: The estimated gas used by the destination call. If this value is incorrect, the interaction may fail -- choose this carefully!
          type: string
        toApprovalAddress:
          description: If the approval address is different thant the contract to call, specify that address here
          type: string
        toTokenAddress:
          description: If the contract outputs a token, specify its address here. (E.g. staking ETH produces stETH)
          type: string
    BridgesEnum:
      type: string
      description: Identifier for a bridge tool. Retrieve the latest bridge keys from the `/v1/tools` endpoint. Keywords such as `all`, `none`, `default`, and `[]` are also supported where applicable.
    QuoteExchangesEnum:
      type: string
      description: 'Exchange tool identifier or keyword. Retrieve current exchange keys from the `/v1/tools` endpoint. Supported keywords: `all`, `none`, `default`, `[]`.'
    ExchangesEnum:
      type: string
      description: Identifier for an exchange tool. Retrieve the latest exchange keys from the `/v1/tools` endpoint. Keywords such as `all`, `none`, `default`, and `[]` are also supported where applicable.
    Token:
      title: Root Type for Token
      description: Representation of a Token
      required:
      - address
      - chainId
      - decimals
      - name
      - symbol
      type: object
      properties:
        address:
          description: Address of the token
          type: string
        decimals:
          format: number
          description: Number of decimals the token uses
          type: number
        symbol:
          description: Symbol

# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lifi/refs/heads/main/openapi/lifi-quote-api-openapi.yml