curl --request GET \
--url https://api.hel.io/v1/export/withdrawals \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hel.io/v1/export/withdrawals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hel.io/v1/export/withdrawals', 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.hel.io/v1/export/withdrawals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hel.io/v1/export/withdrawals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hel.io/v1/export/withdrawals")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hel.io/v1/export/withdrawals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "68129f9cc81cc9397e012b3a",
"state": "COMPLETED",
"time": "2025-04-30T22:09:32.978Z",
"sourceChain": "SOL",
"sourceToken": "USDC",
"sourceAmount": "1000000",
"destinationChain": "ETH",
"destinationToken": "USDC",
"destinationAmount": "990000",
"destinationWalletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0",
"sourceTxHash": "5xRE1Yhfq8SPxom2U2EyFxVB27uPKVFUYWUoaZCz58VD",
"sourceTxExplorerLink": "https://solscan.io/tx/5xRE1Yhfq8SPxom2U2EyFxVB27uPKVFUYWUoaZCz58VD",
"destinationTxHash": "0xabc123...",
"destinationTxExplorerLink": "https://etherscan.io/tx/0xabc123...",
"platformFee": "1000",
"affiliateFee": "0",
"decentBridgeFee": "5000",
"networkGasSource": "5000",
"networkGasDestination": "21000",
"transactionType": "WITHDRAWAL"
}
]{
"message": "Api key or token is invalid",
"code": 401
}Export Withdrawal Transactions
Exports all matching withdrawal transactions for your account with fees and explorer links. Use startDate and endDate to filter by date range. Requires WITHDRAWS_READ.
curl --request GET \
--url https://api.hel.io/v1/export/withdrawals \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hel.io/v1/export/withdrawals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hel.io/v1/export/withdrawals', 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.hel.io/v1/export/withdrawals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hel.io/v1/export/withdrawals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hel.io/v1/export/withdrawals")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hel.io/v1/export/withdrawals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "68129f9cc81cc9397e012b3a",
"state": "COMPLETED",
"time": "2025-04-30T22:09:32.978Z",
"sourceChain": "SOL",
"sourceToken": "USDC",
"sourceAmount": "1000000",
"destinationChain": "ETH",
"destinationToken": "USDC",
"destinationAmount": "990000",
"destinationWalletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0",
"sourceTxHash": "5xRE1Yhfq8SPxom2U2EyFxVB27uPKVFUYWUoaZCz58VD",
"sourceTxExplorerLink": "https://solscan.io/tx/5xRE1Yhfq8SPxom2U2EyFxVB27uPKVFUYWUoaZCz58VD",
"destinationTxHash": "0xabc123...",
"destinationTxExplorerLink": "https://etherscan.io/tx/0xabc123...",
"platformFee": "1000",
"affiliateFee": "0",
"decentBridgeFee": "5000",
"networkGasSource": "5000",
"networkGasDestination": "21000",
"transactionType": "WITHDRAWAL"
}
]{
"message": "Api key or token is invalid",
"code": 401
}api.hel.io/v1 and generate API keys there. For the development environment, use api.dev.hel.io/v1 and generate API keys from moonpay.dev.hel.io.startDate and endDate for date filtering.Authorizations
Authentication using JWT token
Query Parameters
Your API key, which can be generated from the Helio Dashboard settings page.
Page number (1-based).
Page size. Defaults to 20, maximum 100.
x <= 100Cursor for pagination. Returns items with _id less than this value.
Search by withdrawal detail ID, destination wallet (prefix), source token, or destination token.
Sort field. Defaults to createdAt.
Sort order. Defaults to desc.
asc, desc ISO 8601 start of createdAt range (inclusive).
ISO 8601 end of createdAt range (inclusive).
Filter by one or more withdrawal states.
QUOTED, SUBMITTING, SUBMITTED, BRIDGING, COMPLETED, FAILED, FAILED_EXPIRED, EXPIRED, REFUNDED_BY_PROVIDER Filter by source chain symbol (e.g. SOL, ETH).
Filter by destination chain symbol.
Filter by withdrawal config ID.
Response
Successful response with exported withdrawals.
Withdrawal detail ID.
QUOTED, SUBMITTING, SUBMITTED, BRIDGING, COMPLETED, FAILED, FAILED_EXPIRED, EXPIRED, REFUNDED_BY_PROVIDER ISO 8601 created timestamp.
Source amount in atomic units.
Destination amount in atomic units.
Always WITHDRAWAL for this export.
WITHDRAWAL 