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

# Get a quote

> 
Retrieves a best price quote from multiple quote providers:

The service selects the best available route based on price and execution
parameters.

Along with the quote, the response includes:

- An unsigned transaction ready for signing.
- A risk report generated by Range's Machine Learning models, designed to
help mitigate fraud and compliance risks.

If travel_rule_compliant is true, Faraday will verify that both the sender
and recipient have valid IVMS101 person records stored. If these records are
missing or invalid, the request will fail with a validation error (422).




## OpenAPI

````yaml /api-reference/faraday-api.json get /v1/transactions/quote
openapi: 3.1.0
info:
  title: Faraday API
  description: >-

    The **Faraday API** provides secure, compliant infrastructure for stablecoin
    transactions, identity verification, and transaction monitoring across
    multiple blockchains.


    ### Key Features

    - **Swap Routing** — Discover optimal swap paths for stablecoin transfers,
    including cross-chain routes.

    - **IVMS101 Person Records** — Create, query, and manage structured person
    data for FATF Travel Rule compliance.

    - **Transaction Submission and Monitoring** — Submit and track stablecoin
    transactions.

    - **Reporting** — View historical transaction reports including associated
    IVMS101 records.


    ### Authentication

    Most requests require an API key (Bearer token).


    Generate and manage API keys by signing in to https://app.range.org/


    API Keys can be found under the APIs section. A free monthly credit
    allowance is available, with more credits available to paid plans.


    Include this header with every authenticated Faraday request:


    ```

    Authorization: Bearer <your_token>

    ```


    ### Base URL

    - Production: `https://api.faraday.range.org`


    ### Example Request

    ```bash

    curl -X GET 'https://api.faraday.range.org/v1/persons'   --header
    'Authorization: Bearer <your_token>'

    ```
            
  contact:
    name: Faraday
    url: https://range.org/faraday
    email: faraday@range.org
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.faraday.range.org
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Transactions
    description: Send, track and find transactions
  - name: Persons
    description: >-
      Manage IVMS101 Person records. This includes creation and retrieval of
      structured person data for compliance with FATF Travel Rule standards.
  - name: Chains
    description: Chains supported by Faraday
  - name: Tokens
    description: Tokens supported by Faraday
  - name: Providers
    description: Providers supported by Faraday
