<!--
Sitemap:
- [Stridge — The infrastructure bridging crypto payments](/index): Crypto payment infrastructure for modern fintechs. Accept on any chain, settle through the cheapest route, and pay out in any asset — all from a single SDK.
- [API Reference](/api-reference/): Stridge REST API reference — complete endpoint documentation for deposits, payouts, Universal Deposit Addresses, settlements, and supported networks.
- [Changelog](/changelog): Release notes for Stridge SDKs and developer tools.
- [Stridge Gateway Kit](/gateway/): Drop-in deposit and withdraw flows for crypto apps. Mount a single React provider, render a dialog, and ship any-to-any payments in minutes.
- [Getting Started](/getting-started): Get started with Stridge — pick your integration shape, generate keys, and make your first call from the React Kit, the TypeScript SDK, or the REST API.
- [Supported Networks](/networks): Blockchain networks and tokens supported by the Stridge payment infrastructure — network_id (SLIP-44), EIP-155 chain IDs, and the available native and stablecoin assets per chain.
- [TypeScript SDK](/sdk/): TypeScript client for the Stridge Gateway API. Used internally by @stridge/kit and exposed for backend and server integrations that need direct API access.
- [Security](/security/): Stridge Security — how the Stridge KMS protects wallet keys and signs transactions without ever exposing private keys.
- [Universal Deposit Addresses](/uda/): Universal Deposit Addresses (UDA) — one multi-chain deposit address per user, with automatic cross-chain settlement to a fixed destination.
- [Webhooks](/webhooks/): Stridge webhooks — signed HTTP POSTs for deposits, UDA settlements, wallets, and balances. Verify HMAC, handle retries, and use the Dashboard to inspect event payloads.
- [Gateway HTTP API](/gateway/http): Raw HTTP contract for the Stridge Gateway — supported-assets catalogue, gateway/start provisioning, and per-owner status polling.
- [UDA Quickstart](/uda/quickstart): Create your first Universal Deposit Address and trace a deposit end-to-end — from the POST call, through webhooks, to a settled transaction on the destination chain.
- [Settlements](/uda/settlements): UDA settlements — lifecycle, routing scenarios, fees, and the settlement record API. Reconcile deposits with webhooks; the Dashboard shows each settlement end-to-end.
- [UDA Webhook Events](/uda/webhooks): Reference for the three webhook events UDA deposits emit — deposit.confirmed, uda.settlement.created, and uda.settlement.completed — with payloads and lifecycle guidance.
- [Get a single deposit transaction by ID](/api-reference/deposits/get-a-single-deposit-transaction-by-id): Get details of a specific deposit transaction by its unique ID
- [Get a single deposit transaction by transaction id](/api-reference/deposits/get-a-single-deposit-transaction-by-transaction-id): One row per matching tx_id; multiple same-tx transfers are separate rows. Returns the latest by on-chain time (then id). Use GET /v1/deposits with tx_id filter
- [List deposit transactions](/api-reference/deposits/list-deposit-transactions): Get a paginated list of deposit transactions for the authenticated tenant with filtering support
- [Get blockchain assets](/api-reference/networks/get-blockchain-assets): Get a list of all supported blockchain assets (tokens and native assets).
- [Get blockchain networks](/api-reference/networks/get-blockchain-networks): Get a list of all supported blockchain networks.
- [Get network list](/api-reference/networks/get-network-list): Get a public list of all networks with category grouping.
- [Get tenant network](/api-reference/networks/get-tenant-network): Get a specific network for the authenticated tenant by network ID and contract address
- [Get tenant networks](/api-reference/networks/get-tenant-networks): Get a list of networks available to the authenticated tenant with their enabled status
- [Update tenant network status](/api-reference/networks/update-tenant-network-status): Update the enabled status of a network for the authenticated tenant
- [Create payout](/api-reference/payouts/create-payout): Creates a new payout from the tenant's vault wallet to an external address
- [Create payout with USD amount](/api-reference/payouts/create-payout-with-usd-amount): Creates a new payout converting a USD amount to crypto at current rate
- [Get payout by ID](/api-reference/payouts/get-payout-by-id): Retrieves a payout by its ID
- [Get vault address by network](/api-reference/payouts/get-vault-address-by-network): Get the vault address for a specific network
- [Get vault balances](/api-reference/payouts/get-vault-balances): Get balances for all vault addresses with optional filtering
- [Get vault total value](/api-reference/payouts/get-vault-total-value): Get the total USD value across all vault assets
- [List payouts](/api-reference/payouts/list-payouts): Lists payouts for a vault with filtering and pagination
- [List vault addresses](/api-reference/payouts/list-vault-addresses): Get all vault addresses for the authenticated tenant
- [List vaults](/api-reference/payouts/list-vaults): List all vault accounts for the authenticated tenant
- [Transfer from vault to external address](/api-reference/payouts/transfer-from-vault-to-external-address): Transfer assets from the tenant's vault wallet to an external address.
- [Get a settlement](/api-reference/settlements/get-a-settlement): Fetch a single settlement by ID. A settlement is created per confirmed deposit on a UDA address and carries the lifecycle state, scenario, and routing tx ids.
- [Create a UDA address](/api-reference/uda/create-a-uda-address): Allocate a new Universal Deposit Address for the tenant. If a UDA for the (tenant, owner) pair already exists, the existing record is returned with 200 instead
- [Get a cross-chain / cross-token quote](/api-reference/uda/get-a-cross-chain-cross-token-quote): Returns an indicative quote for routing from/to given (chain, token) pair. USD fields are omitted until a price feed is wired in.
- [Get a UDA address](/api-reference/uda/get-a-uda-address): Fetch a single UDA address by ID, including its delegation status.
- [List settlements for a UDA address](/api-reference/uda/list-settlements-for-a-uda-address): List all settlements that have been created for a given UDA address, optionally paginated.
- [List UDA addresses](/api-reference/uda/list-uda-addresses): List UDA addresses belonging to the authenticated tenant. Supports filtering by owner and status and pagination via limit/offset.
- [List UDA-supported chains](/api-reference/uda/list-uda-supported-chains): Returns every chain with `uda_support=true` along with its native currency and configured token contracts. Rows are grouped by network.
- [Retire a UDA address](/api-reference/uda/retire-a-uda-address): Mark a UDA address as retired. Future deposits will no longer trigger settlements; any already-confirmed settlements continue to run to completion.
- [Update a UDA address](/api-reference/uda/update-a-uda-address): Update the destination, accepted tokens, or status of an existing UDA. Owner is immutable.
-->

