curl --request GET \
--url https://api.hel.io/v1/withdrawal-transactions/api-key \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hel.io/v1/withdrawal-transactions/api-key"
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/withdrawal-transactions/api-key', 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/withdrawal-transactions/api-key",
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/withdrawal-transactions/api-key"
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/withdrawal-transactions/api-key")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hel.io/v1/withdrawal-transactions/api-key")
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[
{
"withdrawalDetailId": "68129f9cc81cc9397e012b3a",
"state": "COMPLETED",
"sourceChain": "SOL",
"sourceToken": "USDC",
"sourceAmount": "1000000",
"destinationChain": "ETH",
"destinationToken": "USDC",
"destinationAmount": "990000",
"destinationWalletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0",
"txHash": "0xabc123...",
"broadcastAck": "acknowledged",
"errorReason": null,
"customerId": "cust_123",
"createdAt": "2025-04-30T22:09:32.978Z",
"updatedAt": "2025-04-30T22:10:01.120Z"
}
]{
"message": "Api key or token is invalid",
"code": 401
}List Withdrawal Transactions
Returns withdrawal transactions for the authenticated merchant account. Supports pagination and filtering by state, chains, date range, and withdrawal config. Requires WITHDRAWS_READ.
curl --request GET \
--url https://api.hel.io/v1/withdrawal-transactions/api-key \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hel.io/v1/withdrawal-transactions/api-key"
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/withdrawal-transactions/api-key', 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/withdrawal-transactions/api-key",
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/withdrawal-transactions/api-key"
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/withdrawal-transactions/api-key")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hel.io/v1/withdrawal-transactions/api-key")
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[
{
"withdrawalDetailId": "68129f9cc81cc9397e012b3a",
"state": "COMPLETED",
"sourceChain": "SOL",
"sourceToken": "USDC",
"sourceAmount": "1000000",
"destinationChain": "ETH",
"destinationToken": "USDC",
"destinationAmount": "990000",
"destinationWalletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0",
"txHash": "0xabc123...",
"broadcastAck": "acknowledged",
"errorReason": null,
"customerId": "cust_123",
"createdAt": "2025-04-30T22:09:32.978Z",
"updatedAt": "2025-04-30T22:10:01.120Z"
}
]{
"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.page and limit for offset pagination, or lastItemId for cursor pagination. Default page size is 20 (max 100). Amounts are returned in atomic units.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
Withdrawal transactions retrieved successfully.
Withdrawal detail ID.
QUOTED, SUBMITTING, SUBMITTED, BRIDGING, COMPLETED, FAILED, FAILED_EXPIRED, EXPIRED, REFUNDED_BY_PROVIDER Source chain symbol.
Source token symbol.
Source amount in atomic units.
Destination chain symbol.
Destination token symbol.
Destination amount in atomic units.
Destination wallet address.
Most recent transaction hash associated with the withdrawal.
acknowledged = confirmed; unacknowledged = sent, keep polling; rejected = terminal failure.
acknowledged, unacknowledged, rejected Human-readable error when the withdrawal failed.
Merchant-defined customer identifier set at prepare time, or null when omitted.
