curl --request POST \
--url https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91",
"sourceChainId": "eip155:8453",
"sourceToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"direction": "exactIn",
"amount": "1000000",
"amountOut": "1000000"
}
'import requests
url = "https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview"
payload = {
"account": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91",
"sourceChainId": "eip155:8453",
"sourceToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"direction": "exactIn",
"amount": "1000000",
"amountOut": "1000000"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91',
sourceChainId: 'eip155:8453',
sourceToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
direction: 'exactIn',
amount: '1000000',
amountOut: '1000000'
})
};
fetch('https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview', 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://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview",
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([
'account' => '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91',
'sourceChainId' => 'eip155:8453',
'sourceToken' => '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'direction' => 'exactIn',
'amount' => '1000000',
'amountOut' => '1000000'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$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://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview"
payload := strings.NewReader("{\n \"account\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\",\n \"sourceChainId\": \"eip155:8453\",\n \"sourceToken\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"direction\": \"exactIn\",\n \"amount\": \"1000000\",\n \"amountOut\": \"1000000\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
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))
}HttpResponse<String> response = Unirest.post("https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\",\n \"sourceChainId\": \"eip155:8453\",\n \"sourceToken\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"direction\": \"exactIn\",\n \"amount\": \"1000000\",\n \"amountOut\": \"1000000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\",\n \"sourceChainId\": \"eip155:8453\",\n \"sourceToken\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"direction\": \"exactIn\",\n \"amount\": \"1000000\",\n \"amountOut\": \"1000000\"\n}"
response = http.request(request)
puts response.read_body{
"settlementLayer": "<string>",
"expiresAt": 123,
"estimatedFillTimeSeconds": 7,
"fees": {
"total": {
"usd": 123
},
"breakdown": {
"gas": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"bridge": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"swap": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"app": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"protocol": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"sponsorSurcharge": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
}
},
"totalUsd": 123
},
"input": {
"token": "<string>",
"amount": "<string>",
"symbol": "<string>",
"decimals": 123
},
"output": {
"token": "<string>",
"amount": "<string>",
"symbol": "<string>",
"decimals": 123
},
"timing": {
"expectedSeconds": 42,
"softDelaySeconds": 90,
"escalatedDelaySeconds": 300
}
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
],
"inputAmount": "1010000"
}Get a deposit quote
Estimates fees, output, and completion time for a deposit.
curl --request POST \
--url https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91",
"sourceChainId": "eip155:8453",
"sourceToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"direction": "exactIn",
"amount": "1000000",
"amountOut": "1000000"
}
'import requests
url = "https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview"
payload = {
"account": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91",
"sourceChainId": "eip155:8453",
"sourceToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"direction": "exactIn",
"amount": "1000000",
"amountOut": "1000000"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91',
sourceChainId: 'eip155:8453',
sourceToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
direction: 'exactIn',
amount: '1000000',
amountOut: '1000000'
})
};
fetch('https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview', 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://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview",
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([
'account' => '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91',
'sourceChainId' => 'eip155:8453',
'sourceToken' => '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'direction' => 'exactIn',
'amount' => '1000000',
'amountOut' => '1000000'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$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://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview"
payload := strings.NewReader("{\n \"account\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\",\n \"sourceChainId\": \"eip155:8453\",\n \"sourceToken\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"direction\": \"exactIn\",\n \"amount\": \"1000000\",\n \"amountOut\": \"1000000\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
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))
}HttpResponse<String> response = Unirest.post("https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\",\n \"sourceChainId\": \"eip155:8453\",\n \"sourceToken\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"direction\": \"exactIn\",\n \"amount\": \"1000000\",\n \"amountOut\": \"1000000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://v1.orchestrator.rhinestone.dev/deposit-processor/quotes/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\",\n \"sourceChainId\": \"eip155:8453\",\n \"sourceToken\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"direction\": \"exactIn\",\n \"amount\": \"1000000\",\n \"amountOut\": \"1000000\"\n}"
response = http.request(request)
puts response.read_body{
"settlementLayer": "<string>",
"expiresAt": 123,
"estimatedFillTimeSeconds": 7,
"fees": {
"total": {
"usd": 123
},
"breakdown": {
"gas": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"bridge": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"swap": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"app": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"protocol": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
},
"sponsorSurcharge": {
"usd": 123,
"sponsored": true,
"label": "<string>",
"internal": true
}
},
"totalUsd": 123
},
"input": {
"token": "<string>",
"amount": "<string>",
"symbol": "<string>",
"decimals": 123
},
"output": {
"token": "<string>",
"amount": "<string>",
"symbol": "<string>",
"decimals": 123
},
"timing": {
"expectedSeconds": 42,
"softDelaySeconds": 90,
"escalatedDelaySeconds": 300
}
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
],
"inputAmount": "1010000"
}Headers
API key for authentication
"your-api-key"
Body
Ethereum address (0x followed by 40 hex characters)
^0x[a-fA-F0-9]{40}$"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91"
CAIP-2 chain identifier (e.g. "eip155:8453")
^[a-z0-9]+:[a-zA-Z0-9]+$"eip155:8453"
Source token: a 0x address on an EVM source chain, or a base58 SPL mint on Solana.
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
exactIn fixes the deposited amount and quotes what is delivered; exactOut fixes the delivered amountOut and quotes the deposit that produces it. Defaults to exactIn.
exactIn, exactOut "exactIn"
Deposited amount in the source token's smallest unit. Required for (and only valid with) direction: exactIn.
^\d+$"1000000"
Delivered amount in the destination token's smallest unit. Required for (and only valid with) direction: exactOut; the quote's input.amount is then the deposit that produces it.
^\d+$"1000000"
Response
Indicative quote for the requested route
The orchestrator's estimate for the fill leg, in seconds. Covers bridging only; see timing.expectedSeconds for the end-to-end expectation.
x >= 07
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Indicative, non-contractual duration estimate derived from qualifying recent completed deposits on the corridor or chain pair, falling back to the selected route’s indicative estimate when aggregate data is unavailable. Always expectedSeconds <= softDelaySeconds <= escalatedDelaySeconds. On a deposit the seconds are measured from its createdAt and are served only while it is still in flight (pending, processing, delayed); on a quote preview they describe the quoted route. Resolved per request, so it may change between calls, and absent whenever no estimate is available. Never a deadline, an expiry or a guarantee.
Show child attributes
Show child attributes
Was this page helpful?