Skip to main content
POST
/
v1
/
wallets
/
{wallet_id}
/
transfer
/
quote
curl --request POST \
  --url https://api.privy.io/v1/wallets/{wallet_id}/transfer/quote \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'privy-app-id: <privy-app-id>' \
  --data '{
  "source": {
    "asset": "usdc",
    "amount": "10.0",
    "chain": "base"
  },
  "destination": {
    "address": "0xRecipientAddress",
    "chain": "arbitrum"
  },
  "fee_configuration": {
    "type": "total_fee_bps",
    "value": 80
  }
}'
{
  "source": {
    "asset": "usdc",
    "amount": "10.0",
    "chain": "base"
  },
  "destination": {
    "address": "0xRecipientAddress",
    "chain": "arbitrum"
  },
  "estimated_output_amount": "9.94",
  "estimated_fees": [
    {
      "type": "relayer",
      "amount": "0.02"
    },
    {
      "type": "developer",
      "recipient": "0x1234567890abcdef1234567890abcdef12345678",
      "amount": "0.04"
    }
  ],
  "expires_at": 1715200000
}

Documentation Index

Fetch the complete documentation index at: https://docs.privy.io/llms.txt

Use this file to discover all available pages before exploring further.

curl --request POST \
  --url https://api.privy.io/v1/wallets/{wallet_id}/transfer/quote \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'privy-app-id: <privy-app-id>' \
  --data '{
  "source": {
    "asset": "usdc",
    "amount": "10.0",
    "chain": "base"
  },
  "destination": {
    "address": "0xRecipientAddress",
    "chain": "arbitrum"
  },
  "fee_configuration": {
    "type": "total_fee_bps",
    "value": 80
  }
}'
{
  "source": {
    "asset": "usdc",
    "amount": "10.0",
    "chain": "base"
  },
  "destination": {
    "address": "0xRecipientAddress",
    "chain": "arbitrum"
  },
  "estimated_output_amount": "9.94",
  "estimated_fees": [
    {
      "type": "relayer",
      "amount": "0.02"
    },
    {
      "type": "developer",
      "recipient": "0x1234567890abcdef1234567890abcdef12345678",
      "amount": "0.04"
    }
  ],
  "expires_at": 1715200000
}

Authorizations

Authorization
string
header
required

Basic Auth header with your app ID as the username and your app secret as the password.

Headers

privy-app-id
string
required

ID of your Privy app.

privy-authorization-signature
string

Request authorization signature. If multiple signatures are required, they should be comma separated.

privy-request-expiry
string

Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the request must be processed.

Path Parameters

wallet_id
string
required

ID of the wallet.

Body

application/json

Request body for requesting a quote for a cross-asset or cross-chain (DADC) transfer.

source
NamedTokenTransferSource · object
required

Source for a transfer identified by a named asset (e.g. "usdc", "eth"). Use this variant for first-class assets maintained by Privy.

Example:
{
"asset": "usdc",
"amount": "10.5",
"chain": "base"
}
destination
TokenTransferDestination · object
required

The destination address for a token transfer. Optionally specify a different asset or chain for cross-asset or cross-chain transfers.

Example:
{
"address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
}
amount_type
enum<string>

Whether the amount refers to the input token or output token.

Available options:
exact_input,
exact_output
slippage_bps
integer

Maximum allowed slippage in basis points (1 bps = 0.01%).

Required range: 0 <= x <= 10000
fee_configuration
FeeConfiguration · object

Optional fee configuration for the transfer, if omitted, only Privy and bridge provider fees are applied.

Example:
{ "type": "total_fee_bps", "value": 50 }

Response

200 - application/json

Transfer quote retrieved successfully.

Response containing a quote for a cross-asset or cross-chain (DADC) transfer.

source
NamedTokenTransferSource · object
required

Source for a transfer identified by a named asset (e.g. "usdc", "eth"). Use this variant for first-class assets maintained by Privy.

Example:
{
"asset": "usdc",
"amount": "10.5",
"chain": "base"
}
destination
TokenTransferDestination · object
required

The destination address for a token transfer. Optionally specify a different asset or chain for cross-asset or cross-chain transfers.

Example:
{
"address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
}
estimated_output_amount
string
required

Estimated output amount in decimals

estimated_fees
(RelayerFee · object | PrivyFee · object | DeveloperFee · object)[]
required

Estimated fees in USD

Estimated fee paid to the relayer.

Example:
{
"type": "privy",
"recipient": "0x1234567890abcdef1234567890abcdef12345678",
"amount": "0.20"
}
expires_at
number
required

Quote expiry as unix timestamp (seconds)

amount_type
enum<string>

Whether the amount refers to the input token or output token.

Available options:
exact_input,
exact_output