paths:
  /v1/transactions/quote:
    get:
      tags:
        - Transactions
      summary: Get a quote
      description: >

        Retrieves a best price quote from multiple quote providers:


        The service selects the best available route based on price and
        execution

        parameters.


        Along with the quote, the response includes:


        - An unsigned transaction ready for signing.

        - A risk report generated by Range's Machine Learning models, designed
        to

        help mitigate fraud and compliance risks.


        If travel_rule_compliant is true, Faraday will verify that both the
        sender

        and recipient have valid IVMS101 person records stored. If these records
        are

        missing or invalid, the request will fail with a validation error (422).
      operationId: get_quote
      parameters:
        - name: from_chain
          in: query
          description: Source chain (e.g., "solana", "ethereum")
          required: true
          schema:
            $ref: '#/components/schemas/Network'
          example: solana
        - name: from_address
          in: query
          description: Sender address on the source chain
          required: false
          schema:
            type: string
          example: GvFbpZcqXNoZbAH8ETAA4DYBzaEHY4v2Vt7r71ZqJCTc
        - name: from_asset
          in: query
          description: Asset/mint/contract on the source chain
          required: false
          schema:
            type: string
          example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
        - name: to_chain
          in: query
          description: Destination chain (e.g., "ethereum")
          required: false
          schema:
            $ref: '#/components/schemas/Network'
          example: ethereum
        - name: to_asset
          in: query
          description: Asset/mint/contract on the destination chain
          required: false
          schema:
            type: string
          example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
        - name: amount
          in: query
          description: Amount in base units (integer string, no decimals)
          required: false
          schema:
            type: string
          example: '100000000'
        - name: slippage_bps
          in: query
          description: Slippage in basis points (0..=10000)
          required: true
          schema:
            type: integer
            format: int32
            minimum: 0
          example: 50
        - name: to_address
          in: query
          description: Recipient address on the destination chain
          required: false
          schema:
            type: string
          example: '0x10ADD26fb2D17dA265e0567B8F56cb4687979fbE'
        - name: travel_rule_compliant
          in: query
          description: Whether the transaction complies with Travel Rule requirements.
          required: false
          schema:
            type: boolean
        - name: allowed_providers
          in: query
          description: >-
            If set, the router will restrict quote routing to these providers
            only.

            If omitted, all available providers will be used.


            **GET request usage:**

            `?allowed_providers=relay&allowed_providers=skipgo`

            (use repeated query parameters)
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Provider'
        - name: risk_report
          in: query
          description: |-
            Whether this request should compute a risk report.
            If omitted, defaults to `false`.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: |

            **OK**

            Quote successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteWithRisk'
              examples:
                Direct Transfer Solana Devnet USDC to Solana Devnet USDC:
                  value:
                    quote:
                      created_at: '2025-10-29T10:01:23Z'
                      destination:
                        account: 5QTxbuHroxQM7rv1vSzMMvUQ2a3vJodtQH9vawKTATGd
                        amount: '5000000'
                        amount_formatted: null
                        decimals: null
                        logo_url: null
                        name: null
                        network: solana-devnet
                        symbol: USDC
                        token: 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
                        usd_amount: null
                        usd_price: null
                      expires_at: null
                      fee: {}
                      id: 0575d7f5-7e02-4208-a993-7261e605c470
                      min_amount_out: '5000000'
                      provider: direct
                      source:
                        account: IOwXp6hCF/z4mI2gcyShGCThUvUeWCz
                        amount: '5000000'
                        amount_formatted: null
                        decimals: null
                        logo_url: null
                        name: null
                        network: solana-devnet
                        symbol: USDC
                        token: 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
                        usd_amount: null
                        usd_price: null
                      transactions:
                        - chain_id: EtWTRABZaYq6iMfeYKouRu166VU2xqa1
                          kind: solana
                          meta:
                            blockhash_expiry_seconds: 120
                            decimals: 6
                            from_ata: B4G1X1UoWXNy6HXk2MXRhbSY3Sd2z8Mf32Ak9zC7XG62
                            mint: 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
                            recent_blockhash: AHhbjisxx4vtWhiQ22gQUFoJtzdT3ad22XzXhuHrBLca
                            requires_create_ata: true
                            to_ata: 5QTxbuHroxQM7rv1vSzMMvUQ2a3vJodtQH9vawKTATGd
                          tx_base64: >-
                            AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAUIIOwXp6hCF/z4mI2gcyShGCThUvUeWCz+ZW2xfiXSYc9BcZarum/U3+JSrWwNCxzVBJ35PgfnhqGFrgcRv2U2epVqlROnrjt2WjMsC9+l+jYSO/jqh6sTObfeI8b6DLRvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8AqTtELLORIVfxOpM9ATQoLQMrX/7NAaLb8bd5BgjfAC6nY959WgOStnuBoC8tRC/LcM5DR1JIURG+4DuXI98XF5iMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WYoAYW/SC9NKD87MwG5xFBtjx3eWhiQkhmWpP8npFuJbAgcGAAEGBQMEAQEEBAIFAQAKDEBLTAAAAAAABg==
                    risk:
                      errors: []
                      overall_risk_level: high
                      processing_time_ms: 4439.167
                      request_summary:
                        amount: 100000000
                        recipient_address: '0x10ADD26fb2D17dA265e0567B8F56cb4687979fbE'
                        recipient_network: ethereum
                        recipient_token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
                        sender_address: GvFbpZcqXNoZbAH8ETAA4DYBzaEHY4v2Vt7r71ZqJCTc
                        sender_network: solana
                        sender_token: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                      risk_factors:
                        - description: >-
                            Unable to assess new wallet risk due to service
                            error: Network 'ethereum' is not configured.
                          factor: assessment_error_new_wallet
                          risk_level: medium
                        - description: >-
                            Unable to assess dormant wallet risk: Network
                            'ethereum' is not configured.
                          factor: assessment_error_dormant_wallet
                          risk_level: medium
                        - description: >-
                            No address poisoning pattern detected between sender
                            and recipient
                          factor: no_address_poisoning
                          risk_level: low
                        - description: First ever interaction between these addresses
                          factor: first_interaction
                          risk_level: high
                        - description: >-
                            Sender address is directly connected (1 hop) to
                            malicious addresses (riskScore: 10). Address is
                            directly malicious.
                          factor: connected_to_malicious_address
                          risk_level: high
                        - description: >-
                            Recipient address has no known connections to
                            malicious addresses according to Range API
                          factor: clean_address_recipient
                          risk_level: low
                Skip Go Sepolia USDC to Solana Devnet USDC:
                  value:
                    quote:
                      created_at: '2025-10-28T17:36:29Z'
                      destination:
                        account: '0x10ADD26fb2D17dA265e0567B8F56cb4687979fbE'
                        amount: '4998546'
                        amount_formatted: '4.998546'
                        decimals: 6
                        logo_url: null
                        name: USD Coin
                        network: sepolia
                        symbol: USDC
                        token: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238'
                        usd_amount: null
                        usd_price: null
                      expires_at: null
                      fee: {}
                      id: 5917c6e9-4a69-4ca4-90b8-22d9abaf3c8b
                      min_amount_out: '4983550'
                      provider: skipgo
                      source:
                        account: 3DWrAUpE8DWTyEfexXHcyJzYDieyJCw7pwsSiJRcjzKx
                        amount: '5000000'
                        amount_formatted: '5.0'
                        decimals: 6
                        logo_url: null
                        name: USD Coin
                        network: solana-devnet
                        symbol: USDC
                        token: 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
                        usd_amount: null
                        usd_price: null
                      transactions:
                        - chain_id: EtWTRABZaYq6iMfeYKouRu166VU2xqa1
                          kind: solana
                          tx_base64: <base64-encoded Solana transaction>
                    risk:
                      errors: []
                      overall_risk_level: high
                      processing_time_ms: 4439.167
                      request_summary:
                        amount: 100000000
                        recipient_address: '0x10ADD26fb2D17dA265e0567B8F56cb4687979fbE'
                        recipient_network: ethereum
                        recipient_token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
                        sender_address: GvFbpZcqXNoZbAH8ETAA4DYBzaEHY4v2Vt7r71ZqJCTc
                        sender_network: solana
                        sender_token: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                      risk_factors:
                        - description: >-
                            Unable to assess new wallet risk due to service
                            error: Network 'ethereum' is not configured.
                          factor: assessment_error_new_wallet
                          risk_level: medium
                        - description: >-
                            Unable to assess dormant wallet risk: Network
                            'ethereum' is not configured.
                          factor: assessment_error_dormant_wallet
                          risk_level: medium
                        - description: >-
                            No address poisoning pattern detected between sender
                            and recipient
                          factor: no_address_poisoning
                          risk_level: low
                        - description: First ever interaction between these addresses
                          factor: first_interaction
                          risk_level: high
                        - description: >-
                            Sender address is directly connected (1 hop) to
                            malicious addresses (riskScore: 10). Address is
                            directly malicious.
                          factor: connected_to_malicious_address
                          risk_level: high
                        - description: >-
                            Recipient address has no known connections to
                            malicious addresses according to Range API
                          factor: clean_address_recipient
                          risk_level: low
                Squid Ethereum USDT to Arbitrum USDC:
                  value:
                    quote:
                      created_at: '2025-11-03T16:47:53Z'
                      destination:
                        account: 0xRecipientAddress
                        amount: '99922000'
                        amount_formatted: null
                        decimals: null
                        logo_url: null
                        name: null
                        network: arb1
                        symbol: USDC
                        token: '0xaf88d065e77c8cc2239327c5edb3a432268e5831'
                        usd_amount: null
                        usd_price: null
                      expires_at: null
                      fee: {}
                      id: 257e7a2c-fd5d-47a4-b5b0-8b2c84699b67
                      min_amount_out: '99922000'
                      provider: squid
                      source:
                        account: 0xSenderAddress
                        amount: '100000000'
                        amount_formatted: null
                        decimals: null
                        logo_url: null
                        name: null
                        network: eth
                        symbol: USDT
                        token: '0xdac17f958d2ee523a2206206994597c13d831ec7'
                        usd_amount: null
                        usd_price: null
                      transactions:
                        - chain_id: '1'
                          data: >-
                            0x846a1bc6000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000052...
                          kind: eip155
                          meta:
                            gas_limit: '442600'
                            gas_price: '2397257997'
                            max_fee_per_gas: '6290875994'
                            max_priority_fee_per_gas: '1500000000'
                            request_id: 3657ad96fd259afc56bc273b569d81fa
                            type: ON_CHAIN_EXECUTION
                          to: '0xce16F69375520ab01377ce7B88f5BA8C48F8D666'
                          value: '75245197906272'
                    risk:
                      errors: []
                      overall_risk_level: high
                      processing_time_ms: 4439.167
                      request_summary:
                        amount: 100000000
                        recipient_address: '0x10ADD26fb2D17dA265e0567B8F56cb4687979fbE'
                        recipient_network: ethereum
                        recipient_token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
                        sender_address: GvFbpZcqXNoZbAH8ETAA4DYBzaEHY4v2Vt7r71ZqJCTc
                        sender_network: solana
                        sender_token: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                      risk_factors:
                        - description: >-
                            Unable to assess new wallet risk due to service
                            error: Network 'ethereum' is not configured.
                          factor: assessment_error_new_wallet
                          risk_level: medium
                        - description: >-
                            Unable to assess dormant wallet risk: Network
                            'ethereum' is not configured.
                          factor: assessment_error_dormant_wallet
                          risk_level: medium
                        - description: >-
                            No address poisoning pattern detected between sender
                            and recipient
                          factor: no_address_poisoning
                          risk_level: low
                        - description: First ever interaction between these addresses
                          factor: first_interaction
                          risk_level: high
                        - description: >-
                            Sender address is directly connected (1 hop) to
                            malicious addresses (riskScore: 10). Address is
                            directly malicious.
                          factor: connected_to_malicious_address
                          risk_level: high
                        - description: >-
                            Recipient address has no known connections to
                            malicious addresses according to Range API
                          factor: clean_address_recipient
                          risk_level: low
        '401':
          description: |

            **Unauthorized**

            This error indicates that the API key is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Missing key:
                  summary: API Key Missing
                  description: >-
                    An API key is missing in the request and should be provided
                    in the `Authorization: Bearer` header.
                  value:
                    details:
                      message: >-
                        No API key found, please set this in an Authorization:
                        Bearer header
                    error: authentication failed
                Unauthorized:
                  summary: Unauthorized
                  description: >-
                    The API key may be invalid, an empty key was provided, or
                    the key is not authorized.
                  value:
                    details:
                      message: The API key provided is not authorised or invalid
                    error: authentication failed
        '403':
          description: >

            **Forbidden**


            This error indicates that the API key is valid but the requested
            feature or resource is disabled for this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Disabled API Key:
                  summary: Feature disabled
                  description: >-
                    The API key is valid but the associated feature or endpoint
                    has been disabled for this workspace.
                  value:
                    details:
                      message: Feature disabled for this API key
                    error: authentication failed
        '404':
          description: >

            **Not Found**


            This error indicates that no quotes were available from any provider
            for the given route or parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                No quotes available:
                  value:
                    details:
                      message: no quotes available from any provider
                    error: not found
        '422':
          description: >

            **Unprocessable Entity**


            This error indicates the request was malformed.


            If the request fails validation a response is given with an
            indication of how to resolve the error. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Missing fields on QuoteRequest:
                  value:
                    details:
                      amount:
                        - code: greater_than_zero
                          message: amount must be greater than 0
                          params:
                            value: '0'
                      from_address:
                        - code: length
                          message: null
                          params:
                            min: 1
                            value: ''
                      from_asset:
                        - code: length
                          message: null
                          params:
                            min: 1
                            value: ''
                      to_address:
                        - code: length
                          message: null
                          params:
                            min: 1
                            value: ''
                      to_asset:
                        - code: length
                          message: null
                          params:
                            min: 1
                            value: ''
                    error: validation failed
        '429':
          description: >

            **Too Many Requests**


            This error indicates that the API key has exceeded its allowed
            number of requests within the current quota.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Rate Limited API Key:
                  summary: Rate limit exceeded
                  description: The API key has exceeded its quota.
                  value:
                    details:
                      message: API Key Rate limit exceeded
                    error: authentication failed
        '500':
          description: >

            **Internal Server Error**


            An unexpected internal error occurred while processing the request.
            This typically indicates a transient backend or database issue.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Internal Server Error:
                  summary: Internal error
                  description: >-
                    An unhandled exception or service outage prevented the
                    request from completing successfully.
                  value:
                    error: internal server error
