> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Request a quote

> Returns an executable quote for a stablecoin transfer, with the transaction to send, the intent, and the minimum output.

Returns one executable, signed quote for moving a stablecoin between chains, or within a chain, for `source.funder`. `type` fixes either `source.amount` (`exact-in`) or `destination.amount` (`exact-out`); `custom` requires user-authored `destination.calls`. `dappId` is required. The response is a top-level quote object with the transaction to send from the funder (`execution.transaction`), the decoded intent, `destination.amountOut` and `minAmountOut`, fees, per-step intents, and `expiresAt`. `signature` verifies against the source chain's `quoteSigner` from `GET /v1/chains`; the returned `intentHash` is the handle for `GET /v1/intents/status`.

An unsupported chain returns `422 chain-not-supported`. Routes no solver will fill (unlisted tokens, unavailable liquidity, amounts above what solvers hold) currently return `502 solver-error`.

Requires `x-api-key`. Partner pricing, attribution, and enabled features are tied to the key. Without a key the gateway answers `403` with a plain JSON body (`{"Message": "User is not authorized ..."}`); a key that is unknown, revoked, or not enabled for v1 answers `401 invalid-api-key`. No requests-per-second quota is published. Handle `429` and honor `Retry-After` when present.

Examples use real mainnet token and contract addresses with placeholder wallets, hashes, signatures, and IDs.


## OpenAPI

````yaml api-v1.openapi.json POST /v1/quotes
openapi: 3.1.0
info:
  title: Eco API
  version: v1
  description: >-
    Reference for the Eco API at https://api.eco.com/v1: quotes, chain and token
    discovery, gasless funding, intent status, and Circle Gateway fast deposits.
    Every operation requires an API key except the Circle Gateway operations,
    which are open.
servers:
  - url: https://api.eco.com
    description: Eco API
security: []
tags:
  - name: quotes
  - name: intents
  - name: status
  - name: discovery
  - name: circle-gateway
