Quote a swap
Same-chain (omit dstChain): returns router calldata and a minimum output for an exact-input swap on the requested chain.
Cross-chain (set dstChain): returns calldata that swaps on the source chain, bridges, and settles on the destination.
Routing is selected per quote across every source available to us; the chosen route is reported in source and tool for display and support only. Never branch on those — the selection changes as better routes appear.
The response follows the common aggregator envelope (action / estimate / includedSteps / transactionRequest), so a client already written against that shape can adopt this with minimal mapping.
Authorizations
Soft-auth read routes accept x-api-key with a publishable or partner key; money-moving routes require a secret partner key in Authorization: Bearer.
Body
Source chain identifier. EVM: stringified chain id ("84532", "11155111"). Non-EVM: kebab key ("solana-mainnet", "bitcoin"). Must resolve via chainConfigById to one of the supported chains.
"11155111"
Input token address (tokenIn), on srcChain. Format follows srcChain: EVM chains take a 0x-prefixed 40-char hex string, non-EVM chains take that chain's native address format (e.g. base58 for Solana).
"0x37a351f11e5614FC56e3BFb84aAC940767faC365"
Output token address (tokenOut), on dstChain (or srcChain when same-chain). Format follows dstChain: EVM chains take a 0x-prefixed 40-char hex string, non-EVM chains take that chain's native address format (e.g. base58 for Solana).
"0x37a351f11e5614FC56e3BFb84aAC940767faC365"
Input amount in tokenIn's smallest units. Decimal string (uint256-safe).
^\d+$"1000000"
Address that will receive tokenOut after the swap. This lives on the DESTINATION chain, so its format follows dstChain — a base58 address for a Solana payout, not a 0x EVM address. Format follows dstChain: EVM chains take a 0x-prefixed 40-char hex string, non-EVM chains take that chain's native address format (e.g. base58 for Solana).
"0x37a351f11e5614FC56e3BFb84aAC940767faC365"
Destination chain identifier. When set AND different from srcChain, the request is routed through the cross-chain superswap adapter (Hypermid diamond's SwapAndBridge). When omitted, a same-chain adapter is used.
"84532"
Source-chain SENDER — the wallet that signs + submits the source transaction (transactionRequest.from) and that the inner-swap routers quote against. Distinct from recipient: for a cross-chain swap the sender lives on the SOURCE chain while recipient is the destination payout. When omitted, defaults to recipient at the API boundary (same-chain swaps where sender == payout). REQUIRED when src and dst are in different ecosystems, where that default would be nonsense.
"0x37a351f11e5614FC56e3BFb84aAC940767faC365"
Destination-chain principal authorised to recover funds via SettlementFacet.sendFallback if the executor fails to deliver before fallbackDelay elapses. Distinct from recipient (happy-path payout target) — useful when the src-tx sender + the dst-side beneficiary live at different addresses (smart wallet sources, aggregator UIs).
When omitted, defaults to recipient at the API boundary — same address receives both happy-path payout AND fallback refund. Pass explicitly only when you want the two split (e.g. recipient = end-user, refundRecipient = treasury).
Stays EVM-only on purpose, unlike recipient: this is a Hypermid diamond concept (SettlementFacet.sendFallback), and the diamond only exists on EVM chains. A non-EVM destination routes over an intent-based rail, which has no claim to recover, so the field is not meaningful there.
"0x37a351f11e5614FC56e3BFb84aAC940767faC365"
Slippage tolerance in basis points (1 = 0.01%). If omitted, the service default applies.
1 <= x <= 1000050
Partner's NET integrator fee as a decimal share of amountIn (0.01 = 1%). The net rate has the same meaning on every rail; providers that split an app fee receive a rail-specific gross declaration so the partner still receives this rate. Converted to basis points server-side, bounded only by the contract hard cap of 1000 bps (10%) — the direct quote API has no per-partner soft cap. The fee is taken from the source token and accrues to the partner's configured fee wallet (set per API key's partner). Rejected (400) if the partner has no fee wallet configured.
0 <= x <= 0.10.01
Recipient-direct bridge mode. When true the Warp Route delivers the bridged asset straight to recipient on the destination chain — no dst-side claim is registered, so the registrar + executor are NOT involved. Only valid when the recipient wants the bridged asset as-is (no destination swap). Cheaper + faster, but the user receives the bridged token, not an arbitrary outputToken. Defaults false (claim flow).
false
Raw-swap mode. When true, a same-chain PulseChain swap returns the DIRECT aggregator router call in transactionRequest instead of the diamond swapOnly wrapper. Set by the diamond executor's settlement path, which runs the destination swap itself from inside SettlementFacet.executeClaim and so needs raw router calldata (the diamond-wrapped target would make the diamond call itself and revert, and its post-fee sizing drops the estimate below the committed floor). Not for user wallets — those want the diamond route so the swap emits SwapCompleted. Defaults false.
false
Response
Deterministic quote id (hex). Caller passes back when re-quoting or correlating logs.
"0x6183cb88a1199a5b85e492cf3cfb93297bae1de0d57c33c3998a256a2675972a"
Opaque identifier for the routing tool that produced this quote. For display and support only — routing is chosen per quote, so code that branches on this breaks the first time a better route wins.
"hypermid-swap"
The bridge or exchange this route uses, with display name and logo.
What the route does: source and destination chain, token and amounts.
Expected output, fees, gas cost and duration for this route.
Per-leg breakdown of the route. A same-chain swap has a single entry; a cross-chain route runs a source swap, a bridging leg, then an optional destination swap.
Ready-to-submit transaction for the payer's wallet — to, data, value, chainId. Submit as-is.
Which internal adapter produced this quote. A Hypermid-specific addition to the standard aggregator envelope, for display and support only — do not branch on it.
lifi, piteas, uniswap_v3, superswap, diamondSwap, diamondTransfer, nearIntents "superswap"
True when this route settles via an INTENT (deposit-to-solver) flow rather than a direct on-chain swap/bridge. This is the ONLY signal the frontend needs to distinguish intent routes — it does NOT branch on source. Intent routes still execute through the same two primitives every route uses (sign transactionRequest for an EVM source, or sign the deposit instruction for a non-EVM source) and poll /status identically. Adding a NEW intent kind is a backend-only change: implement the adapter, add its QuoteSource to INTENT_SOURCES, and set this true — the frontend stays unchanged.
false
Unix seconds when this quote was generated.
1716345600
Unix seconds when this quote becomes stale. Reject after this.
1716345645
Deposit instruction for deposit-based (intent) routes. Present when the route settles by transfer to an address rather than by a contract call. For a NON-EVM source this is the payer's only actionable output — transactionRequest is an inert placeholder. For an EVM source the deposit is ALSO encoded in transactionRequest (a plain transfer to deposit.address).