components:
  schemas:
    Network:
      type: string
      enum:
        - eth
        - sepolia
        - solana
        - oeth
        - solana-devnet
        - osmosis-1
        - arb1
        - pol
        - base
        - avax
        - bnb
        - neutron-1
        - celestia
        - opsep
        - fuji
        - amoy
        - basesep
    Provider:
      type: string
      enum:
        - skipgo
        - debridge
        - lifi
        - squid
        - switchain
        - direct
        - relay
        - jupiter
    QuoteWithRisk:
      type: object
      required:
        - quote
        - risk
      properties:
        quote:
          $ref: '#/components/schemas/RouteQuote'
          description: The selected best route/quote
        risk:
          description: >-
            Risk assessment from the ML API (None if the call failed)


            NOTE: `PaymentRiskResponse` is from an external crate. We keep the
            field typed

            as `PaymentRiskResponse` in Rust, but for OpenAPI we document it as
            JSON and

            provide a realistic example payload.
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
    RouteQuote:
      type: object
      required:
        - id
        - provider
        - created_at
        - expires_at
        - min_amount_out
      properties:
        created_at:
          type: string
          format: date-time
          description: RFC3339 timestamp when the quote was created (UTC)
          example: '2025-11-03T13:00:00Z'
        destination:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/AssetInfo'
              description: Rich destination asset information with metadata
        expires_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Optional RFC3339 timestamp indicating when the quote becomes invalid
            (UTC).


            Some providers include explicit expiry times; otherwise this field
            may be `null`.

            Consumers should treat quotes without this field as ephemeral and
            validate freshness before execution.
          example: '2025-11-03T13:01:00Z'
        fee:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/FeeEstimate'
              description: Fees, if provided by the quote provider
        id:
          type: string
          format: uuid
          description: Quote UUID
          example: b9a1b2a0-8d2b-4e4d-9e64-0e0a8f7a9d3c
        min_amount_out:
          type: string
          description: Minimum guaranteed output in base units (integer string)
          example: '99500000'
        provider:
          $ref: '#/components/schemas/Provider'
          description: Quote provider identifier (e.g., "deBridge DLN", "LI.FI")
        source:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/AssetInfo'
              description: Rich source asset information with metadata
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/RouteTransaction'
          description: >-
            One or more chain-specific transactions required to execute this
            route
    AssetInfo:
      type: object
      description: Rich asset information including metadata
      properties:
        account:
          type:
            - string
            - 'null'
          description: Sender address (for source) or recipient address (for destination)
          example: 5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9
        amount:
          type:
            - string
            - 'null'
          description: Raw amount in base units (integer string)
          example: '100000000'
        amount_formatted:
          type:
            - string
            - 'null'
          description: Formatted amount with decimals applied (e.g., "100.0")
          example: '100.0'
        decimals:
          type:
            - integer
            - 'null'
          format: int32
          description: Token decimals
          example: 6
          minimum: 0
        logo_url:
          type:
            - string
            - 'null'
          description: Token logo URL
          example: https://coin-images.coingecko.com/coins/images/6319/large/usdc.png
        name:
          type:
            - string
            - 'null'
          description: Human-readable token name (e.g., "USD Coin")
          example: USD Coin
        network:
          type:
            - string
            - 'null'
          description: Network/chain identifier (e.g., "solana", "eth", "arb1")
          example: solana
        symbol:
          type:
            - string
            - 'null'
          description: Token symbol (e.g., "USDC", "ETH")
          example: USDC
        token:
          type:
            - string
            - 'null'
          description: Token contract/mint address
          example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
        usd_amount:
          type:
            - string
            - 'null'
          description: Total USD value (set to "0" if not available)
          example: '0'
        usd_price:
          type:
            - string
            - 'null'
          description: USD price per token (set to "0" if not available)
          example: '0'
    FeeEstimate:
      type: object
      description: Fee structure containing platform and gas fees
      properties:
        platform_fee:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/FeeDetail'
              description: Platform/router fee charged by the bridging service
    RouteTransaction:
      oneOf:
        - type: object
          description: An EVM transaction
          required:
            - chain_id
            - to
            - data
            - value
            - kind
          properties:
            chain_id:
              type: string
              description: Target chain ID (e.g. 11155111)
            data:
              type: string
              description: Calldata or ABI-encoded payload
            erc20_approvals:
              type: array
              items:
                $ref: '#/components/schemas/Erc20Approval'
              description: Optional list of ERC20 approvals required before execution
            kind:
              type: string
              enum:
                - eip155
            meta:
              description: Optional chain-specific metadata (gas, nonce, etc.)
            to:
              type: string
              description: To address
            value:
              type: string
              description: Value in wei
        - type: object
          description: A Cosmos transaction (usually one or more messages)
          required:
            - chain_id
            - msgs
            - kind
          properties:
            chain_id:
              type: string
            kind:
              type: string
              enum:
                - cosmos
            msgs:
              type: array
              items: {}
        - type: object
          description: A Solana transaction (base64 encoded)
          required:
            - chain_id
            - tx_base64
            - kind
          properties:
            chain_id:
              type: string
            kind:
              type: string
              enum:
                - solana
            meta:
              description: Optional metadata (recent_blockhash, expiry, etc.)
            tx_base64:
              type: string
    FeeDetail:
      type: object
      description: Detailed fee information for a single fee component
      properties:
        address:
          type:
            - string
            - 'null'
          description: Token contract address
          example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
        amount:
          type:
            - string
            - 'null'
          description: Raw amount in base units (integer string)
          example: '50000'
        amount_formatted:
          type:
            - string
            - 'null'
          description: Formatted amount with decimals applied (e.g., "0.05")
          example: '0.05'
        decimals:
          type:
            - integer
            - 'null'
          format: int32
          description: Token decimals
          example: 6
          minimum: 0
        logo_url:
          type:
            - string
            - 'null'
          description: Token logo URL
          example: https://coin-images.coingecko.com/coins/images/6319/large/usdc.png
        name:
          type:
            - string
            - 'null'
          description: Human-readable token name (e.g., "USD Coin")
          example: USD Coin
        network:
          type:
            - string
            - 'null'
          description: Network/chain identifier (e.g., "solana", "eth", "arb1")
          example: solana
        symbol:
          type:
            - string
            - 'null'
          description: Token symbol (e.g., "USDC", "ETH")
          example: USDC
        usd_amount:
          type:
            - string
            - 'null'
          description: Total USD value (set to "0" if not available)
          example: '0'
        usd_price:
          type:
            - string
            - 'null'
          description: USD price per token (set to "0" if not available)
          example: '0'
    Erc20Approval:
      type: object
      required:
        - token_contract
        - spender
        - amount
      properties:
        amount:
          type: string
          description: Approval amount (integer string)
          example: '100000000'
        spender:
          type: string
          description: Spender contract address
          example: '0x585F053d554B8d4c3983A7BBaDbe13B15BA66F37'
        token_contract:
          type: string
          description: Token contract address
          example: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````