---
title: "Beta - Multi Quotes"
method: POST
path: "/quotes/multi"
tags: ["Quotes"]
---

# Beta - Multi Quotes

`POST /quotes/multi`

Returns a candidate array per order, mirroring the candidate resolution the
multi-exchange create flow runs — CEX STANDARD + private two-leg, no DEX.

## Request body

- MultiQuoteRequest
  - `orders` MultiQuoteOrderItem[], required
    - `from` string, required — Token ID from which the swap is initiated. Must be a MongoDB ObjectId (24-char hex string).
    - `to` string, required — Token ID to which the swap is directed. Must be a MongoDB ObjectId (24-char hex string).
    - `amount` number, double, required — Input amount as a decimal float in the token's display units. Must be > 0.
    - `anonymous` boolean — Use anonymous (private) routing for this order.
    - `useXmr` boolean — Force XMR as the anonymous bridge token.
  - `filters` QuoteFilters
    - `onlySwaps` string[]
    - `rotatePayoutWallets` boolean
    - `rotateFallback` boolean
    - `deviationThreshold` number, double
    - `rotationLookback` integer
    - `inLeg` LegFilter
      - `include` string[]
      - `exclude` string[]
    - `outLeg` LegFilter
      - `include` string[]
      - `exclude` string[]
  - `mode` 'all' | 'single' — Controls how many of the submitted orders are individually quoted. - `all` (default): every order is quoted and returns its own array of candidate routes. - `single`: only the first order is quoted; the remaining orders come back with `quoted: false` and no candidates — a lighter, faster preview for when quoting the whole batch is too slow.
  - `batched` boolean — Resolve distinct order tuples concurrently (bounded) when true (default), or sequentially when false. POC knob for latency benchmarking.

## Response `200`

Success

- MultiQuoteResult
  - `mode` 'all' | 'single', required — Controls how many of the submitted orders are individually quoted. - `all` (default): every order is quoted and returns its own array of candidate routes. - `single`: only the first order is quoted; the remaining orders come back with `quoted: false` and no candidates — a lighter, faster preview for when quoting the whole batch is too slow.
  - `batched` boolean, required
  - `orders` MultiQuoteOrderResult[], required
    - `index` number, double, required — Index of this order in the request `orders` array.
    - `quoted` boolean, required — False when the order was not individually quoted (single mode).
    - `total` number, double, required — Number of candidate quotes returned for this order.
    - `quotes` QuoteV2[], required
      - `swap` string
      - `quoteId` string
      - `duration` number, double
      - `providerEta` number, double
      - `gas` number, double
      - `gasUsd` number, double
      - `amountIn` number, double
      - `amountOut` number, double
      - `amountOutUsd` number, double
      - `amountInUsd` number, double
      - `feeUsd` number, double
      - `bridgeFeeUsd` number, double
      - `netAmountOut` number, double
      - `error` string
      - `swapName` string
      - `type` 'private' | 'standard' | 'dex'
      - `filtered` boolean
      - `filteredReason` 'price_impact' | 'different_recipient'
      - `supportsSignatures` boolean
      - `logoUrl` string
      - `markupSupported` boolean
      - `slippageSupported` boolean
      - `apiMarkupValue` number, double
      - `markupType` 'absolute' | 'percentage' | 'bp'
      - `restrictedCountries` string[]
      - `rewardsAvailable` boolean
      - `min` number, double
      - `max` number, double
      - `minOut` number, double
      - `maxOut` number, double
      - `rateId` string
      - `fixed` boolean
      - `validUntil` string
      - `requiresApproval` boolean
      - `isPriority` boolean
      - `requiresRefundAddress` boolean
      - `refundAddress` string
      - `amountType` 'send' | 'receive'
    - `error` MultiQuoteOrderError
      - `message` string, required
      - `code` union
        - string
        - number, double

## Other responses

- `404` — Token not found or disabled
- `422` — Validation Failed
- `500` — Internal Server Error

---

[API](https://skmtc.net/houdiniswap/apis/houdiniswap-backend.md) · [All operations](https://skmtc.net/houdiniswap/apis/houdiniswap-backend/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/houdiniswap/houdiniswap-backend/versions/2063dbc88d59/schema)
