---
title: "Create Quote"
method: POST
path: "/intents/route"
tags: ["Quotes"]
---

# Create Quote

`POST /intents/route`

Computes a quote for an intent: token transfers, target executions, and cost breakdown. Returns a pre-ranked `routes[]` with per-route `intentId` to pass to `POST /intents` for execution.

## Headers

- `x-api-version` '2026-01.alps', required
- `x-api-key` string, required

## Request body

- object
  - `destinationChainId` number, required — The ID of the target blockchain
  - `tokenRequests` object[], required — A list of token requested on the target chain
    - `tokenAddress` string, required — The address of the requested token. Format depends on destination chain — 0x-hex for EVM, base58 SPL mint for Solana, T-address for Tron.
    - `amount` string, uint256 — The amount of the requested token (in the smallest unit). Omit for max-out.
    - `balance` 'spot' | 'perp' — HyperCore balance class for this token request — 'spot' or 'perp'. Optional; defaults to 'perp' when destinationChainId is HyperCore. Rejected on every other destination.
  - `account` object, required — Account details
    - `address` string, required — Account address
    - `accountType` 'smartAccount' | 'GENERIC' | 'EOA' | 'ERC7579' — Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation.
    - `setupOps` object[] — Setup operations for the smart account. Only used if the account is not deployed
      - `to` string, required — Account deployment factory address
      - `data` string, required — Account deployment data
    - `mockSignatures` object — Per-chain stub signatures used only during gas estimation. Required for smart-session flows where the real signature length depends on session policy — the orchestrator needs a same-shape placeholder to simulate the verification cost. Keys are chain IDs as decimal strings; `"0"` is a cross-chain fallback applied when no chain-specific entry matches.
    - `mockSignature` unknown
    - `delegations` object — Per-chain specific map to delegated contract address for 7702 delegations. Use `0` to indicate cross-chain delegation
  - `destinationExecutions` object[] — Execution calls on the target chain.
    - `to` string, required — Target contract address for execution
    - `value` string, uint256, required — Amount of ETH (in wei) sent in the execution
    - `data` string, required — Encoded function call data
  - `preClaimExecutions` object — Execution calls to perform before the claim on each origin chain, keyed by chain ID. Max 10 ops per chain, max 5 chains.
  - `destinationGasLimit` string, uint256 — The gas limit for the target chain executions
  - `accountAccessList` object — Account access list specifying which chains and tokens an account may access
    - `chainIds` number[]
    - `tokens` union[]
      - union
        - string
        - 'ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'XPL' | 'WXPL' | 'MockUSD' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'
    - `chainTokens` object
    - `chainTokenAmounts` object
    - `exclude` object
      - `chainIds` number[]
      - `tokens` union[]
        - union
          - string
          - 'ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'XPL' | 'WXPL' | 'MockUSD' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'
      - `chainTokens` object
  - `recipient` object
    - `address` string, required — Recipient address. Format depends on destination chain — 0x-hex for EVM destinations, base58 for Solana, T-address for Tron.
    - `accountType` 'smartAccount' | 'GENERIC' | 'EOA' | 'ERC7579' — Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation.
    - `setupOps` object[] — Setup operations for the smart account. Only used if the account is not deployed
      - `to` string, required — Account deployment factory address
      - `data` string, required — Account deployment data
    - `mockSignatures` object — Per-chain stub signatures used only during gas estimation. Required for smart-session flows where the real signature length depends on session policy — the orchestrator needs a same-shape placeholder to simulate the verification cost. Keys are chain IDs as decimal strings; `"0"` is a cross-chain fallback applied when no chain-specific entry matches.
    - `mockSignature` unknown
    - `delegations` object — Per-chain specific map to delegated contract address for 7702 delegations. Use `0` to indicate cross-chain delegation
  - `options` object — Intent options
    - `settlementLayers` union — Which settlement layers the orchestrator may use. `{ include: [...] }` (allow-list) or `{ exclude: [...] }` (deny-list, inverted against the orchestrator's live layer set); a bare array means `include`. Internal modes (`SAME_CHAIN`, `INTENT_EXECUTOR`) are not selectable. Default unset = all layers eligible.
      - string[]
      - object
        - `include` string[], required
      - object
        - `exclude` string[], required
    - `sponsorSettings` object — Sponsor settings for the intent
      - `gas` boolean — Whether to sponsor gas for the intent
      - `bridgeFees` boolean — Whether to sponsor bridge fees for the intent
      - `swapFees` boolean — Whether to sponsor swap fees for the intent
    - `signatureMode` string — How the user's intent signature will be verified onchain. `ECDSA` for plain EOA signatures; `ERC1271_EMISSARY` for smart-account signatures verified via TheCompact emissary delegation. The orchestrator picks a default based on `account.accountType` — only set this if you need to override.
    - `feeToken` 'ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'XPL' | 'WXPL' | 'MockUSD' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL' — Reserved for future use. No effect today.
    - `appFees` object
      - `feeBps` integer, required — App fee rate in basis points of the input value (0–10000 = 0–100%).
    - `executionTokensReceived` string[] — Tokens that will be received by EOA executions. These will be swept to the recipient account.
    - `auxiliaryFunds` object — Additional balances the quote should treat as available, beyond what is currently on the account. Use this to get a preliminary quote against funds you can produce by the time you submit — e.g. liquidity in a DeFi vault you will withdraw, an in-flight CEX deposit, or a parallel transfer from another wallet. Keyed by chain ID, then token address; amounts in the token's smallest unit.
    - `selectionStrategy` 'cheapest' | 'fastest' | 'best' — How to rank candidate plans. `cheapest` minimizes direct USD cost. `fastest` minimizes estimated fill time (with cost tiebreaker). `best` balances both via a notional- and time-weighted shadow fee.

## Response `200`

OK

- object — Response body for `POST /quotes` on the older API version
  - `intentOp` object, required — Signed bundle ready for submission. Carries the per-chain legs, server signature, and quote metadata.
    - `sponsor` string, required — Account whose funds the intent operation will spend. Identical to the account that signed the origin signatures — this field is named `sponsor` because in TheCompact it sponsors the resource-lock claim, not because there's a separate gas-sponsor party.
    - `nonce` string, uint256, required — Intent operation nonce — a one-time identifier scoped to the orchestrator's intent registry, not an EVM transaction nonce. Used to prevent replay of the same quote.
    - `targetExecutionNonce` string, uint256 — Nonce for the optional target-execution signature (smart-session flows). Omitted for EOA accounts.
    - `expires` integer, required — Unix timestamp (seconds) after which the orchestrator will refuse to submit this intent.
    - `elements` object[], required — Per-chain legs of the bundle. One element per origin chain involved in fulfilling the destination mandate.
      - `arbiter` string, required — Contract that adjudicates settlement on this chain (TheCompact arbiter).
      - `chainId` string, uint256, required — Chain ID where the element is executed
      - `idsAndAmounts` unknown[], required — Resource-locked balances pledged on this chain, as `[ERC-6909 tokenId, amount]` pairs.
        - unknown
      - `spendTokens` unknown[], required — Subset of `idsAndAmounts` actually drawn down to fund this element. Same `[ERC-6909 tokenId, amount]` shape.
        - unknown
      - `mandate` object, required — Mandate containing execution details
        - `recipient` string, required — Address that receives the output tokens on the destination chain.
        - `tokenOut` unknown[], required — Tokens to deliver on the destination chain, as `[ERC-6909 tokenId, amount]` pairs.
          - unknown
        - `destinationChainId` string, uint256, required — Target chain ID for the mandate
        - `fillDeadline` integer, required — Unix timestamp (seconds) after which the destination fill is no longer valid.
        - `preClaimOps` object, required — Origin-chain ops that run immediately before funds are claimed by the relayer (e.g. user approvals, vault withdraws).
          - `vt` string, required — ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.
          - `ops` object[], required — Array of operations to perform
            - `to` string, required — Target contract address for execution
            - `value` string, uint256, required — Amount of ETH (in wei) sent in the execution
            - `data` string, required — Encoded function call data
        - `destinationOps` object, required — Destination-chain ops that run after funds are delivered (e.g. user's target contract call).
          - `vt` string, required — ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.
          - `ops` object[], required — Array of operations to perform
            - `to` string, required — Target contract address for execution
            - `value` string, uint256, required — Amount of ETH (in wei) sent in the execution
            - `data` string, required — Encoded function call data
        - `qualifier` object, required — Settlement-layer-specific witness data binding this mandate to a relayer route.
          - `settlementContext` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `encodedVal` string, required — ABI-encoded settlement-layer witness data. Format depends on `settlementContext.settlementLayer`. Clients should treat this as opaque bytes and pass through unchanged.
        - `minGas` string, uint256, required — Minimum gas reserved for pre-claim ops on this chain, in gas units. Packed with `preClaimGasStipend` as `uint128` for the settlement contract.
        - `swapDestinations` object[] — Swap execution data for arbitrary output tokens, aligned by index with tokenOut
          - `tokenIn` string, required
          - `amountIn` string, uint256, required
          - `amountOut` string, uint256, required
          - `slippage` number, required
          - `quoter` string, required
          - `executions` object[], required
            - `to` string, required — Target contract address for execution
            - `value` string, uint256, required — Amount of ETH (in wei) sent in the execution
            - `data` string, required — Encoded function call data
            - `senderAddressPlaceholder` string
            - `recipientAddressPlaceholder` string
          - `outputDecimals` number, required
          - `outputSymbol` string, required
      - `swapOrigins` object — Swap execution data for arbitrary input tokens, keyed by spendToken address
      - `bundleId` string, uint256 — Per-element nonce override used when this element is dispatched as its own intent (post-bridge destination ops). Unset elements fall back to the bundle-level nonce. Today only the destination-ops element on a bridge + destination-ops bundle sets this.
    - `serverSignature` string, required — HMAC digest of the bundle's canonical encoding. Set by the orchestrator at quote time and verified at submit to ensure the bundle wasn't tampered with between calls.
    - `signedMetadata` object, required
      - `strategy` 'ACROSS' | 'ECO' | 'SAME_CHAIN' | 'TOKENLESS' | 'RELAY' | 'OFT' | 'NEAR' | 'RHINO' | 'CCTP_FAST' | 'CCTP_CHEAP' — Planning strategy that produced this bundle (e.g. `ACROSS`, `RELAY`, `INTENT_EXECUTOR`). Pinned in metadata so the submission path can dispatch to the matching execution code.
      - `schemeId` string — Serialization scheme version for this bundle (e.g. `v1`). Used to migrate the bundle format without breaking in-flight quotes.
      - `tokenPrices` object, required — Snapshot of token-to-USD prices at quote time. Pinned here so cost figures remain consistent across the quote-submit window.
      - `gasPrices` object, required — Gas prices per chain in wei
      - `opGasParams` object, required — OP-stack L1-fee parameters (`l1BaseFee`, `l1BlobBaseFee`, scalars) per chain at quote time. Used to reproduce the L1 data-cost component of OP-stack chain gas — pinned so the cost does not drift between quote and submit.
        - `estimatedCalldataSize` number
      - `account` object, required
        - `address` string, required — Account address
        - `accountType` 'smartAccount' | 'GENERIC' | 'EOA' | 'ERC7579' — Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation.
        - `setupOps` object[] — Setup operations for the smart account. Only used if the account is not deployed
          - `to` string, required — Account deployment factory address
          - `data` string, required — Account deployment data
        - `accountContext` object, required — Account status per chain
        - `requiredDelegations` object — Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations
      - `recipient` object
        - `address` string, required — Recipient address. Format depends on destination chain — 0x-hex for EVM destinations, base58 for Solana, T-address for Tron.
        - `accountType` 'smartAccount' | 'GENERIC' | 'EOA' | 'ERC7579' — Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation.
        - `setupOps` object[] — Setup operations for the smart account. Only used if the account is not deployed
          - `to` string, required — Account deployment factory address
          - `data` string, required — Account deployment data
        - `accountContext` object, required — Account status per chain
        - `requiredDelegations` object — Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations
      - `fees` object
        - `sponsorFee` object — Transaction fees
          - `relayer` number, required — Fee charged by relayer
          - `protocol` number, required — Fee charged by Rhinestone
        - `protocolFees` object — Protocol fees by token address (in token units)
        - `appFee` object[]
          - `feeBps` integer, required — Integrator app-fee rate in basis points.
          - `baseAmount` string, uint256, required — Principal amount the app fee was computed from, in token base units.
          - `amount` string, uint256, required — App-fee amount in token base units.
          - `chainId` integer, required — Origin chain ID where the app-fee token is spent.
          - `tokenAddress` string, required — Address of the token used to pay the app fee.
      - `sponsorSettings` object — Sponsor settings echoed back on the older wire
        - `gasSponsored` boolean, required — Whether gas is sponsored
        - `bridgeFeesSponsored` boolean, required — Whether bridge fees are sponsored
        - `swapFeesSponsored` boolean, required — Whether swap fees are sponsored
      - `executionTokensReceived` string[] — Tokens that will be received by EOA executions. These will be swept to the recipient account.
      - `preClaimExecutions` object — User-supplied pre-claim executions included in the bundle, keyed by chain ID.
      - `accounting` object — Accounting facts derived from the selected plan and used for IntentOperation persistence. Excluded from the legacy serverSignature HMAC surface for rolling-deploy compatibility; submit integrity comes from the stored quote session.
        - `bridgeFill` object
          - `tokensOut` object[], required
            - `address` string, required
            - `chainId` number, required
            - `amount` string, uint256, required
    - `signedAuthorizations` object[] — List of 7702 authorizations signed by EOA matching sponsor
      - `chainId` number, required — Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain
      - `address` string, required — Address of the delegate for EIP-7702 delegation
      - `nonce` number, required — Nonce for EIP-7702 delegation
      - `yParity` number, required — Y parity for EIP-7702 delegation
      - `r` string, required — R value for EIP-7702 delegation
      - `s` string, required — S value for EIP-7702 delegation
    - `recipientSignedAuthorizations` object[] — List of 7702 authorizations signed by EOA matching recipient account (if present)
      - `chainId` number, required — Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain
      - `address` string, required — Address of the delegate for EIP-7702 delegation
      - `nonce` number, required — Nonce for EIP-7702 delegation
      - `yParity` number, required — Y parity for EIP-7702 delegation
      - `r` string, required — R value for EIP-7702 delegation
      - `s` string, required — S value for EIP-7702 delegation
  - `intentCost` union, required — Cost breakdown for the route. Discriminated on `hasFulfilledAll`: when `true`, the requested amounts can be delivered; when `false`, the route falls short and `tokenShortfall` lists the missing tokens.
    - object
      - `hasFulfilledAll` true, required — All requested output tokens can be fully delivered by this route.
      - `tokensSpent` object, required — Per-chain, per-token amounts the user is spending. `locked` = drawn from the resource-locked balance (TheCompact); `unlocked` = drawn from regular ERC-20 balance via approval. Sum is the total user debit on that token.
      - `tokensReceived` object[], required — Per-token delivery summary on the destination chain.
        - `tokenAddress` string, required — Contract address of the delivered token (EVM 0x or non-EVM base58).
        - `amountSpent` string, uint256, required — Total amount of this token spent at origin to deliver `destinationAmount` at destination. Includes fees.
        - `destinationAmount` string, uint256, required — Amount the user requested. Delivered amount = `destinationAmount` (when `hasFulfilled` is true).
        - `fee` string, uint256, required — Total fee charged in this token's smallest unit — sum of `feeBreakdown`.
        - `feeBreakdown` object, required — Per-category breakdown of fees in token units (BPS-derived computed values)
          - `gasFee` string, uint256, required — Combined gas fees: destination fill, destination swap execution, and origin chain gas
          - `bridgeFee` string, uint256, required — Cross-chain bridge commission charged by the relayer
          - `protocolFee` string, uint256, required — Protocol fee charged by Rhinestone
          - `swapFee` string, uint256, required — Solver swap commission for cross-token conversions
          - `settlementFee` string, uint256, required — Settlement layer fee (e.g. Relay, Across)
          - `appFee` string, uint256, required — Integrator app fee charged in the fee-bearing input token
          - `hyperCoreActivationFee` string, uint256, required — Hyperliquid HyperCore activation fee — 1 USDC charged on the first inbound deposit to a non-activated HyperCore account. Equal to 1_000_000 (USDC 6-decimal wei) when the orchestrator detects an unactivated HyperCore recipient and inflates the user's USDC delivery to cover the fee; 0 otherwise. Always present, like every other field in the breakdown.
        - `feesByToken` object, required — Fees paid in tokens other than the output token (e.g., settlement fees, origin gas in input token)
        - `hasFulfilled` boolean, required — True when the route fully delivers `destinationAmount` for this token.
      - `sponsorFee` object, required — Transaction fees
        - `relayer` number, required — Fee charged by relayer
        - `protocol` number, required — Fee charged by Rhinestone
      - `appFee` object[], required — Concrete app-fee legs charged to the user. Empty when no app fee applies; app fees are never sponsored.
        - `feeBps` integer, required — Integrator app-fee rate in basis points.
        - `baseAmount` string, uint256, required — Principal amount the app fee was computed from, in token base units.
        - `amount` string, uint256, required — App-fee amount in token base units.
        - `chainId` integer, required — Origin chain ID where the app-fee token is spent.
        - `tokenAddress` string, required — Address of the token used to pay the app fee.
      - `gasCost` object, required — Breakdown of gas costs across origin and destination chains
        - `originChains` object[], required — Gas costs per origin chain
          - `chainId` number, required — Chain ID where the gas cost was incurred
          - `gasUSD` number, required — Gas cost in USD
        - `destination` object, required — Gas cost on the destination chain
          - `chainId` number, required — Chain ID where the gas cost was incurred
          - `gasUSD` number, required — Gas cost in USD
        - `totalUSD` number, required — Total gas cost in USD across all chains
      - `feeBreakdownUSD` object, required — Aggregate fee breakdown in USD across all tokens and chains
        - `gasFeeUSD` number, required — Total gas fees in USD (destination fill, swap execution, origin gas)
        - `bridgeFeeUSD` number, required — Total bridge commission in USD
        - `protocolFeeUSD` number, required — Total protocol fee in USD
        - `swapFeeUSD` number, required — Total solver swap commission in USD
        - `settlementFeeUSD` number, required — Total settlement layer fee in USD
        - `appFeeUSD` number, required — Total integrator app fee in USD
        - `totalFeeUSD` number, required — Sum of all fees in USD (including sponsored)
    - object
      - `hasFulfilledAll` false, required — One or more requested output tokens fall short on this route. See `tokenShortfall` for details.
      - `tokenShortfall` object[], required — List of tokens that have not been fulfilled
        - `tokenAddress` string, required — Address of the token that has not been fulfilled (EVM 0x or non-EVM base58)
        - `destinationAmount` string, uint256, required — Target amount of the token that has not been fulfilled
        - `amountSpent` string, uint256, required — Amount spent on the token that has not been fulfilled
        - `fee` string, uint256, required — Fee associated with the token that has not been fulfilled
        - `feesByToken` object, required — Fees paid in tokens other than the output token (e.g., settlement fees, origin gas in input token)
        - `tokenSymbol` string, required — Symbol of the token that has not been fulfilled
        - `decimals` number, required — Number of decimal places for the token
      - `totalTokenShortfallInUSD` number, required — Total shortfall of tokens in USD
  - `tokenRequirements` object — Pre-flight token operations the user must perform before submitting this route (approvals, wrapping). Emitted for EOA accounts only.

## Other responses

- `400` — Invalid request parameters
- `403` — API key scope denied
- `500` — Server error

---

[API](https://skmtc.net/rhinestonewtf/apis/rhinestone-orchestrator-api.md) · [All operations](https://skmtc.net/rhinestonewtf/apis/rhinestone-orchestrator-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rhinestonewtf/rhinestone-orchestrator-api/revisions/3656a04f8c42/schema)
