---
title: "Get a quote for a token transfer"
method: GET
path: "/v1/quote/toAmount"
---

# Get a quote for a token transfer

`GET /v1/quote/toAmount`

## Request

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

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).

## Query parameters

- `fromChain` string, required
- `toChain` string, required
- `fromToken` string, required
- `toToken` string, required
- `fromAddress` string, required
- `toAddress` string
- `toAmount` string, required
- `order` 'FASTEST' | 'CHEAPEST'
- `slippage` number
- `integrator` string
- `fee` number
- `distributionFees` DistributionFeeEntry[]
  - `percentage` number, double, required: Fraction of the source token's `fromAmount` to transfer to the receiver (on Solana swap-and-bridge routes, use the swap output in the intermediate token instead). Must be greater than 0 and strictly less than 0.5 per entry; the total of all distributionFees percentages plus the integrator `fee` must remain strictly less than 1.
  - `receiver` string, required: Recipient address in the form of the source chain: 20-byte 0x-prefixed hex on EVM/Tron (all-lowercase or a valid EIP-55 checksum), base58 public key on Solana. A receiver whose form does not match the source chain is rejected.
- `referrer` string
- `allowBridges` QuoteBridgesEnum[]
- `allowExchanges` QuoteExchangesEnum[]
- `denyBridges` QuoteBridgesEnum[]
- `denyExchanges` QuoteExchangesEnum[]
- `preferBridges` QuoteBridgesEnum[]
- `preferExchanges` QuoteExchangesEnum[]
- `allowDestinationCall` boolean
- `maxPriceImpact` number
- `swapStepTimingStrategies` string[]
- `routeTimingStrategies` string[]
- `svmMaxSupportedTransactionVersion` 0 | 1, nullable
- `svmPriorityFeeLevel` 'NORMAL' | 'FAST' | 'ULTRA'

## Headers

- `x-lifi-api-key` string

## Response `200`

The step populated with the transaction data

