Skip to content

Get Bridge Quote

Get a quote for bridging assets across chains. Returns available routes sorted by output amount (highest first), not sorted by timing or speed.

Endpoint

Portfolio API: POST https://ddp.definitive.fi/v2/portfolio/bridge/quote

Organization API: Replace /v2/portfolio/ with /v2/organization/portfolios/{portfolioId}/. See Portfolio vs. Organization API.

Request Body

FieldTypeRequiredDescription
fromAssetAddressstringYesSource asset contract address
fromChainstringYesSource chain (e.g., "base", "ethereum")
toAssetAddressstringYesDestination asset contract address
toChainstringYesDestination chain (e.g., "avalanche")
fromAmountstringYesAmount of fromAssetAddress to bridge (e.g., "100")

For a chain's native asset, pass the sentinel address 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE. Arc is the exception: its native asset is USDC, so use the USDC contract address 0x3600000000000000000000000000000000000000 instead; the sentinel is rejected on Arc.

Request Body Examples

const quoteResponse = await AuthHelpers.signAndSend({
  path: "/v2/portfolio/bridge/quote",
  method: "POST",
  body: {
    fromAssetAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base
    fromChain: "base",
    toAssetAddress: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", // USDC on Avalanche
    toChain: "avalanche",
    fromAmount: "100",
  },
  apiKey: process.env.API_KEY,
  apiSecret: process.env.API_SECRET,
});

Response

{
  routes: [
    {
      routeId: string, // Use this for bridge submission
      provider: string, // Bridge provider name
      protocols: string[], // Protocol names used
      toAmount: string, // Output amount
      serviceTime: number // Estimated time in seconds
    }
  ]
}

Notes

  • Supported pairs: the same ticker on both chains (for example ETH on Ethereum to ETH on Base; WETH to ETH does not qualify), or a stablecoin ticker on each side (USDC, USDCe, USDT, USDTe, USDT0, USDG). Tickers are matched case-insensitively
  • A pair outside that rule returns 400 with details explaining the rule. If an asset cannot be resolved right now, the request returns 503 and should be retried
  • Routes are sorted by output amount (highest first), not sorted by timing or speed
  • Quotes expire and should be used quickly

References