Uniswap Quote API

The Quote API from Uniswap — 1 operation(s) for quote.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

uniswap-quote-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.0.0
  title: Token Trading Approval Quote API
  description: 'Uniswap Labs trading APIs.


    Each operation may include the vendor extension `x-public-endpoint` (boolean): `true` when the operation is available on the public gateway for standard API keys, `false` when it is not publicly exposed. See the [OpenAPI specification extensions](https://swagger.io/docs/specification/v3_0/openapi-extensions/) definition of `x-` fields.'
servers:
- description: Uniswap Trading API
  url: https://trade-api.gateway.uniswap.org/v1
security:
- apiKey: []
tags:
- name: Quote
paths:
  /quote:
    post:
      tags:
      - Quote
      summary: Get a quote
      description: 'Requests a quote according to the specified swap parameters. This endpoint may be used to get a quote for a swap, a bridge, or a wrap/unwrap. The resulting response includes a quote for the swap and the proposed route by which the quote was achieved. The response will also include estimated gas fees for the proposed quote route. If the proposed route is via a Uniswap Protocol pool, the response may include a permit2 message for the swapper to sign prior to making a /swap request. The proposed route will also be simulated. If the simulation fails, the response will include an error message or `txFailureReason`.


        Certain routing options may be whitelisted by the requestor through the use of the `protocols` field. Further, the requestor may ask for the best price route or for the fastest price route through the ''routingPreference'' field. Note that the fastest price route refers to the speed with which a quote is returned, not the number of transactions that may be required to get from the input token and chain to the output token and chain. Further note that all `routingPreference` values except for `FASTEST` and `BEST_PRICE` are deprecated. For more information on the `protocols` and `routingPreference` fields, see the [Token Trading Workflow](https://uniswap-docs.readme.io/reference/trading-flow#swap-routing) explanation of Swap Routing.


        API integrators using this API for the benefit of customer end users may request a service fee be taken from the output token and deposited to a fee collection address. To request this, please reach out to your Uniswap Labs contact. This optional fee is associated to the API key and is always taken from the output token. Note if there is a fee and the `type` is `EXACT_INPUT`, the output amount quoted will **not** include the fee subtraction. If there is a fee and the `type` is `EXACT_OUTPUT`, the input amount quoted will **not** include the fee addition. Instead, in both cases, the fee will be recorded in the `portionBips` and `portionAmount` fields.


        Native ETH on UniswapX: UniswapX routes (e.g. `DUTCH_V2`, `DUTCH_V3`, `PRIORITY`) can use native ETH as the input token by setting `tokenIn` to the native currency address (e.g. `0x0000000000000000000000000000000000000000`) and passing `x-erc20eth-enabled: true`. Native ETH input on UniswapX requires wallet support for EIP-7914, a smart wallet activated on your desired network, and a sufficient native allowance (set via /swap_7702 if x-erc20eth-enabled header is set to `true`). If these requirements are not met, UniswapX quotes for native input may be omitted and the response may fall back to `CLASSIC` routing instead.'
      operationId: aggregator_quote
      security:
      - apiKey: []
      parameters:
      - $ref: '#/components/parameters/universalRouterVersionHeader'
      - $ref: '#/components/parameters/erc20EthEnabledHeader'
      - $ref: '#/components/parameters/permit2DisabledHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequest'
            example:
              type: EXACT_INPUT
              tokenInChainId: 1
              tokenOutChainId: 1
              generatePermitAsTransaction: false
              autoSlippage: DEFAULT
              routingPreference: BEST_PRICE
              spreadOptimization: EXECUTION
              urgency: normal
              permitAmount: FULL
              amount: '2516'
              tokenIn: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'
              tokenOut: '0x0000000000000000000000000000000000000000'
              swapper: '0xC9bebBA9f481b12cE6f3EA54c4B182c9636ec421'
              protocols:
              - UNISWAPX_V2
              - V4
              - V3
              - V2
      responses:
        '200':
          $ref: '#/components/responses/QuoteSuccess200'
        '400':
          $ref: '#/components/responses/BadRequest400'
        '401':
          $ref: '#/components/responses/Unauthorized401'
        '404':
          $ref: '#/components/responses/QuoteNotFound404'
        '429':
          $ref: '#/components/responses/RateLimitedErr429'
        '500':
          $ref: '#/components/responses/InternalErr500'
        '504':
          $ref: '#/components/responses/Timeout504'
      x-public-endpoint: true
components:
  schemas:
    PriorityInput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/tokenAmount'
        token:
          $ref: '#/components/schemas/inputToken'
        mpsPerPriorityFeeWei:
          type: string
      required:
      - amount
      - token
      - mpsPerPriorityFeeWei
    DutchQuote:
      type: object
      properties:
        encodedOrder:
          $ref: '#/components/schemas/encodedOrder'
        orderId:
          $ref: '#/components/schemas/orderId'
        orderInfo:
          $ref: '#/components/schemas/DutchOrderInfo'
        portionBips:
          $ref: '#/components/schemas/portionBips'
        portionAmount:
          $ref: '#/components/schemas/portionAmount'
        portionRecipient:
          $ref: '#/components/schemas/portionAmountReceiverAddress'
        quoteId:
          $ref: '#/components/schemas/quoteId'
        slippageTolerance:
          $ref: '#/components/schemas/slippageTolerance'
        classicGasUseEstimateUSD:
          $ref: '#/components/schemas/ClassicGasUseEstimateUSD'
        aggregatedOutputs:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedOutput'
      required:
      - encodedOrder
      - orderInfo
      - orderId
    TruncatedPlanStep:
      type: object
      description: A truncated representation of a plan step containing only routing information.
      properties:
        stepType:
          $ref: '#/components/schemas/PlanStepType'
        tokenIn:
          $ref: '#/components/schemas/inputToken'
        tokenInChainId:
          $ref: '#/components/schemas/ChainId'
        tokenOut:
          $ref: '#/components/schemas/outputToken'
        tokenOutChainId:
          $ref: '#/components/schemas/ChainId'
        slippage:
          $ref: '#/components/schemas/slippageTolerance'
      required:
      - stepType
    ClassicInput:
      type: object
      properties:
        token:
          $ref: '#/components/schemas/inputToken'
        amount:
          $ref: '#/components/schemas/tokenAmount'
    RequestId:
      type: string
      description: A unique ID for the request.
    gasFee:
      type: string
      description: The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
    AggregatedOutput:
      description: An array of all outputs of the proposed transaction. This includes the swap as well as any fees collected by the API integrator. This does not include pool fees when routing is through a Uniswap Protocol pool.
      type: object
      properties:
        token:
          $ref: '#/components/schemas/outputToken'
        amount:
          $ref: '#/components/schemas/tokenAmount'
        recipient:
          $ref: '#/components/schemas/receiverWalletAddress'
        bps:
          $ref: '#/components/schemas/bps'
        minAmount:
          $ref: '#/components/schemas/minAmount'
    portionBips:
      type: number
      multipleOf: 0.01
      description: The portion of the swap that will be taken as a fee stated in basis points. Fractional basis points are supported with up to two decimal places (e.g. 87.5 for 0.875%). The fee will be taken from the output token.
    PriorityOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/tokenAmount'
        token:
          $ref: '#/components/schemas/outputToken'
        recipient:
          $ref: '#/components/schemas/receiverWalletAddress'
        mpsPerPriorityFeeWei:
          type: string
          description: The scaling factor of the priority fee based on the output token amount.
      required:
      - amount
      - token
      - recipient
      - mpsPerPriorityFeeWei
    Routing:
      type: string
      enum:
      - CLASSIC
      - DUTCH_LIMIT
      - DUTCH_V2
      - DUTCH_V3
      - BRIDGE
      - LIMIT_ORDER
      - PRIORITY
      - WRAP
      - UNWRAP
      - CHAINED
      description: The routing for the proposed transaction.
    WalletExecutionContext:
      type: object
      description: Wallet execution context based on CAIP-25 Standard. Provides information about wallet capabilities and scopes.
      properties:
        scopes:
          type: object
          description: Map of scope identifiers to their scope data.
          additionalProperties:
            $ref: '#/components/schemas/ScopeData'
        properties:
          $ref: '#/components/schemas/WalletProperties'
      required:
      - scopes
    sqrtRatioX96:
      type: string
      description: The square root of the ratio of the token0 and token1 in the pool, as a Q64.64 number. For more information see the [Uniswap V3 Whitepaper](https://app.uniswap.org/whitepaper-v3.pdf).
    tokenSymbol:
      type: string
      description: The symbol of the token.
    nonce:
      type: string
      description: A unique nonce for this order.
    receiverWalletAddress:
      type: string
      description: The wallet address which will receive the token.
      pattern: ^(0x)?[0-9a-fA-F]{40}$
    Err401:
      type: object
      properties:
        errorCode:
          default: UnauthorizedError
          type: string
        detail:
          type: string
    contractAddress:
      type: string
      description: The address of a contract which will be used to facilitate the swap.
      pattern: ^(0x)?[0-9a-fA-F]{40}$
    WrapUnwrapQuote:
      title: Wrap/Unwrap Quote
      type: object
      properties:
        swapper:
          $ref: '#/components/schemas/receiverWalletAddress'
        input:
          $ref: '#/components/schemas/ClassicInput'
        output:
          $ref: '#/components/schemas/ClassicOutput'
        chainId:
          $ref: '#/components/schemas/ChainId'
        tradeType:
          $ref: '#/components/schemas/TradeType'
        gasFee:
          $ref: '#/components/schemas/gasFee'
        gasFeeUSD:
          $ref: '#/components/schemas/gasFeeUSD'
        gasFeeQuote:
          $ref: '#/components/schemas/gasFeeInCurrency'
        gasUseEstimate:
          $ref: '#/components/schemas/gasLimit'
        gasPrice:
          $ref: '#/components/schemas/gasPrice'
        maxFeePerGas:
          $ref: '#/components/schemas/maxFeePerGas'
        maxPriorityFeePerGas:
          $ref: '#/components/schemas/maxPriorityFeePerGas'
    quoteId:
      type: string
      description: A unique ID for the quote.
    outputToken:
      type: string
      description: The token which will be received, specified by its token address. For a list of supported tokens, see the [FAQ](https://api-docs.uniswap.org/guides/faqs).
      pattern: ^(0x)?[0-9a-fA-F]{40}$
    cosignerAddress:
      type: string
      description: The address of a cosigner who will run the auction and ensure the best executable price within the given parameters. Currently the cosigner is always Uniswap Labs.
      pattern: ^(0x)?[0-9a-fA-F]{40}$
    maxPriorityFeePerGas:
      type: string
      description: The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    ClientContext:
      type: object
      description: Uni client-specific context describing how this wallet integrates with the application.
      properties:
        directPrivateKeyAccess:
          type: boolean
          description: Whether the wallet has direct private key access.
        nextEvmUpgradeAddress:
          type: string
          description: Address for the next EVM upgrade.
    tokenAmount:
      type: string
      description: The quantity of tokens denominated in the token's base units. (For example, for an ERC20 token one token is 1x10^18 base units. For one USDC token one token is 1x10^6 base units.) This value must be greater than 0.
      pattern: ^[0-9]+$
    NullablePermit:
      description: the permit2 message object for the customer to sign to permit spending by the permit2 contract.
      type: object
      nullable: true
      properties:
        domain:
          type: object
        values:
          type: object
        types:
          type: object
    orderId:
      type: string
      description: A unique ID for the order. Used to track the order's status.
    deadline:
      type: number
      description: The unix timestamp at which the order will be reverted if not filled.
    bps:
      type: number
      multipleOf: 0.01
      description: The portion of the swap stated in basis points. Fractional basis points are supported with up to two decimal places (e.g. 12.5).
    generatePermitAsTransaction:
      type: boolean
      default: false
      description: Indicates whether you want to receive a permit2 transaction to sign and submit onchain, or a permit message to sign. When set to `true`, the quote response returns the Permit2 as a calldata which the user signs and broadcasts. When set to `false` (the default), the quote response returns the Permit2 as a message which the user signs but does not need to broadcast. When using a 7702-delegated wallet, set this field to `true`. Except for this scenario, it is recommended that this field is set to false. Note that a Permit2 calldata (e.g. `true`), will provide indefinite permission for Permit2 to spend a token, in contrast to a Permit2 message (e.g. `false`) which is only valid for 30 days. Further, a Permit2 calldata (e.g. `true`) requires the user to pay gas to submit the transaction, whereas the Permit2 message (e.g. `false` ) does not require the user to submit a transaction and requires no gas.
    Err500:
      type: object
      properties:
        errorCode:
          default: InternalServerError
          type: string
        detail:
          type: string
    ProtocolItems:
      type: string
      enum:
      - V2
      - V3
      - V4
      - UNISWAPX
      - UNISWAPX_V2
      - UNISWAPX_V3
      description: The protocol to use for the swap/order.
    liquidity:
      type: string
      description: The amount of liquidity in the pool at a given tick. For more information see the [Uniswap V3 Whitepaper](https://app.uniswap.org/whitepaper-v3.pdf).
    inputToken:
      type: string
      description: The token which will be sent, specified by its token address. For a list of supported tokens, see the [FAQ](https://api-docs.uniswap.org/guides/faqs).
      pattern: ^(0x)?[0-9a-fA-F]{40}$
    Err404:
      type: object
      properties:
        errorCode:
          enum:
          - ResourceNotFound
          - QuoteAmountTooLowError
          - TokenBalanceNotAvailable
          - InsufficientBalance
          type: string
        detail:
          type: string
    V4PoolInRoute:
      title: V4 Route
      type: object
      properties:
        type:
          type: string
          default: v4-pool
        address:
          $ref: '#/components/schemas/contractAddress'
        tokenIn:
          $ref: '#/components/schemas/TokenInRoute'
        tokenOut:
          $ref: '#/components/schemas/TokenInRoute'
        sqrtRatioX96:
          $ref: '#/components/schemas/sqrtRatioX96'
        liquidity:
          $ref: '#/components/schemas/liquidity'
        tickCurrent:
          $ref: '#/components/schemas/tickCurrent'
        fee:
          $ref: '#/components/schemas/poolFee'
        tickSpacing:
          $ref: '#/components/schemas/tickSpacing'
        hooks:
          type: string
          description: The address of the hook for the pool, if any. If the pool has no hook, this field will be the null address (e.g. 0x0000000000000000000000000000000000000000).
        amountIn:
          $ref: '#/components/schemas/tokenAmount'
        amountOut:
          $ref: '#/components/schemas/tokenAmount'
      required:
      - type
      - address
      - tokenIn
      - tokenOut
      - sqrtRatioX96
      - liquidity
      - tickCurrent
      - fee
      - tickSpacing
      - hooks
    DutchQuoteV2:
      title: UniswapX V2 Quote
      type: object
      properties:
        encodedOrder:
          $ref: '#/components/schemas/encodedOrder'
        orderId:
          $ref: '#/components/schemas/orderId'
        orderInfo:
          $ref: '#/components/schemas/DutchOrderInfoV2'
        portionBips:
          $ref: '#/components/schemas/portionBips'
        portionAmount:
          $ref: '#/components/schemas/portionAmount'
        portionRecipient:
          $ref: '#/components/schemas/portionAmountReceiverAddress'
        quoteId:
          $ref: '#/components/schemas/quoteId'
        slippageTolerance:
          $ref: '#/components/schemas/slippageTolerance'
        deadlineBufferSecs:
          type: number
        classicGasUseEstimateUSD:
          $ref: '#/components/schemas/ClassicGasUseEstimateUSD'
        aggregatedOutputs:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedOutput'
      required:
      - encodedOrder
      - orderInfo
      - orderId
    TradeType:
      type: string
      enum:
      - EXACT_INPUT
      - EXACT_OUTPUT
      description: The handling of the `amount` field. `EXACT_INPUT` means the requester will send the specified `amount` of input tokens and get a quote with a variable quantity of output tokens. `EXACT_OUTPUT` means the requester will receive the specified `amount` of output tokens and get a quote with a variable quantity of input tokens.
      default: EXACT_INPUT
    ClassicQuote:
      title: Classic Quote
      type: object
      properties:
        input:
          $ref: '#/components/schemas/ClassicInput'
        output:
          $ref: '#/components/schemas/ClassicOutput'
        swapper:
          $ref: '#/components/schemas/senderWalletAddress'
        chainId:
          $ref: '#/components/schemas/ChainId'
        slippage:
          $ref: '#/components/schemas/slippageTolerance'
        tradeType:
          $ref: '#/components/schemas/TradeType'
        gasFee:
          $ref: '#/components/schemas/gasFee'
        gasFeeUSD:
          $ref: '#/components/schemas/gasFeeUSD'
        gasFeeQuote:
          $ref: '#/components/schemas/gasFeeInCurrency'
        route:
          type: array
          items:
            type: array
            items:
              oneOf:
              - $ref: '#/components/schemas/V2PoolInRoute'
              - $ref: '#/components/schemas/V3PoolInRoute'
              - $ref: '#/components/schemas/V4PoolInRoute'
        portionBips:
          $ref: '#/components/schemas/portionBips'
        portionAmount:
          $ref: '#/components/schemas/portionAmount'
        portionRecipient:
          $ref: '#/components/schemas/portionAmountReceiverAddress'
        routeString:
          type: string
          description: The route in string format.
        quoteId:
          $ref: '#/components/schemas/quoteId'
        gasUseEstimate:
          type: string
          description: The estimated gas use. It does NOT include the additional gas for token approvals.
        blockNumber:
          type: string
          description: The current block number.
        gasPrice:
          $ref: '#/components/schemas/gasPrice'
        maxFeePerGas:
          $ref: '#/components/schemas/maxFeePerGas'
        maxPriorityFeePerGas:
          $ref: '#/components/schemas/maxPriorityFeePerGas'
        txFailureReasons:
          description: The reason(s) why the transaction failed during simulation.
          type: array
          items:
            $ref: '#/components/schemas/TransactionFailureReason'
        priceImpact:
          type: number
          description: The impact the trade has on the market price of the pool, between 0-100 percent
        aggregatedOutputs:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedOutput'
    TransactionFailureReason:
      type: string
      enum:
      - SIMULATION_ERROR
      - UNSUPPORTED_SIMULATION
      - SIMULATION_UNAVAILABLE
      - SLIPPAGE_TOO_LOW
      - TRANSFER_FROM_FAILED
    WalletInfo:
      type: object
      description: Information about the wallet.
      properties:
        uuid:
          type: string
          description: Unique identifier for the wallet.
        name:
          type: string
          description: Name of the wallet.
        rdns:
          type: string
          description: Reverse domain name identifier for the wallet.
    portionAmount:
      type: string
      description: The portion of the swap that will be taken as a fee in the base units of the token. The fee will be taken from the output token.
    RoutingPreference:
      type: string
      description: The `routingPreference` specifies the preferred strategy to determine the quote. If the `routingPreference` is `BEST_PRICE`, then the quote will propose a route through the specified whitelisted protocols (or all, if none are specified) that provides the best price. When the `routingPreference` is `FASTEST`, the quote will propose the first route which is found to complete the swap.
      enum:
      - BEST_PRICE
      - FASTEST
      default: BEST_PRICE
    gasFeeUSD:
      type: string
      description: The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) denominated in USDC.
    minAmount:
      type: string
      description: The minimum portion of the swap, stated in the base unit of the token, which will be output to the recipient.
    ClassicGasUseEstimateUSD:
      description: The gas fee you would pay if you opted for a CLASSIC swap over a Uniswap X order in terms of USD.
      type: string
    Err429:
      type: object
      properties:
        errorCode:
          default: Ratelimited
          type: string
        detail:
          type: string
    DutchOutputV3:
      type: object
      properties:
        startAmount:
          $ref: '#/components/schemas/startAmount'
        minAmount:
          $ref: '#/components/schemas/minAmount'
        recipient:
          $ref: '#/components/schemas/receiverWalletAddress'
        adjustmentPerGweiBaseFee:
          type: string
        curve:
          $ref: '#/components/schemas/Curve'
        token:
          $ref: '#/components/schemas/outputToken'
      required:
      - startAmount
      - maxAmount
      - adjustmentPerGweiBaseFee
      - curve
      - token
      - recipient
    bpsFee:
      type: string
      description: A fee charged by the token specified in basis points. Field is not present if the token does not charge a fee.
    DutchOutput:
      type: object
      properties:
        startAmount:
          $ref: '#/components/schemas/startAmount'
        endAmount:
          $ref: '#/components/schemas/endAmount'
        token:
          $ref: '#/components/schemas/outputToken'
        recipient:
          $ref: '#/components/schemas/receiverWalletAddress'
      required:
      - startAmount
      - endAmount
      - token
      - recipient
    additionalValidationData:
      type: string
      default: 0x
      description: Unused and deprecated.
      deprecated: true
    tickCurrent:
      type: string
      description: The current tick of the pool. For more information see the [Uniswap V3 Whitepaper](https://app.uniswap.org/whitepaper-v3.pdf).
    PriorityQuote:
      title: UniswapX Priority Quote
      type: object
      properties:
        encodedOrder:
          $ref: '#/components/schemas/encodedOrder'
        orderId:
          $ref: '#/components/schemas/orderId'
        orderInfo:
          $ref: '#/components/schemas/PriorityOrderInfo'
        portionBips:
          $ref: '#/components/schemas/portionBips'
        portionAmount:
          $ref: '#/components/schemas/portionAmount'
        portionRecipient:
          $ref: '#/components/schemas/portionAmountReceiverAddress'
        quoteId:
          $ref: '#/components/schemas/quoteId'
        slippageTolerance:
          $ref: '#/components/schemas/slippageTolerance'
        deadlineBufferSecs:
          type: number
        classicGasUseEstimateUSD:
          $ref: '#/components/schemas/ClassicGasUseEstimateUSD'
        expectedAmountIn:
          $ref: '#/components/schemas/tokenAmount'
        expectedAmountOut:
          $ref: '#/components/schemas/tokenAmount'
        aggregatedOutputs:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedOutput'
      required:
      - encodedOrder
      - orderInfo
      - orderId
    encodedOrder:
      type: string
      description: An encoded copy of the order details which will be submitted to the filler network along with the signed permit.
    tickSpacing:
      type: number
      description: The width of ticks in this pool (e.g. the price range between two ticks) specified in basis points. For more information see the [Uniswap V3 Whitepaper](https://app.uniswap.org/whitepaper-v3.pdf).
    ChainId:
      description: The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://api-docs.uniswap.org/guides/faqs).
      type: number
      enum:
      - 1
      - 10
      - 56
      - 130
      - 137
      - 143
      - 196
      - 324
      - 480
      - 1868
      - 4217
      - 8453
      - 10143
      - 42161
      - 42220
      - 43114
      - 59144
      - 81457
      - 7777777
      - 1301
      - 84532
      - 11155111
      default: 1
    IntegratorFee:
      type: object
      description: A fee configuration specifying the fee amount in basis points and the recipient address.
      properties:
        bips:
          type: number
          description: Fee amount in basis points (1 bip = 0.01%). Must be greater than 0 and at most 500.
          minimum: 0
          exclusiveMinimum: true
          maximum: 500
        recipient:
          type: string
          description: Ethereum address that receives the fee.
          pattern: ^0x[a-fA-F0-9]{40}$
      required:
      - bips
      - recipient
    AutoSlippage:
      type: string
      enum:
      - DEFAULT
      description: 'The auto slippage strategy to employ. For Uniswap Protocols (v2, v3, v4) the auto slippage will be automatically calculated when this field is set to `DEFAULT`. Auto slippage cannot be calculated for UniswapX swaps.


        Note that if the trade type is `EXACT_INPUT`, then the slippage is in terms of the output token. If the trade type is `EXACT_OUTPUT`, then the slippage is in terms of the input token.


        When submitting a request, `autoSlippage` may not be set when `slippageTolerance` is defined. One of `slippageTolerance` or `autoSlippage` must be defined.'
    Curve:
      type: object
      properties:
        relativeBlocks:
          type: array
          items:
            type: number
        relativeAmounts:
          type: array
          items:
            type: string
      required:
      - type
    gasFeeInCurrency:
      type: string
      description: The total estimated gas cost of this transaction (eg. gasLimit multiplied by maxFeePerGas) in the quoted currency (e.g. output token) in the base units of the quoted currency.
    TokenInRoute:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/inputToken'
        chainId:
          $ref: '#/components/schemas/ChainId'
        symbol:
          $ref: '#/components/schemas/tokenSymbol'
        decimals:
          type: string
          description: The number of decimals supported by the token. This number is used to convert token amounts to the token's common representation.
        buyFeeBps:
          $ref: '#/components/schemas/bpsFee'
        sellFeeBps:
          $ref: '#/components/schemas/bpsFee'
    QuoteRequest:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/TradeType'
        amount:
          $ref: '#/components/schemas/tokenAmount'
        tokenInChainId:
          $ref: '#/components/schemas/ChainId'
        tokenOutChainId:
          $ref: '#/components/schemas/ChainId'
        tokenIn:
          $ref: '#/components/schemas/inputToken'
        tokenOut:
          $ref: '#/components/schemas/outputToken'
        generatePermitAsTransaction:
          $ref: '#/components/schemas/generatePermitAsTransaction'
        swapper:
          $ref: '#/components/schemas/senderWalletAddress'
        slippageTolerance:
          $ref: '#/components/schemas/slippageTolerance'
        autoSlippage:
          $ref: '#/components/schemas/AutoSlippage'
        routingPreference:
          $ref: '#/components/schemas/RoutingPreference'
        protocols:
          $ref: '#/components/schemas/Protocols'
        hooksOptions:
          $ref: '#/components/schemas/HooksOptions'
        spreadOptimization:
          $ref: '#/components/schemas/SpreadOptimization'
        urgency:
          $ref: '#/components/schemas/Urgency'
        permitAmount:
          $ref: '#/components/schemas/PermitAmount'
        integratorFees:
          type: array
          description: Optional integrator fee configuration. When provided, the specified fee is applied to the swap instead of the default partner fee service. Only one fee entry is currently supported.
          items:
            $ref: '#/components/schemas/IntegratorFee'
          minItems: 1
          maxItems: 1
        walletExecutionContext:
          $ref: '#/components/schemas/WalletExecutionContext'
      required:
      - type
      - amount
      - tokenInChainId
      - tokenOutChainId
      - tokenIn
      - tokenOut
      - swapper
    BridgeQuote:
      title: Bridge Quote
      type: object
      properties:
        quoteId:
          $ref: '#/components/schemas/quoteId'
        chainId:
          $ref: '#/components/schemas/ChainId'
        destinationChainId:
          $ref: '#/components/schemas/ChainId'
        swapper:
          $ref: '#/components/schemas/receiverWalletAddress'
        input:
          $ref: '#/components/schemas/ClassicInput'
        output:
          $ref: '#/components/schemas/ClassicOutput'
        tradeType:
          $ref: '#/components/schemas/TradeType'
        quoteTimestamp:
          type: number
        gasPrice:
          $ref: '#/components/schemas/gasPrice'
        maxFeePerGas:
          $ref: '#/components/schemas/maxFeePerGas'
        maxPriorityFeePerGas:
          $ref: '#/components/schemas/maxPriorityFeePerGas'
        gasFee:
          $ref: '#/components/schemas/gasFee'
        gasUseEstimate:
          $ref: '#/components/schemas/gasLimit'
        gasFeeUSD:
          $ref: '#/components/schemas/gasFeeUSD'
        portionBips:
          $ref: '#/components/schemas/portionBips'
        portionAmount:
          $ref: '#/components/schemas/portionAmount'
        portionRecipient:
          $ref: '#/components/schemas/portionAmountReceiverAddress'
        estimatedFillTimeMs:
          type: number
          description: The estimated time it will take to fill the order in milliseconds.
        exclusiveRelayer:
          type: string
          description: The address of the exclusive filler (the relayer).
          pattern: ^(0x)?[0-9a-fA-F]{40}$
        exclusivityDeadline:
          type: number
          description: The deadline (unix timestamp) by which the exclusive relayer must fill the order before other relayers can fill it.
        fillDeadline:
          type: number
          description: The deadline by which, if the order is not filled, the order will be reverted.
    DutchOrderInfoV3:
      type: object
      properties:
        chainId:
          $ref: '#/components/schemas/ChainId'
        nonce:
          $ref: '#/components/schemas/nonce'
        reactor:
          $ref: '#/components/schemas/contractAddress'
        swapper:
          $ref: '#/components/schemas/receiverWalletAddress'
        de

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