paths:
  /v1/quotes:
    post:
      tags:
        - quotes
      summary: Request a quote
      description: >-
        Returns one executable, signed quote for moving a stablecoin between
        chains, or within a chain, for `source.funder`. `type` fixes either
        `source.amount` (`exact-in`) or `destination.amount` (`exact-out`);
        `custom` requires user-authored `destination.calls`. `dappId` is
        required. The response is a top-level quote object with the transaction
        to send from the funder (`execution.transaction`), the decoded intent,
        `destination.amountOut` and `minAmountOut`, fees, per-step intents, and
        `expiresAt`. `signature` verifies against the source chain's
        `quoteSigner` from `GET /v1/chains`; the returned `intentHash` is the
        handle for `GET /v1/intents/status`.


        An unsupported chain returns `422 chain-not-supported`. Routes no solver
        will fill (unlisted tokens, unavailable liquidity, amounts above what
        solvers hold) currently return `502 solver-error`.


        Requires `x-api-key`. Partner pricing, attribution, and enabled features
        are tied to the key. Without a key the gateway answers `403` with a
        plain JSON body (`{"Message": "User is not authorized ..."}`); a key
        that is unknown, revoked, or not enabled for v1 answers `401
        invalid-api-key`.


        No requests-per-second quota is published. Handle `429` and honor
        `Retry-After` when present.


        Examples use real mainnet token and contract addresses with placeholder
        wallets, hashes, signatures, and IDs.
      operationId: quotes.create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - exact-in
                    - exact-out
                    - custom
                  description: >-
                    Which amount is fixed. `exact-in`: `source.amount` is spent
                    and `destination.minAmountOut` is guaranteed. `exact-out`:
                    `destination.amount` arrives and the response's
                    `source.amount` is the required input. `custom`:
                    `source.amount` is spent and the supplied
                    `destination.calls` execute on the destination chain.
                source:
                  type: object
                  properties:
                    chainId:
                      type: integer
                      exclusiveMinimum: 0
                    token:
                      type: string
                      description: >-
                        Address on the relevant chain: `0x…` hex for EVM chains,
                        base58 for Solana, `T…` base58 for Tron.
                    amount:
                      type: string
                      maxLength: 78
                      description: >-
                        Base-10 unsigned integer string in smallest units; must
                        be greater than 0
                    funder:
                      description: >-
                        Wallet that funds the intent on the source chain. The
                        quote, its intent, and its signature are built for this
                        address. Address on the source chain: `0x…` hex for EVM
                        chains, base58 for Solana.
                      type: string
                  required:
                    - chainId
                    - token
                    - funder
                  additionalProperties: false
                destination:
                  type: object
                  properties:
                    chainId:
                      type: integer
                      exclusiveMinimum: 0
                    token:
                      type: string
                      description: >-
                        Address on the relevant chain: `0x…` hex for EVM chains,
                        base58 for Solana, `T…` base58 for Tron.
                    amount:
                      type: string
                      maxLength: 78
                      description: >-
                        Base-10 unsigned integer string in smallest units; must
                        be greater than 0
                    recipient:
                      description: >-
                        Required. Receives the output on the destination chain.
                        Address on the destination chain: `0x…` hex for EVM
                        chains, base58 for Solana.
                      type: string
                    calls:
                      type: array
                      items:
                        type: object
                        properties:
                          target:
                            type: string
                            description: >-
                              Address on the relevant chain: `0x…` hex for EVM
                              chains, base58 for Solana, `T…` base58 for Tron.
                          data:
                            type: string
                          value:
                            type: string
                            maxLength: 78
                          tokenOut:
                            type: string
                            description: >-
                              Address on the relevant chain: `0x…` hex for EVM
                              chains, base58 for Solana, `T…` base58 for Tron.
                          gasLimit:
                            type: string
                            maxLength: 78
                        required:
                          - target
                          - data
                          - value
                        additionalProperties: false
                      description: >-
                        Destination calls to execute, for `type: custom` only.
                        Each call is `target`, `data`, and a base-unit `value`
                        string; `tokenOut` and `gasLimit` are optional.
                  required:
                    - chainId
                    - token
                    - recipient
                  additionalProperties: false
                refundRecipient:
                  description: >-
                    Receives the source funds if the intent is refunded.
                    Defaults to `source.funder`. Address on the source chain.
                  type: string
                slippage:
                  type: number
                  description: >-
                    Decimal fraction of the destination amount: 0.005 = 0.5%.
                    Range 0.0001-1; a percent-style 0.5 would mean 50%.
                  minimum: 0.0001
                  maximum: 1
                dappId:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: >-
                    Required. Attribution label for the integration. Does not
                    authenticate and does not change pricing.
                options:
                  type: object
                  properties:
                    deadlineSec:
                      type: integer
                      exclusiveMinimum: 0
                      description: Requested intent deadline, in seconds from now.
                    allQuotes:
                      type: boolean
                      description: >-
                        Return every competing quote in `quotes`, ranked best
                        first and each independently signed. Default: winner
                        only, `quotes: null`.
                  additionalProperties: false
              required:
                - type
                - source
                - destination
                - dappId
              additionalProperties: false
            examples:
              exact-in:
                summary: 'Exact-in: send 1 USDC from Base, receive USDC on OP Mainnet'
                value:
                  type: exact-in
                  source:
                    chainId: 8453
                    token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                    amount: '1000000'
                    funder: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                  destination:
                    chainId: 10
                    token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                    recipient: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'
                  slippage: 0.005
                  dappId: your-app
              exact-out:
                summary: >-
                  Exact-out: receive exactly 25 USDC on Arbitrum, pay USDC from
                  Base
                value:
                  type: exact-out
                  source:
                    chainId: 8453
                    token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                    funder: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                  destination:
                    chainId: 42161
                    token: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                    amount: '25000000'
                    recipient: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'
                  dappId: your-app
              all-quotes:
                summary: Exact-in with every competing quote returned
                value:
                  type: exact-in
                  source:
                    chainId: 8453
                    token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                    amount: '1000000'
                    funder: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                  destination:
                    chainId: 10
                    token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                    recipient: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'
                  slippage: 0.005
                  dappId: your-app
                  options:
                    allQuotes: true
      responses:
        '200':
          description: >-
            The winning quote. Verify `signature` against the source chain's
            `quoteSigner`, then fund before `expiresAt`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: >-
                      Quote ID, prefixed `quote:`. Status lookups take the bare
                      UUID.
                  type:
                    type: string
                    enum:
                      - exact-in
                      - exact-out
                      - custom
                    description: Echo of the request `type`.
                  source:
                    type: object
                    properties:
                      chainId:
                        type: integer
                      token:
                        type: string
                        description: >-
                          Address on the relevant chain: `0x…` hex for EVM
                          chains, base58 for Solana, `T…` base58 for Tron.
                      amount:
                        type: string
                      funder:
                        type: string
                        description: >-
                          Address on the relevant chain: `0x…` hex for EVM
                          chains, base58 for Solana, `T…` base58 for Tron.
                      symbol:
                        type:
                          - string
                          - 'null'
                      decimals:
                        type:
                          - integer
                          - 'null'
                    required:
                      - chainId
                      - token
                      - amount
                      - funder
                      - symbol
                      - decimals
                  destination:
                    type: object
                    properties:
                      chainId:
                        type: integer
                      token:
                        type: string
                        description: >-
                          Address on the relevant chain: `0x…` hex for EVM
                          chains, base58 for Solana, `T…` base58 for Tron.
                      amountOut:
                        type: string
                        description: Expected output amount in base units.
                      minAmountOut:
                        type: string
                        description: >-
                          Guaranteed minimum output after `slippage`. The
                          recipient receives at least this or the source funds
                          refund.
                      recipient:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Address on the relevant chain: `0x…` hex for EVM
                          chains, base58 for Solana, `T…` base58 for Tron.
                      symbol:
                        type:
                          - string
                          - 'null'
                      decimals:
                        type:
                          - integer
                          - 'null'
                    required:
                      - chainId
                      - token
                      - amountOut
                      - minAmountOut
                      - recipient
                      - symbol
                      - decimals
                  slippage:
                    type: number
                    description: >-
                      Tolerance actually bound into destination.minAmountOut, as
                      a decimal fraction
                  fees:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - gas
                            - proving
                            - protocol
                            - gateway
                        amount:
                          type: string
                        token:
                          type: object
                          properties:
                            chainId:
                              type: integer
                            address:
                              type: string
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            symbol:
                              type:
                                - string
                                - 'null'
                            decimals:
                              type:
                                - integer
                                - 'null'
                          required:
                            - chainId
                            - address
                            - symbol
                            - decimals
                        estimate:
                          type: boolean
                      required:
                        - type
                        - amount
                        - token
                        - estimate
                    description: >-
                      Fees charged for the whole quote, by `type` (`gas`,
                      `proving`, `protocol`, `gateway`). `estimate: false` means
                      the amount is binding.
                  steps:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - swap
                            - bridge
                            - deposit
                            - transfer
                        provider:
                          type: string
                        aggregator:
                          type: string
                        from:
                          type: object
                          properties:
                            chainId:
                              type: integer
                            token:
                              type: string
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            amount:
                              type: string
                          required:
                            - chainId
                            - token
                            - amount
                        to:
                          type: object
                          properties:
                            chainId:
                              type: integer
                            token:
                              type: string
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            amount:
                              type: string
                          required:
                            - chainId
                            - token
                            - amount
                        fees:
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - gas
                                  - proving
                                  - protocol
                                  - gateway
                              amount:
                                type: string
                              token:
                                type: object
                                properties:
                                  chainId:
                                    type: integer
                                  address:
                                    type: string
                                    description: >-
                                      Address on the relevant chain: `0x…` hex
                                      for EVM chains, base58 for Solana, `T…`
                                      base58 for Tron.
                                  symbol:
                                    type:
                                      - string
                                      - 'null'
                                  decimals:
                                    type:
                                      - integer
                                      - 'null'
                                required:
                                  - chainId
                                  - address
                                  - symbol
                                  - decimals
                              estimate:
                                type: boolean
                            required:
                              - type
                              - amount
                              - token
                              - estimate
                        estimatedDurationSec:
                          type: integer
                        intents:
                          type: array
                          items:
                            type: object
                            properties:
                              role:
                                type: string
                                enum:
                                  - local
                                  - bucket-candidate
                                  - stitched-destination
                                description: >-
                                  `local`: same-chain leg.
                                  `stitched-destination`: final leg that credits
                                  the recipient. `bucket-candidate`: one of
                                  several candidate routes.
                              intentHash:
                                type: string
                              routeHash:
                                type: string
                              bucketIndex:
                                type: integer
                              intent:
                                type: object
                                properties:
                                  route:
                                    type: object
                                    properties:
                                      salt:
                                        type: string
                                      deadline:
                                        type: integer
                                      source:
                                        type: integer
                                      destination:
                                        type: integer
                                      portal:
                                        type: string
                                        description: >-
                                          Address on the relevant chain: `0x…` hex
                                          for EVM chains, base58 for Solana, `T…`
                                          base58 for Tron.
                                      nativeAmount:
                                        type: string
                                      tokens:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            token:
                                              type: string
                                              description: >-
                                                Address on the relevant chain: `0x…` hex
                                                for EVM chains, base58 for Solana, `T…`
                                                base58 for Tron.
                                            amount:
                                              type: string
                                          required:
                                            - token
                                            - amount
                                      calls:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            target:
                                              type: string
                                              description: >-
                                                Address on the relevant chain: `0x…` hex
                                                for EVM chains, base58 for Solana, `T…`
                                                base58 for Tron.
                                            data:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                            - target
                                            - data
                                            - value
                                    required:
                                      - salt
                                      - deadline
                                      - source
                                      - destination
                                      - portal
                                      - nativeAmount
                                      - tokens
                                      - calls
                                  reward:
                                    type: object
                                    properties:
                                      deadline:
                                        type: integer
                                      creator:
                                        type: string
                                        description: >-
                                          Address on the relevant chain: `0x…` hex
                                          for EVM chains, base58 for Solana, `T…`
                                          base58 for Tron.
                                      prover:
                                        type: string
                                        description: >-
                                          Address on the relevant chain: `0x…` hex
                                          for EVM chains, base58 for Solana, `T…`
                                          base58 for Tron.
                                      nativeAmount:
                                        type: string
                                      tokens:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            token:
                                              type: string
                                              description: >-
                                                Address on the relevant chain: `0x…` hex
                                                for EVM chains, base58 for Solana, `T…`
                                                base58 for Tron.
                                            amount:
                                              type: string
                                          required:
                                            - token
                                            - amount
                                    required:
                                      - deadline
                                      - creator
                                      - prover
                                      - nativeAmount
                                      - tokens
                                required:
                                  - route
                                  - reward
                            required:
                              - role
                              - intentHash
                              - intent
                      required:
                        - type
                        - provider
                        - from
                        - to
                        - fees
                        - estimatedDurationSec
                        - intents
                    description: >-
                      Ordered legs of the route. Each step names its `provider`
                      and lists the `intents` it is realized by, with the full
                      decoded intent. A `stitched-destination` intent credits
                      the recipient on a multi-hop route and is the one to track
                      for delivery; `bucket-candidate` entries are alternative
                      routes, not all of which fill.
                  solver:
                    type: object
                    properties:
                      id:
                        type: string
                        description: >-
                          Address on the relevant chain: `0x…` hex for EVM
                          chains, base58 for Solana, `T…` base58 for Tron.
                      name:
                        type: string
                    required:
                      - id
                    description: The solver that will fulfil the intent.
                  intentHash:
                    description: >-
                      Hash of the primary intent; the handle for `GET
                      /v1/intents/status?intentHash=`. Null when every intent is
                      listed under `steps[].intents`.
                    type:
                      - string
                      - 'null'
                  execution:
                    description: >-
                      Everything needed to fund the quote: the ready-to-send
                      `transaction`, the decoded `intent` (route and reward),
                      and the `vault` the source Portal funds the intent
                      through, which is also the counterparty for gasless
                      submits. Sent as-is.
                    type:
                      - object
                      - 'null'
                    properties:
                      transaction:
                        oneOf:
                          - type: object
                            properties:
                              type:
                                type: string
                                const: evm
                              chainId:
                                type: integer
                              to:
                                type: string
                              data:
                                type: string
                              value:
                                type: string
                            required:
                              - type
                              - chainId
                              - to
                              - data
                              - value
                          - type: object
                            properties:
                              type:
                                type: string
                                const: svm
                              chainId:
                                type: integer
                              feePayer:
                                type: string
                              instructions:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    programId:
                                      type: string
                                    accounts:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          pubkey:
                                            type: string
                                          isSigner:
                                            type: boolean
                                          isWritable:
                                            type: boolean
                                        required:
                                          - pubkey
                                          - isSigner
                                          - isWritable
                                    data:
                                      type: string
                                  required:
                                    - programId
                                    - accounts
                                    - data
                            required:
                              - type
                              - chainId
                              - feePayer
                              - instructions
                      intent:
                        type: object
                        properties:
                          route:
                            type: object
                            properties:
                              salt:
                                type: string
                              deadline:
                                type: integer
                              source:
                                type: integer
                              destination:
                                type: integer
                              portal:
                                type: string
                                description: >-
                                  Address on the relevant chain: `0x…` hex for
                                  EVM chains, base58 for Solana, `T…` base58 for
                                  Tron.
                              nativeAmount:
                                type: string
                              tokens:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    token:
                                      type: string
                                      description: >-
                                        Address on the relevant chain: `0x…` hex
                                        for EVM chains, base58 for Solana, `T…`
                                        base58 for Tron.
                                    amount:
                                      type: string
                                  required:
                                    - token
                                    - amount
                              calls:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    target:
                                      type: string
                                      description: >-
                                        Address on the relevant chain: `0x…` hex
                                        for EVM chains, base58 for Solana, `T…`
                                        base58 for Tron.
                                    data:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                    - target
                                    - data
                                    - value
                            required:
                              - salt
                              - deadline
                              - source
                              - destination
                              - portal
                              - nativeAmount
                              - tokens
                              - calls
                          reward:
                            type: object
                            properties:
                              deadline:
                                type: integer
                              creator:
                                type: string
                                description: >-
                                  Address on the relevant chain: `0x…` hex for
                                  EVM chains, base58 for Solana, `T…` base58 for
                                  Tron.
                              prover:
                                type: string
                                description: >-
                                  Address on the relevant chain: `0x…` hex for
                                  EVM chains, base58 for Solana, `T…` base58 for
                                  Tron.
                              nativeAmount:
                                type: string
                              tokens:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    token:
                                      type: string
                                      description: >-
                                        Address on the relevant chain: `0x…` hex
                                        for EVM chains, base58 for Solana, `T…`
                                        base58 for Tron.
                                    amount:
                                      type: string
                                  required:
                                    - token
                                    - amount
                            required:
                              - deadline
                              - creator
                              - prover
                              - nativeAmount
                              - tokens
                        required:
                          - route
                          - reward
                      vault:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Address on the relevant chain: `0x…` hex for EVM
                          chains, base58 for Solana, `T…` base58 for Tron.
                    required:
                      - transaction
                      - intent
                  expiresAt:
                    type: integer
                    description: >-
                      Quote expiry, Unix seconds. Covered by `signature`. Fund
                      before it passes; afterwards request a new quote.
                  signature:
                    type: string
                    description: >-
                      EIP-712 signature by the source chain's `quoteSigner` (see
                      `GET /v1/chains`) over `Quote(string id, bytes32[]
                      intentHashes, uint64 expiresAt)` with domain `{ name:
                      "EcoQuoteV1", version: "1", chainId: source.chainId }`.
                      `intentHashes` is `intentHash` plus every
                      `steps[].intents[].intentHash`, lowercased, de-duplicated,
                      sorted ascending.
                  quotes:
                    description: >-
                      Every competing quote, ranked best first, when
                      `options.allQuotes` is true; each entry is independently
                      signed. Null otherwise. The top-level object is always the
                      winner.
                    type:
                      - array
                      - 'null'
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        type:
                          type: string
                          enum:
                            - exact-in
                            - exact-out
                            - custom
                        source:
                          type: object
                          properties:
                            chainId:
                              type: integer
                            token:
                              type: string
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            amount:
                              type: string
                            funder:
                              type: string
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            symbol:
                              type:
                                - string
                                - 'null'
                            decimals:
                              type:
                                - integer
                                - 'null'
                          required:
                            - chainId
                            - token
                            - amount
                            - funder
                            - symbol
                            - decimals
                        destination:
                          type: object
                          properties:
                            chainId:
                              type: integer
                            token:
                              type: string
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            amountOut:
                              type: string
                            minAmountOut:
                              type: string
                            recipient:
                              type:
                                - string
                                - 'null'
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            symbol:
                              type:
                                - string
                                - 'null'
                            decimals:
                              type:
                                - integer
                                - 'null'
                          required:
                            - chainId
                            - token
                            - amountOut
                            - minAmountOut
                            - recipient
                            - symbol
                            - decimals
                        slippage:
                          type: number
                          description: >-
                            Tolerance actually bound into
                            destination.minAmountOut, as a decimal fraction
                        fees:
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - gas
                                  - proving
                                  - protocol
                                  - gateway
                              amount:
                                type: string
                              token:
                                type: object
                                properties:
                                  chainId:
                                    type: integer
                                  address:
                                    type: string
                                    description: >-
                                      Address on the relevant chain: `0x…` hex
                                      for EVM chains, base58 for Solana, `T…`
                                      base58 for Tron.
                                  symbol:
                                    type:
                                      - string
                                      - 'null'
                                  decimals:
                                    type:
                                      - integer
                                      - 'null'
                                required:
                                  - chainId
                                  - address
                                  - symbol
                                  - decimals
                              estimate:
                                type: boolean
                            required:
                              - type
                              - amount
                              - token
                              - estimate
                        steps:
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - swap
                                  - bridge
                                  - deposit
                                  - transfer
                              provider:
                                type: string
                              aggregator:
                                type: string
                              from:
                                type: object
                                properties:
                                  chainId:
                                    type: integer
                                  token:
                                    type: string
                                    description: >-
                                      Address on the relevant chain: `0x…` hex
                                      for EVM chains, base58 for Solana, `T…`
                                      base58 for Tron.
                                  amount:
                                    type: string
                                required:
                                  - chainId
                                  - token
                                  - amount
                              to:
                                type: object
                                properties:
                                  chainId:
                                    type: integer
                                  token:
                                    type: string
                                    description: >-
                                      Address on the relevant chain: `0x…` hex
                                      for EVM chains, base58 for Solana, `T…`
                                      base58 for Tron.
                                  amount:
                                    type: string
                                required:
                                  - chainId
                                  - token
                                  - amount
                              fees:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - gas
                                        - proving
                                        - protocol
                                        - gateway
                                    amount:
                                      type: string
                                    token:
                                      type: object
                                      properties:
                                        chainId:
                                          type: integer
                                        address:
                                          type: string
                                          description: >-
                                            Address on the relevant chain: `0x…` hex
                                            for EVM chains, base58 for Solana, `T…`
                                            base58 for Tron.
                                        symbol:
                                          type:
                                            - string
                                            - 'null'
                                        decimals:
                                          type:
                                            - integer
                                            - 'null'
                                      required:
                                        - chainId
                                        - address
                                        - symbol
                                        - decimals
                                    estimate:
                                      type: boolean
                                  required:
                                    - type
                                    - amount
                                    - token
                                    - estimate
                              estimatedDurationSec:
                                type: integer
                              intents:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    role:
                                      type: string
                                      enum:
                                        - local
                                        - bucket-candidate
                                        - stitched-destination
                                    intentHash:
                                      type: string
                                    routeHash:
                                      type: string
                                    bucketIndex:
                                      type: integer
                                    intent:
                                      type: object
                                      properties:
                                        route:
                                          type: object
                                          properties:
                                            salt:
                                              type: string
                                            deadline:
                                              type: integer
                                            source:
                                              type: integer
                                            destination:
                                              type: integer
                                            portal:
                                              type: string
                                              description: >-
                                                Address on the relevant chain: `0x…` hex
                                                for EVM chains, base58 for Solana, `T…`
                                                base58 for Tron.
                                            nativeAmount:
                                              type: string
                                            tokens:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  token:
                                                    type: string
                                                    description: >-
                                                      Address on the relevant chain: `0x…` hex
                                                      for EVM chains, base58 for Solana, `T…`
                                                      base58 for Tron.
                                                  amount:
                                                    type: string
                                                required:
                                                  - token
                                                  - amount
                                            calls:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  target:
                                                    type: string
                                                    description: >-
                                                      Address on the relevant chain: `0x…` hex
                                                      for EVM chains, base58 for Solana, `T…`
                                                      base58 for Tron.
                                                  data:
                                                    type: string
                                                  value:
                                                    type: string
                                                required:
                                                  - target
                                                  - data
                                                  - value
                                          required:
                                            - salt
                                            - deadline
                                            - source
                                            - destination
                                            - portal
                                            - nativeAmount
                                            - tokens
                                            - calls
                                        reward:
                                          type: object
                                          properties:
                                            deadline:
                                              type: integer
                                            creator:
                                              type: string
                                              description: >-
                                                Address on the relevant chain: `0x…` hex
                                                for EVM chains, base58 for Solana, `T…`
                                                base58 for Tron.
                                            prover:
                                              type: string
                                              description: >-
                                                Address on the relevant chain: `0x…` hex
                                                for EVM chains, base58 for Solana, `T…`
                                                base58 for Tron.
                                            nativeAmount:
                                              type: string
                                            tokens:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  token:
                                                    type: string
                                                    description: >-
                                                      Address on the relevant chain: `0x…` hex
                                                      for EVM chains, base58 for Solana, `T…`
                                                      base58 for Tron.
                                                  amount:
                                                    type: string
                                                required:
                                                  - token
                                                  - amount
                                          required:
                                            - deadline
                                            - creator
                                            - prover
                                            - nativeAmount
                                            - tokens
                                      required:
                                        - route
                                        - reward
                                  required:
                                    - role
                                    - intentHash
                                    - intent
                            required:
                              - type
                              - provider
                              - from
                              - to
                              - fees
                              - estimatedDurationSec
                              - intents
                        solver:
                          type: object
                          properties:
                            id:
                              type: string
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                            name:
                              type: string
                          required:
                            - id
                        intentHash:
                          type:
                            - string
                            - 'null'
                        execution:
                          type:
                            - object
                            - 'null'
                          properties:
                            transaction:
                              oneOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      const: evm
                                    chainId:
                                      type: integer
                                    to:
                                      type: string
                                    data:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                    - type
                                    - chainId
                                    - to
                                    - data
                                    - value
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      const: svm
                                    chainId:
                                      type: integer
                                    feePayer:
                                      type: string
                                    instructions:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          programId:
                                            type: string
                                          accounts:
                                            type: array
                                            items:
                                              type: object
                                              properties:
                                                pubkey:
                                                  type: string
                                                isSigner:
                                                  type: boolean
                                                isWritable:
                                                  type: boolean
                                              required:
                                                - pubkey
                                                - isSigner
                                                - isWritable
                                          data:
                                            type: string
                                        required:
                                          - programId
                                          - accounts
                                          - data
                                  required:
                                    - type
                                    - chainId
                                    - feePayer
                                    - instructions
                            intent:
                              type: object
                              properties:
                                route:
                                  type: object
                                  properties:
                                    salt:
                                      type: string
                                    deadline:
                                      type: integer
                                    source:
                                      type: integer
                                    destination:
                                      type: integer
                                    portal:
                                      type: string
                                      description: >-
                                        Address on the relevant chain: `0x…` hex
                                        for EVM chains, base58 for Solana, `T…`
                                        base58 for Tron.
                                    nativeAmount:
                                      type: string
                                    tokens:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          token:
                                            type: string
                                            description: >-
                                              Address on the relevant chain: `0x…` hex
                                              for EVM chains, base58 for Solana, `T…`
                                              base58 for Tron.
                                          amount:
                                            type: string
                                        required:
                                          - token
                                          - amount
                                    calls:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          target:
                                            type: string
                                            description: >-
                                              Address on the relevant chain: `0x…` hex
                                              for EVM chains, base58 for Solana, `T…`
                                              base58 for Tron.
                                          data:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                          - target
                                          - data
                                          - value
                                  required:
                                    - salt
                                    - deadline
                                    - source
                                    - destination
                                    - portal
                                    - nativeAmount
                                    - tokens
                                    - calls
                                reward:
                                  type: object
                                  properties:
                                    deadline:
                                      type: integer
                                    creator:
                                      type: string
                                      description: >-
                                        Address on the relevant chain: `0x…` hex
                                        for EVM chains, base58 for Solana, `T…`
                                        base58 for Tron.
                                    prover:
                                      type: string
                                      description: >-
                                        Address on the relevant chain: `0x…` hex
                                        for EVM chains, base58 for Solana, `T…`
                                        base58 for Tron.
                                    nativeAmount:
                                      type: string
                                    tokens:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          token:
                                            type: string
                                            description: >-
                                              Address on the relevant chain: `0x…` hex
                                              for EVM chains, base58 for Solana, `T…`
                                              base58 for Tron.
                                          amount:
                                            type: string
                                        required:
                                          - token
                                          - amount
                                  required:
                                    - deadline
                                    - creator
                                    - prover
                                    - nativeAmount
                                    - tokens
                              required:
                                - route
                                - reward
                            vault:
                              type:
                                - string
                                - 'null'
                              description: >-
                                Address on the relevant chain: `0x…` hex for EVM
                                chains, base58 for Solana, `T…` base58 for Tron.
                          required:
                            - transaction
                            - intent
                        expiresAt:
                          type: integer
                        signature:
                          type: string
                      required:
                        - id
                        - type
                        - source
                        - destination
                        - slippage
                        - fees
                        - steps
                        - solver
                        - intentHash
                        - execution
                        - expiresAt
                        - signature
                required:
                  - id
                  - type
                  - source
                  - destination
                  - slippage
                  - fees
                  - steps
                  - solver
                  - intentHash
                  - execution
                  - expiresAt
                  - signature
                  - quotes
              examples:
                exact-in:
                  summary: >-
                    Live 0.9.0 response shape (Base USDC to OP Mainnet USDC).
                    Calldata trimmed; the real value is ~2 KB.
                  value:
                    id: quote:8a7cbdcd-2aed-40b0-ab08-c4c10af15f23
                    type: exact-in
                    source:
                      chainId: 8453
                      token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      amount: '1000000'
                      funder: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                      symbol: null
                      decimals: null
                    destination:
                      chainId: 10
                      token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                      amountOut: '989500'
                      minAmountOut: '989500'
                      recipient: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'
                      symbol: null
                      decimals: null
                    slippage: 0.005
                    fees:
                      - type: protocol
                        amount: '10500'
                        token:
                          chainId: 8453
                          address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                          symbol: USDC
                          decimals: 6
                        estimate: false
                    steps:
                      - type: bridge
                        provider: eco
                        from:
                          chainId: 8453
                          token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                          amount: '1000000'
                        to:
                          chainId: 10
                          token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                          amount: '989500'
                        fees: []
                        estimatedDurationSec: 7
                        intents:
                          - role: local
                            intentHash: >-
                              0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                            intent:
                              route:
                                salt: >-
                                  0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                                deadline: 1789523774
                                source: 8453
                                destination: 10
                                portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                                nativeAmount: '0'
                                tokens:
                                  - token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                    amount: '989500'
                                calls:
                                  - target: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                    data: >-
                                      0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                                    value: '0'
                              reward:
                                deadline: 1789524404
                                creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                                prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                                nativeAmount: '0'
                                tokens:
                                  - token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                                    amount: '1000000'
                    solver:
                      id: '0x1Da38A31F369343bdD33cCc48E89D165E8ab3450'
                    intentHash: >-
                      0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                    execution:
                      transaction:
                        type: evm
                        chainId: 8453
                        to: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                        data: >-
                          0xdf00f8fa000000000000000000000000000000000000000000000000000000000000000a…
                        value: '0'
                      intent:
                        route:
                          salt: >-
                            0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                          deadline: 1789523774
                          source: 8453
                          destination: 10
                          portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                          nativeAmount: '0'
                          tokens:
                            - token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                              amount: '989500'
                          calls:
                            - target: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                              data: >-
                                0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                              value: '0'
                        reward:
                          deadline: 1789524404
                          creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                          prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                          nativeAmount: '0'
                          tokens:
                            - token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                              amount: '1000000'
                      vault: '0xf6358b8f1d0Ec04EBc9Fe8FdEe5e6791640D1c2F'
                    expiresAt: 1789522904
                    signature: >-
                      0xedc90fdd27654dd49ac1087901450c9c5fdf444943f61faa8d787bee86304d821f06a5db4a67eddf5cf286014d6ec8bd33c64f9e072045a9f3c5e50cc28960fc1b
                    quotes: null
                all-quotes:
                  summary: >-
                    With options.allQuotes: the winner at the top level and
                    every candidate, each signed, in quotes[]
                  value:
                    id: quote:8a7cbdcd-2aed-40b0-ab08-c4c10af15f23
                    type: exact-in
                    source:
                      chainId: 8453
                      token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      amount: '1000000'
                      funder: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                      symbol: null
                      decimals: null
                    destination:
                      chainId: 10
                      token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                      amountOut: '989500'
                      minAmountOut: '989500'
                      recipient: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'
                      symbol: null
                      decimals: null
                    slippage: 0.005
                    fees:
                      - type: protocol
                        amount: '10500'
                        token:
                          chainId: 8453
                          address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                          symbol: USDC
                          decimals: 6
                        estimate: false
                    steps:
                      - type: bridge
                        provider: eco
                        from:
                          chainId: 8453
                          token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                          amount: '1000000'
                        to:
                          chainId: 10
                          token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                          amount: '989500'
                        fees: []
                        estimatedDurationSec: 7
                        intents:
                          - role: local
                            intentHash: >-
                              0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                            intent:
                              route:
                                salt: >-
                                  0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                                deadline: 1789523774
                                source: 8453
                                destination: 10
                                portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                                nativeAmount: '0'
                                tokens:
                                  - token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                    amount: '989500'
                                calls:
                                  - target: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                    data: >-
                                      0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                                    value: '0'
                              reward:
                                deadline: 1789524404
                                creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                                prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                                nativeAmount: '0'
                                tokens:
                                  - token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                                    amount: '1000000'
                    solver:
                      id: '0x1Da38A31F369343bdD33cCc48E89D165E8ab3450'
                    intentHash: >-
                      0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                    execution:
                      transaction:
                        type: evm
                        chainId: 8453
                        to: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                        data: >-
                          0xdf00f8fa000000000000000000000000000000000000000000000000000000000000000a…
                        value: '0'
                      intent:
                        route:
                          salt: >-
                            0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                          deadline: 1789523774
                          source: 8453
                          destination: 10
                          portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                          nativeAmount: '0'
                          tokens:
                            - token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                              amount: '989500'
                          calls:
                            - target: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                              data: >-
                                0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                              value: '0'
                        reward:
                          deadline: 1789524404
                          creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                          prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                          nativeAmount: '0'
                          tokens:
                            - token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                              amount: '1000000'
                      vault: '0xf6358b8f1d0Ec04EBc9Fe8FdEe5e6791640D1c2F'
                    expiresAt: 1789522904
                    signature: >-
                      0xedc90fdd27654dd49ac1087901450c9c5fdf444943f61faa8d787bee86304d821f06a5db4a67eddf5cf286014d6ec8bd33c64f9e072045a9f3c5e50cc28960fc1b
                    quotes:
                      - id: quote:8a7cbdcd-2aed-40b0-ab08-c4c10af15f23
                        type: exact-in
                        source:
                          chainId: 8453
                          token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                          amount: '1000000'
                          funder: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                          symbol: null
                          decimals: null
                        destination:
                          chainId: 10
                          token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                          amountOut: '989500'
                          minAmountOut: '989500'
                          recipient: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'
                          symbol: null
                          decimals: null
                        slippage: 0.005
                        fees:
                          - type: protocol
                            amount: '10500'
                            token:
                              chainId: 8453
                              address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                              symbol: USDC
                              decimals: 6
                            estimate: false
                        steps:
                          - type: bridge
                            provider: eco
                            from:
                              chainId: 8453
                              token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                              amount: '1000000'
                            to:
                              chainId: 10
                              token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                              amount: '989500'
                            fees: []
                            estimatedDurationSec: 7
                            intents:
                              - role: local
                                intentHash: >-
                                  0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                                intent:
                                  route:
                                    salt: >-
                                      0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                                    deadline: 1789523774
                                    source: 8453
                                    destination: 10
                                    portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                                    nativeAmount: '0'
                                    tokens:
                                      - token: >-
                                          0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
                                        amount: '989500'
                                    calls:
                                      - target: >-
                                          0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
                                        data: >-
                                          0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                                        value: '0'
                                  reward:
                                    deadline: 1789524404
                                    creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                                    prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                                    nativeAmount: '0'
                                    tokens:
                                      - token: >-
                                          0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
                                        amount: '1000000'
                        solver:
                          id: '0x1Da38A31F369343bdD33cCc48E89D165E8ab3450'
                        intentHash: >-
                          0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                        execution:
                          transaction:
                            type: evm
                            chainId: 8453
                            to: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                            data: >-
                              0xdf00f8fa000000000000000000000000000000000000000000000000000000000000000a…
                            value: '0'
                          intent:
                            route:
                              salt: >-
                                0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                              deadline: 1789523774
                              source: 8453
                              destination: 10
                              portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                              nativeAmount: '0'
                              tokens:
                                - token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                  amount: '989500'
                              calls:
                                - target: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                  data: >-
                                    0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                                  value: '0'
                            reward:
                              deadline: 1789524404
                              creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                              prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                              nativeAmount: '0'
                              tokens:
                                - token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                                  amount: '1000000'
                          vault: '0xf6358b8f1d0Ec04EBc9Fe8FdEe5e6791640D1c2F'
                        expiresAt: 1789522904
                        signature: >-
                          0xedc90fdd27654dd49ac1087901450c9c5fdf444943f61faa8d787bee86304d821f06a5db4a67eddf5cf286014d6ec8bd33c64f9e072045a9f3c5e50cc28960fc1b
                      - id: quote:203ccc0b-fcd6-4a2c-9f65-2b7d1e4a8c10
                        type: exact-in
                        source:
                          chainId: 8453
                          token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                          amount: '1000000'
                          funder: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                          symbol: null
                          decimals: null
                        destination:
                          chainId: 10
                          token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                          amountOut: '969873'
                          minAmountOut: '969873'
                          recipient: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'
                          symbol: null
                          decimals: null
                        slippage: 0.005
                        fees:
                          - type: protocol
                            amount: '30127'
                            token:
                              chainId: 8453
                              address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                              symbol: USDC
                              decimals: 6
                            estimate: false
                        steps:
                          - type: bridge
                            provider: eco
                            from:
                              chainId: 8453
                              token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                              amount: '1000000'
                            to:
                              chainId: 10
                              token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                              amount: '969873'
                            fees: []
                            estimatedDurationSec: 7
                            intents:
                              - role: local
                                intentHash: >-
                                  0x239539a7cc10146f96a4c17cf041abaf19452c7dab4d0d6437d3b3c4ac03d0e3
                                intent:
                                  route:
                                    salt: >-
                                      0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                                    deadline: 1789523774
                                    source: 8453
                                    destination: 10
                                    portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                                    nativeAmount: '0'
                                    tokens:
                                      - token: >-
                                          0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
                                        amount: '969873'
                                    calls:
                                      - target: >-
                                          0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
                                        data: >-
                                          0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                                        value: '0'
                                  reward:
                                    deadline: 1789524404
                                    creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                                    prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                                    nativeAmount: '0'
                                    tokens:
                                      - token: >-
                                          0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
                                        amount: '1000000'
                        solver:
                          id: '0x466caF9F946c9C2A76Cb7CD680c53C91CbBb7Ff1'
                        intentHash: >-
                          0x239539a7cc10146f96a4c17cf041abaf19452c7dab4d0d6437d3b3c4ac03d0e3
                        execution:
                          transaction:
                            type: evm
                            chainId: 8453
                            to: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                            data: >-
                              0xdf00f8fa000000000000000000000000000000000000000000000000000000000000000a…
                            value: '0'
                          intent:
                            route:
                              salt: >-
                                0xec00ec00ec00ec00ec00ec00ec00ec00aaaf8940ec75ab106feed1a7498e986f
                              deadline: 1789523774
                              source: 8453
                              destination: 10
                              portal: '0xEC000064576f9C95a8623Bc0eff3db6d296ea6df'
                              nativeAmount: '0'
                              tokens:
                                - token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                  amount: '969873'
                              calls:
                                - target: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                                  data: >-
                                    0xa9059cbb00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000000000000000000f193c
                                  value: '0'
                            reward:
                              deadline: 1789524404
                              creator: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
                              prover: '0xec004Ab4870c4e177c66949329dCdb503CE41022'
                              nativeAmount: '0'
                              tokens:
                                - token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                                  amount: '1000000'
                          vault: '0xf6358b8f1d0Ec04EBc9Fe8FdEe5e6791640D1c2F'
                        expiresAt: 1789522904
                        signature: >-
                          0xc8839424faed5c9b27eb0bfc788afdfa49e9bebd5e5c1f7f7f697719d6ee8ac78791f8fcf074ab63cd2b5ffb87561825f579c1d982bf4a4f7e0dce8bf2136a9c1c
        '400':
          description: Request failed validation
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                legacy-shape:
                  summary: 'Live: pre-0.9.0 field names (swapType, root funder)'
                  value:
                    type: https://api.eco.com/v1/errors/invalid-request
                    title: Request failed validation
                    status: 400
                    code: invalid-request
                    detail: >-
                      type: Invalid option: expected one of
                      "exact-in"|"exact-out"|"custom"; source.funder: Invalid
                      input; Unrecognized keys: "swapType", "funder"
                    errors:
                      - field: type
                        detail: >-
                          Invalid option: expected one of
                          "exact-in"|"exact-out"|"custom"
                      - field: source.funder
                        detail: Invalid input
                    requestId: f371e43e6fd4406b10e19487b3170edf
                missing-recipient:
                  summary: 'Live: destination.recipient omitted'
                  value:
                    type: https://api.eco.com/v1/errors/invalid-request
                    title: Request failed validation
                    status: 400
                    code: invalid-request
                    detail: 'destination.recipient: Invalid input'
                    errors:
                      - field: destination.recipient
                        detail: Invalid input
                    requestId: f371e43e6fd4406b10e19487b3170edf
                slippage-out-of-bounds:
                  summary: 'Live: slippage sent as a percent'
                  value:
                    type: https://api.eco.com/v1/errors/slippage-out-of-bounds
                    title: >-
                      slippage is outside the valid 0.0001-1 range; it is a
                      decimal fraction (0.005 = 0.5%), not a percent (0.5 means
                      50%)
                    status: 400
                    code: slippage-out-of-bounds
                    detail: >-
                      slippage: slippage is outside the valid 0.0001-1 range
                      (error code: slippage-out-of-bounds)
                    errors:
                      - field: slippage
                        detail: >-
                          slippage is outside the valid 0.0001-1 range; it is a
                          decimal fraction (0.005 = 0.5%), not a percent (0.5
                          means 50%)
                    requestId: 5abcdddf67907072db4af0c1caa39fcd
        '401':
          description: >-
            The supplied x-api-key is unknown, revoked, or not enabled for the
            v1 API. Returned for every v1 endpoint by the gateway, with
            Content-Type application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/invalid-api-key
                title: API key is missing, unknown, or revoked
                status: 401
                code: invalid-api-key
                requestId: 98e4c42f-9c70-4539-843e-8d31803001e6
        '403':
          description: >-
            No API key supplied. The gateway rejects the request before it
            reaches the API, with a plain JSON body.
          content:
            application/json:
              example:
                Message: >-
                  User is not authorized to access this resource with an
                  explicit deny in an identity-based policy
        '422':
          description: Every solver rejected the request for a deterministic reason.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/chain-not-supported
                title: A chain in the route is not supported
                status: 422
                code: chain-not-supported
                detail: >-
                  Every solver rejected the request: a chain in the route is not
                  supported.
                requestId: 252dbcdeebe5465fdc089843e8643b37
        '429':
          description: Rate limit exceeded
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/rate-limit-exceeded
                title: Rate limit exceeded
                status: 429
                code: rate-limit-exceeded
                requestId: 1eac3d6cc2aafa524b0c47a039576f8c
        '500':
          description: Internal error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/internal-error
                title: Internal error
                status: 500
                code: internal-error
                requestId: 02dabcf0f4e3def9a6091526d3d21022
        '502':
          description: >-
            No solver returned a usable quote. Also returned for unlisted
            tokens, unavailable liquidity, and amounts no solver can fill.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/solver-error
                title: An upstream solver rejected or failed the quote request
                status: 502
                code: solver-error
                requestId: b76e20a9b3eea8cf85d424073229ef92
        default:
          description: Error (RFC 9457 problem+json; see x-error-catalog)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - ApiKey: []
components:
  schemas:
    Problem:
      type: object
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        code:
          type: string
          description: >-
            Stable, machine-readable error code from the catalog. Branch on this
            and `status`, not on `title` or `detail`.
        detail:
          type: string
        instance:
          type: string
        legacyCode:
          type: string
          description: >-
            The pre-v1 numeric error code this problem maps to, for integrations
            migrating from the older services.
        solverErrors:
          type: array
          items:
            type: object
            properties:
              solver:
                type: string
                description: >-
                  Address on the relevant chain: `0x…` hex for EVM chains,
                  base58 for Solana, `T…` base58 for Tron.
              solverName:
                type: string
                minLength: 1
              code:
                type: string
                minLength: 1
              message:
                type: string
            required:
              - solver
              - message
        errors:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
                minLength: 1
              detail:
                type: string
                minLength: 1
            required:
              - field
              - detail
          description: Field-level validation failures.
        requestId:
          type: string
          description: >-
            Correlation ID for support. Present on router-served errors;
            deposit-address-served errors carry a short numeric value.
      required:
        - type
        - title
        - status
        - code
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key

````