- Step: Object that represents one step of a `Route`
  - `id` string, required: Unique identifier of the step
  - `type` 'swap' | 'cross' | 'lifi' | 'protocol', required: 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.
  - `tool` string, required: The tool used for this step. E.g. `relay`
  - `toolDetails` object: The details of the tool used for this step. E.g. `relay`
    - `key` string: The tool key
    - `name` string: The tool name
    - `logoURI` string: The tool logo URL
  - `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: 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
        - `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
      - `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.
        - `lifiFee` string: LI.FI's slice of `amount`, in the smallest unit of `token`.
        - `integratorFee` string: The integrator's slice of `amount`, in the smallest unit of `token`. It excludes intermediary fees (reported separately as `intermediaryFee`) and distributions (reported in a separate `Distributions` fee entry). It is "0" on the `Distributions` entry.
        - `intermediaryFee` string: The intermediary's slice of `amount`, in the smallest unit of `token`. Present only when an intermediary participates in the split.
        - `recipients` object[]: Per-recipient breakdown of this fee entry's `amount`. The LI.FI/integrator entry lists its own recipients, excluding partner-specified distributions. Those are listed in the separate `Distributions` entry's own `feeSplit.recipients[]`, with type `DISTRIBUTION` and one record per distribution.
          - `name` string, required: Recipient identifier, to be read together with `type`: `lifi` for the LI.FI platform recipient, the integrator id for the integrator's own fee, the intermediary id for an `INTERMEDIARY` entry, or the recipient wallet address for a `DISTRIBUTION` entry. Do not render it directly in a user-facing UI without type-aware formatting.
          - `fee` string, required: The amount credited to this recipient, in the smallest unit of this fee entry's `token`.
          - `type` string: How this recipient's fee was calculated. Currently one of `FIXED`, `SHARED`, `DYNAMIC`, `INTERMEDIARY`, or `DISTRIBUTION`, and deliberately not modelled as an enum because the set can grow without a breaking change. May be absent when the calculation type cannot be determined statically, so null-check before reading and keep a default branch when matching on it. `FIXED` and `SHARED` are the standard fee models. `DYNAMIC` means LI.FI resolved its rate for this quote under approved Dynamic Pricing, so the same integration can report a different rate on another quote. `INTERMEDIARY` marks a third-party recipient carving a configured share, and `DISTRIBUTION` marks a partner-specified recipient within the separate `Distributions` fee entry's own `feeSplit.recipients[]`. To detect Dynamic Pricing on a quote, look for a recipient whose `type` is `DYNAMIC`.
          - `walletAddress` string: The recipient's wallet address on the source chain.
    - `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
        - `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
    - `executionDuration` number, required: The time needed to complete the following step
    - `data` object: Arbitrary data that depends on the the used tool
      - `bid` object
        - `user` string
        - `router` string
        - `initiator` string
        - `sendingChainId` number
        - `sendingAssetId` string
        - `amount` string
        - `receivingChainId` number
        - `receivingAssetId` string
        - `amountReceived` string
        - `receivingAddress` string
        - `transactionId` string
        - `expiry` number
        - `callDataHash` string
        - `callTo` string
        - `encryptedCallData` string
        - `sendingChainTxManagerAddress` string
        - `receivingChainTxManagerAddress` string
        - `bidExpiry` number
      - `bidSignature` string
      - `gasFeeInReceivingToken` string
      - `totalFee` string
      - `metaTxRelayerFee` string
      - `routerFee` string
  - `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
  - `integrator` string: A string containing tracking information about the integrator of the API
  - `includedSteps` IncludedStep[]
    - `id` string, required: Unique identifier of the step
    - `type` 'swap' | 'cross' | 'lifi' | 'protocol', required: 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.
    - `tool` string, required: The tool used for this step. E.g. `allbridge`
    - `toolDetails` object, required: The details of the tool used for this step. E.g. `allbridge`
      - `key` string: The tool key
      - `name` string: The tool name
      - `logoURI` string: The tool logo URL
    - `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
          - `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
        - `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.
          - `lifiFee` string: LI.FI's slice of `amount`, in the smallest unit of `token`.
          - `integratorFee` string: The integrator's slice of `amount`, in the smallest unit of `token`. It excludes intermediary fees (reported separately as `intermediaryFee`) and distributions (reported in a separate `Distributions` fee entry). It is "0" on the `Distributions` entry.
          - `intermediaryFee` string: The intermediary's slice of `amount`, in the smallest unit of `token`. Present only when an intermediary participates in the split.
          - `recipients` object[]: Per-recipient breakdown of this fee entry's `amount`. The LI.FI/integrator entry lists its own recipients, excluding partner-specified distributions. Those are listed in the separate `Distributions` entry's own `feeSplit.recipients[]`, with type `DISTRIBUTION` and one record per distribution.
            - `name` string, required: Recipient identifier, to be read together with `type`: `lifi` for the LI.FI platform recipient, the integrator id for the integrator's own fee, the intermediary id for an `INTERMEDIARY` entry, or the recipient wallet address for a `DISTRIBUTION` entry. Do not render it directly in a user-facing UI without type-aware formatting.
            - `fee` string, required: The amount credited to this recipient, in the smallest unit of this fee entry's `token`.
            - `type` string: How this recipient's fee was calculated. Currently one of `FIXED`, `SHARED`, `DYNAMIC`, `INTERMEDIARY`, or `DISTRIBUTION`, and deliberately not modelled as an enum because the set can grow without a breaking change. May be absent when the calculation type cannot be determined statically, so null-check before reading and keep a default branch when matching on it. `FIXED` and `SHARED` are the standard fee models. `DYNAMIC` means LI.FI resolved its rate for this quote under approved Dynamic Pricing, so the same integration can report a different rate on another quote. `INTERMEDIARY` marks a third-party recipient carving a configured share, and `DISTRIBUTION` marks a partner-specified recipient within the separate `Distributions` fee entry's own `feeSplit.recipients[]`. To detect Dynamic Pricing on a quote, look for a recipient whose `type` is `DYNAMIC`.
            - `walletAddress` string: The recipient's wallet address on the source chain.
      - `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
          - `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
      - `executionDuration` number, required: The time needed to complete the following step
      - `data` object: Arbitrary data that depends on the the used tool
        - `bid` object
          - `user` string
          - `router` string
          - `initiator` string
          - `sendingChainId` number
          - `sendingAssetId` string
          - `amount` string
          - `receivingChainId` number
          - `receivingAssetId` string
          - `amountReceived` string
          - `receivingAddress` string
          - `transactionId` string
          - `expiry` number
          - `callDataHash` string
          - `callTo` string
          - `encryptedCallData` string
          - `sendingChainTxManagerAddress` string
          - `receivingChainTxManagerAddress` string
          - `bidExpiry` number
        - `bidSignature` string
        - `gasFeeInReceivingToken` string
        - `totalFee` string
        - `metaTxRelayerFee` string
        - `routerFee` string
  - `referrer` string: A string containing tracking information about the referrer of the integrator
  - `execution` unknown
  - `transactionRequest` object: An ether.js TransactionRequest that can be triggered using a wallet provider. (https://docs.ethers.io/v5/api/providers/types/#providers-TransactionRequest) Solana responses also include svmTransactionVersion (0 or 1), the version actually built. This may be lower than the requested maximum.
    - `svmTransactionVersion` 0 | 1: Solana transaction version actually built; Jito always uses 0.

## Other responses

- `400`: Invalid quote request
- `404`: Unable to find a quote for the requested transfer.

---

[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)