<DocsGrid>
  <DocsMain>
    <EndpointTag>UDA</EndpointTag>

    # Get a cross-chain / cross-token quote

    Returns an indicative quote for routing from/to given
    (chain, token) pair. USD fields are omitted until a price
    feed is wired in.

    <Playground method="GET" path="/v1/uda/quote" baseUrl="https://api.stridge.com" summary={"Get a cross-chain / cross-token quote"} description={"Returns an indicative quote for routing from/to given (chain, token) pair. USD fields are omitted until a price feed is wired in."} parameters={[{"name":"X-API-Key","in":"header","type":"string","required":true,"description":"Your Stridge API key."},{"name":"from_chain_id","in":"query","type":"integer","required":true,"description":"EIP-155 chain id of the source chain"},{"name":"from_token","in":"query","type":"string","required":true,"description":"Source token contract address (zero address for native)"},{"name":"to_chain_id","in":"query","type":"integer","required":true,"description":"EIP-155 chain id of the destination chain"},{"name":"to_token","in":"query","type":"string","required":true,"description":"Destination token contract address"},{"name":"amount","in":"query","type":"string","required":true,"description":"Source amount (integer, in source token's smallest unit)"},{"name":"from_address","in":"query","type":"string","required":false,"description":"Source (signer) EOA; required for an executable quote"},{"name":"to_address","in":"query","type":"string","required":false,"description":"Destination recipient address; defaults to from_address at provider"}]} responses={[{"status":200,"description":"Quote","example":{"data":{"from":{"chain_id":56,"token_address":"0x0000000000000000000000000000000000000000","amount":"5000000000000000"},"to":{"chain_id":42161,"token_address":"0xaf88d065e77c8cc2239327c5edb3a432268e5831","amount":"3140"},"fees":{"gas_fee":"18485000000000","protocol_fee":"0","total_fee":"18485000000000"},"route":{"provider":"lifi","scenario":"cross_chain_diff_token","estimated_time_seconds":11},"exchange_rate":"0.000628","expires_at":"2026-04-24T07:01:06Z"},"message":"operation completed successfully","success":true}},{"status":400,"description":"Invalid request","example":{"success":false,"code":400,"error":"Invalid request"}},{"status":502,"description":"No provider could produce a quote","example":{"success":false,"code":502,"error":"No provider could produce a quote"}}]} />

    ## Authorizations

    <ParamField name="X-API-Key" type="string" location="header" required>
      Your Stridge API key. Include it in every request header.
    </ParamField>

    ## Query parameters

    <ParamField name="from_chain_id" type="integer" required location="query">
      EIP-155 chain id of the source chain
    </ParamField>

    <ParamField name="from_token" type="string" required location="query">
      Source token contract address (zero address for native)
    </ParamField>

    <ParamField name="to_chain_id" type="integer" required location="query">
      EIP-155 chain id of the destination chain
    </ParamField>

    <ParamField name="to_token" type="string" required location="query">
      Destination token contract address
    </ParamField>

    <ParamField name="amount" type="string" required location="query">
      Source amount (integer, in source token's smallest unit)
    </ParamField>

    <ParamField name="from_address" type="string" location="query">
      Source (signer) EOA; required for an executable quote
    </ParamField>

    <ParamField name="to_address" type="string" location="query">
      Destination recipient address; defaults to from\_address at provider
    </ParamField>

    ## Response

    <ResponseField name="success" type="boolean" example={true}>
      Indicates whether the request succeeded.
    </ResponseField>

    <ResponseField name="message" type="string" example="operation completed successfully">
      Human-readable status message.
    </ResponseField>

    <ResponseField name="data" type="object">
      The response payload.
    </ResponseField>

    <Expandable title="data fields" defaultOpen>
      <ResponseField name="exchange_rate" type="string">
        The exchange rate.
      </ResponseField>

      <ResponseField name="expires_at" type="string">
        The expires at.
      </ResponseField>

      <ResponseField name="fees" type="object">
        The fees.
      </ResponseField>

      <ResponseField name="from" type="object">
        The from.
      </ResponseField>

      <ResponseField name="route" type="object">
        The route.
      </ResponseField>

      <ResponseField name="to" type="object">
        The to.
      </ResponseField>
    </Expandable>
  </DocsMain>

  <DocsAside>
    ### Request

    <LangTabs>
      <Sample lang="curl">
        ```bash
        curl -X GET 'https://api.stridge.com/v1/uda/quote?limit=20' \
          -H 'X-API-Key: your_api_key_here'
        ```
      </Sample>

      <Sample lang="node">
        ```ts
        const res = await fetch('https://api.stridge.com/v1/uda/quote', {
          method: 'GET',
          headers: {
            'X-API-Key': process.env.STRIDGE_API_KEY!,
          },
        })

        const data = await res.json()
        ```
      </Sample>

      <Sample lang="python">
        ```python
        import requests

        response = requests.get(
            'https://api.stridge.com/v1/uda/quote',
            headers={'X-API-Key': 'your_api_key_here'},
        )
        data = response.json()
        ```
      </Sample>
    </LangTabs>

    ### Response

    <ResponseTabs>
      <Response status={200}>
        ```json
        {
          "data": {
            "from": {
              "chain_id": 56,
              "token_address": "0x0000000000000000000000000000000000000000",
              "amount": "5000000000000000"
            },
            "to": {
              "chain_id": 42161,
              "token_address": "0xaf88d065e77c8cc2239327c5edb3a432268e5831",
              "amount": "3140"
            },
            "fees": {
              "gas_fee": "18485000000000",
              "protocol_fee": "0",
              "total_fee": "18485000000000"
            },
            "route": {
              "provider": "lifi",
              "scenario": "cross_chain_diff_token",
              "estimated_time_seconds": 11
            },
            "exchange_rate": "0.000628",
            "expires_at": "2026-04-24T07:01:06Z"
          },
          "message": "operation completed successfully",
          "success": true
        }
        ```
      </Response>

      <Response status={400}>
        ```json
        {
          "success": false,
          "code": 400,
          "error": "Invalid request"
        }
        ```
      </Response>

      <Response status={502}>
        ```json
        {
          "success": false,
          "code": 502,
          "error": "No provider could produce a quote"
        }
        ```
      </Response>
    </ResponseTabs>
  </DocsAside>
</DocsGrid>
