value-transfer

Get the best transfer route for a move

Quotes the move against LayerZero VT and returns ONE selected route (cheapest by total USD fee) in DRE dialect, plus the losing routes as alternatives. No VT chainKeys and no 0xEeee… native sentinel cross the wire: chains are viem chainIds and fees arrive decoded (amount, symbol, decimals, usd). Route selection, fee decoding and protocol labelling are server side so they can change without a client release. The delivery address is bound server side to the authenticated user’s DRE smart wallet; the body’s dstWalletAddress is ignored. userSteps calldata and EIP-712 typed data are passed through byte for byte for the wallet to sign. A null quote means no route exists for this pair.

post/value-transfer/quotes

Request body

srcChainId1 | 143 | 8453 | 42161 required

Source chainId. Must be a supported chain.

dstChainId1 | 143 | 8453 | 42161 required

Destination chainId. Must be a supported chain.

srcTokenAddressstring required

Source token address, or the zero address (0x0…0) for the native gas token.

dstTokenAddressstring required

Destination token address

srcWalletAddressstring required

Connected external wallet.

dstWalletAddressstring required

User's DRE wallet (destination). NOTE: ignored. The backend binds the delivery address to the authenticated user's smart wallet resolved from Privy. Kept for request shape compatibility.

amountstring required

Amount in the source token's native units

Example request

{
  "srcChainId": 42161,
  "dstChainId": 8453,
  "srcTokenAddress": "0x0000000000000000000000000000000000000000",
  "dstTokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "amount": "5000000"
}

Response

Selected transfer route

Example response

{
  "quote": {
    "quoteId": "0x7f3a…",
    "action": "bridge",
    "trackable": true,
    "route": {
      "label": "Stargate",
      "srcChainId": 42161,
      "dstChainId": 8453,
      "steps": [
        {
          "description": "Bridge USDC from Arbitrum to Base"
        }
      ]
    },
    "amounts": {
      "srcRaw": "5000000",
      "srcUsd": "5.00",
      "dstRaw": "4993000",
      "dstUsd": "4.99",
      "dstMinRaw": "4988000",
      "dstDecimals": 6,
      "dstSymbol": "USDC"
    },
    "fees": {
      "totalUsd": "0.12",
      "percent": "0.0338",
      "items": [
        {
          "labelKey": "MESSAGE",
          "description": "LayerZero message fee",
          "amount": "0.000042",
          "symbol": "ETH",
          "decimals": 18
        }
      ]
    },
    "userSteps": [
      {
        "type": "TRANSACTION",
        "description": "Approve USDC",
        "chainId": 42161
      }
    ]
  },
  "alternatives": [
    {
      "quoteId": "0x7f3a…",
      "action": "bridge",
      "trackable": true,
      "route": {
        "label": "Stargate",
        "srcChainId": 42161,
        "dstChainId": 8453,
        "steps": [
          {
            "description": "Bridge USDC from Arbitrum to Base"
          }
        ]
      },
      "amounts": {
        "srcRaw": "5000000",
        "srcUsd": "5.00",
        "dstRaw": "4993000",
        "dstUsd": "4.99",
        "dstMinRaw": "4988000",
        "dstDecimals": 6,
        "dstSymbol": "USDC"
      },
      "fees": {
        "totalUsd": "0.12",
        "percent": "0.0338",
        "items": [
          {
            "labelKey": "MESSAGE",
            "description": "LayerZero message fee",
            "amount": "0.000042",
            "symbol": "ETH",
            "decimals": 18
          }
        ]
      },
      "userSteps": [
        {
          "type": "TRANSACTION",
          "description": "Approve USDC",
          "chainId": 42161
        }
      ]
    }
  ]
}

Changes

No recorded changes to this endpoint across all 1 revision of this API.