curl --request POST \
--url https://api.agg.market/execution/withdraw \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-app-id: <api-key>' \
--data '
{
"amountRaw": "<string>",
"destinationAddress": "<string>",
"destinationChainId": 2,
"max": true
}
'import requests
url = "https://api.agg.market/execution/withdraw"
payload = {
"amountRaw": "<string>",
"destinationAddress": "<string>",
"destinationChainId": 2,
"max": True
}
headers = {
"x-app-id": "<api-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-app-id': '<api-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amountRaw: '<string>',
destinationAddress: '<string>',
destinationChainId: 2,
max: true
})
};
fetch('https://api.agg.market/execution/withdraw', 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.agg.market/execution/withdraw",
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([
'amountRaw' => '<string>',
'destinationAddress' => '<string>',
'destinationChainId' => 2,
'max' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-app-id: <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://api.agg.market/execution/withdraw"
payload := strings.NewReader("{\n \"amountRaw\": \"<string>\",\n \"destinationAddress\": \"<string>\",\n \"destinationChainId\": 2,\n \"max\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-app-id", "<api-key>")
req.Header.Add("Authorization", "Bearer <token>")
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://api.agg.market/execution/withdraw")
.header("x-app-id", "<api-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amountRaw\": \"<string>\",\n \"destinationAddress\": \"<string>\",\n \"destinationChainId\": 2,\n \"max\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agg.market/execution/withdraw")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-app-id"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amountRaw\": \"<string>\",\n \"destinationAddress\": \"<string>\",\n \"destinationChainId\": 2,\n \"max\": true\n}"
response = http.request(request)
puts response.read_body{
"withdrawalId": "<string>",
"requested": {
"amountRaw": "<string>"
},
"completedAmountRaw": "<string>",
"destination": {
"chainId": 2,
"address": "<string>"
},
"legs": [
{
"sourceChainId": 123,
"destChainId": 123,
"amountRaw": "<string>",
"txHash": "<string>",
"bridgeOperationId": "<string>",
"sourceTokenSymbol": "<string>",
"errorMessage": "<string>"
}
],
"expected": {
"outputRaw": "<string>",
"feeRaw": "<string>",
"etaSeconds": 123
},
"errorMessage": "<string>",
"sources": [
{
"sourceId": "<string>",
"chainId": 123,
"tokenAddress": "<string>",
"decimals": 18,
"amountRaw": "<string>",
"txHash": "<string>",
"bridgeOperationId": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Withdraw funds
Withdraws funds to an external address and returns submitted transfer details.
curl --request POST \
--url https://api.agg.market/execution/withdraw \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-app-id: <api-key>' \
--data '
{
"amountRaw": "<string>",
"destinationAddress": "<string>",
"destinationChainId": 2,
"max": true
}
'import requests
url = "https://api.agg.market/execution/withdraw"
payload = {
"amountRaw": "<string>",
"destinationAddress": "<string>",
"destinationChainId": 2,
"max": True
}
headers = {
"x-app-id": "<api-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-app-id': '<api-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amountRaw: '<string>',
destinationAddress: '<string>',
destinationChainId: 2,
max: true
})
};
fetch('https://api.agg.market/execution/withdraw', 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.agg.market/execution/withdraw",
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([
'amountRaw' => '<string>',
'destinationAddress' => '<string>',
'destinationChainId' => 2,
'max' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-app-id: <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://api.agg.market/execution/withdraw"
payload := strings.NewReader("{\n \"amountRaw\": \"<string>\",\n \"destinationAddress\": \"<string>\",\n \"destinationChainId\": 2,\n \"max\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-app-id", "<api-key>")
req.Header.Add("Authorization", "Bearer <token>")
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://api.agg.market/execution/withdraw")
.header("x-app-id", "<api-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amountRaw\": \"<string>\",\n \"destinationAddress\": \"<string>\",\n \"destinationChainId\": 2,\n \"max\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agg.market/execution/withdraw")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-app-id"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amountRaw\": \"<string>\",\n \"destinationAddress\": \"<string>\",\n \"destinationChainId\": 2,\n \"max\": true\n}"
response = http.request(request)
puts response.read_body{
"withdrawalId": "<string>",
"requested": {
"amountRaw": "<string>"
},
"completedAmountRaw": "<string>",
"destination": {
"chainId": 2,
"address": "<string>"
},
"legs": [
{
"sourceChainId": 123,
"destChainId": 123,
"amountRaw": "<string>",
"txHash": "<string>",
"bridgeOperationId": "<string>",
"sourceTokenSymbol": "<string>",
"errorMessage": "<string>"
}
],
"expected": {
"outputRaw": "<string>",
"feeRaw": "<string>",
"etaSeconds": 123
},
"errorMessage": "<string>",
"sources": [
{
"sourceId": "<string>",
"chainId": 123,
"tokenAddress": "<string>",
"decimals": 18,
"amountRaw": "<string>",
"txHash": "<string>",
"bridgeOperationId": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
Your application ID. Required for all app-tier and user-tier routes.
JWT access token returned by POST /auth/verify. Required for user-tier routes.
Body
Positive integer string in the token's native decimals.
^[1-9][0-9]*$Stable-coin symbol the withdrawal is denominated in.
USDC, USDC.e, USDT Recipient address. EVM destinations: 0x-prefixed 20-byte hex. Solana: base58 (32–44 chars).
^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44})$Chain ID where the recipient address should receive funds.
x >= 1Cap to the deliverable maximum (withdraw-max intent).
Response
200
DB-backed withdrawal status. Mirrors the WithdrawalStatus Prisma enum.
pending, bridging, transferring, completed, partial, failed Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Withdrawal pricing state. 'quoted' rows have a fresh preflight quote; 'unviable' means at least one source leg is too small for required fees.
unquoted, quoting, quoted, unviable Show child attributes
Show child attributes