curl --request POST \
--url https://api.privy.io/v1/deposit_accounts/crypto/quote \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '
{
"source": {
"chain": "ethereum",
"asset": "eth"
},
"destination": {
"chain": "base",
"asset": "usdc"
},
"input_amount": "0.02",
"slippage_bps": 50
}
'HttpResponse<String> response = Unirest.post("https://api.privy.io/v1/deposit_accounts/crypto/quote")
.header("privy-app-id", "<privy-app-id>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"source\": {\n \"chain\": \"ethereum\",\n \"asset\": \"eth\"\n },\n \"destination\": {\n \"chain\": \"base\",\n \"asset\": \"usdc\"\n },\n \"input_amount\": \"0.02\",\n \"slippage_bps\": 50\n}")
.asString();const options = {
method: 'POST',
headers: {
'privy-app-id': '<privy-app-id>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
source: {chain: 'ethereum', asset: 'eth'},
destination: {chain: 'base', asset: 'usdc'},
input_amount: '0.02',
slippage_bps: 50
})
};
fetch('https://api.privy.io/v1/deposit_accounts/crypto/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.privy.io/v1/deposit_accounts/crypto/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'source' => [
'chain' => 'ethereum',
'asset' => 'eth'
],
'destination' => [
'chain' => 'base',
'asset' => 'usdc'
],
'input_amount' => '0.02',
'slippage_bps' => 50
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"privy-app-id: <privy-app-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/deposit_accounts/crypto/quote"
payload := strings.NewReader("{\n \"source\": {\n \"chain\": \"ethereum\",\n \"asset\": \"eth\"\n },\n \"destination\": {\n \"chain\": \"base\",\n \"asset\": \"usdc\"\n },\n \"input_amount\": \"0.02\",\n \"slippage_bps\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"input_amount": "0.02",
"estimated_output_amount": "49.5",
"created_at": "2026-09-01T12:00:00.000Z"
}Quote crypto deposit account
Return an indicative quote for a crypto deposit route without creating a wallet.
curl --request POST \
--url https://api.privy.io/v1/deposit_accounts/crypto/quote \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '
{
"source": {
"chain": "ethereum",
"asset": "eth"
},
"destination": {
"chain": "base",
"asset": "usdc"
},
"input_amount": "0.02",
"slippage_bps": 50
}
'HttpResponse<String> response = Unirest.post("https://api.privy.io/v1/deposit_accounts/crypto/quote")
.header("privy-app-id", "<privy-app-id>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"source\": {\n \"chain\": \"ethereum\",\n \"asset\": \"eth\"\n },\n \"destination\": {\n \"chain\": \"base\",\n \"asset\": \"usdc\"\n },\n \"input_amount\": \"0.02\",\n \"slippage_bps\": 50\n}")
.asString();const options = {
method: 'POST',
headers: {
'privy-app-id': '<privy-app-id>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
source: {chain: 'ethereum', asset: 'eth'},
destination: {chain: 'base', asset: 'usdc'},
input_amount: '0.02',
slippage_bps: 50
})
};
fetch('https://api.privy.io/v1/deposit_accounts/crypto/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.privy.io/v1/deposit_accounts/crypto/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'source' => [
'chain' => 'ethereum',
'asset' => 'eth'
],
'destination' => [
'chain' => 'base',
'asset' => 'usdc'
],
'input_amount' => '0.02',
'slippage_bps' => 50
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"privy-app-id: <privy-app-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/deposit_accounts/crypto/quote"
payload := strings.NewReader("{\n \"source\": {\n \"chain\": \"ethereum\",\n \"asset\": \"eth\"\n },\n \"destination\": {\n \"chain\": \"base\",\n \"asset\": \"usdc\"\n },\n \"input_amount\": \"0.02\",\n \"slippage_bps\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"input_amount": "0.02",
"estimated_output_amount": "49.5",
"created_at": "2026-09-01T12:00:00.000Z"
}input_amount to quote approximately $50 of the source asset. Source and destination must both be mainnet or both be testnet. Quotes do not require a wallet ID or an authorization signature.Authorizations
Basic Auth header with your app ID as the username and your app secret as the password.
Headers
ID of your Privy app.
Body
Request body for an indicative crypto deposit-account route quote.
An asset and chain for an indicative crypto deposit-account quote.
Show child attributes
Show child attributes
{ "chain": "base", "asset": "usdc" }
An asset and chain for an indicative crypto deposit-account quote.
Show child attributes
Show child attributes
{ "chain": "base", "asset": "usdc" }
A positive decimal amount in the source token’s standard unit, not its smallest on-chain unit.
100^(?=.*[1-9])(?:0|[1-9]\d*)(?:\.\d+)?$"1.5"
Value in basis points: integer from 0 to 10000 (0% to 100%).
0 <= x <= 10000Response
An indicative quote in token standard units.
An indicative crypto deposit-account quote. Amounts are in token standard units.
Quoted input amount as a decimal string in the source token's standard unit (e.g. "0.02" for 0.02 ETH). Not in the smallest on-chain unit.
Estimated output amount as a decimal string in the destination token's standard unit. Not in the smallest on-chain unit.
Was this page helpful?

