> ## 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`. For routes with multiple intents, inspect `steps[].intents[]` to identify the delivery intent before tracking status. See [Intent types](/resources/intent-types).

An unsupported chain returns `422 chain-not-supported`. Routes no solver will fill (unlisted tokens, unavailable liquidity, amounts above what solvers hold) can return `502 solver-error`; upstream failures can return the same code.

Requires `x-api-key`. Partner pricing, attribution, and enabled features are tied to the key. Without a key the gateway can answer `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. See [Errors and retries](/api-reference/errors) for common errors and retry handling.

Examples use mainnet token and contract addresses with placeholder wallets, hashes, signatures, and IDs. They are illustrative and must not be used to transfer funds.


## 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`. For routes with multiple intents,
        inspect `steps[].intents[]` to identify the delivery intent before
        tracking status. See [Intent types](/resources/intent-types).


        An unsupported chain returns `422 chain-not-supported`. Routes no solver
        will fill (unlisted tokens, unavailable liquidity, amounts above what
        solvers hold) can return `502 solver-error`; upstream failures can
        return the same code.


        Requires `x-api-key`. Partner pricing, attribution, and enabled features
        are tied to the key. Without a key the gateway can answer `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 mainnet token and contract addresses with placeholder
        wallets, hashes, signatures, and IDs. They are illustrative and must not
        be used to transfer funds.
      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` specifies `source.amount`
                    and returns the quoted `destination.minAmountOut`.
                    `exact-out` specifies `destination.amount` and returns the
                    required `source.amount`. `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: >-
                          Minimum destination output reported by the selected
                          solver, in base units. Verify the route enforces the
                          required outcome before funding; refund eligibility is
                          separate from refund completion.
                      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 supplied the quote.
                  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

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.