curl --request GET \
--url https://api.hypedexer.com/users/{user}/statements \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hypedexer.com/users/{user}/statements"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hypedexer.com/users/{user}/statements', 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.hypedexer.com/users/{user}/statements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.hypedexer.com/users/{user}/statements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.hypedexer.com/users/{user}/statements")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hypedexer.com/users/{user}/statements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Daily statement 2026-10-30 to 2026-10-30",
"data": [
{
"date": "2026-10-30",
"total_value_usd": 47550.91,
"usdc_balance_usd": 46823.95,
"unrealized_pnl_usd": -188.22,
"positions_notional_usd": 63047.06,
"n_positions": 32,
"positions": {
"BTC": {
"szi": -0.1067,
"entryPx": 76978.21507029053,
"px": 77338
},
"HYPE": {
"szi": -15.22,
"entryPx": 89.99080223390277,
"px": 89.964
},
"xyz:NVDA": {
"szi": 1.446,
"entryPx": 205.105,
"px": 205.11
}
},
"spot_value_usd": 0.01,
"spot_balances": {
"MAX": 101007.0619
},
"staked_hype": 10.18575998,
"staked_value_usd": 915.17,
"lend_net_usd": 0,
"vault_equity_usd": 0,
"vaults": {},
"realized_pnl_usd": 3090.34,
"fees_usd": 919.23,
"funding_usd": 13.7,
"deposits_usd": 0,
"withdrawals_usd": 0,
"transfers_in_usd": 0,
"transfers_out_usd": 0,
"vault_net_usd": 0,
"staking_net_hype": 0,
"volume_usd": 15542396.29,
"fills": 55566,
"flags": []
}
],
"total_count": 1,
"execution_time_ms": null,
"next_cursor": null,
"has_more": null
}{
"error": "statements_paid_plans"
}Account statements
Daily HyperCore account statement for one address: balances at 24:00 UTC and activity during each day, one row per day (UTC). The total value covers USDC and stablecoins, unrealized PnL of perp positions on every dex (main dex and HIP-3), spot tokens, staked HYPE, native lending and vault equity. Activity covers realized PnL, fees, funding, deposits, withdrawals, transfers, vault and staking flows, volume and number of fills.
The current day is included as a provisional row, refreshed every few minutes, with balances as of the time given in its as_of flag. Days below $1 with no activity and no open position are omitted. Statements start on 1 June 2025; up to 400 days per request.
Available on paid plans: a Free-plan key gets 403 with "error": "statements_paid_plans". Field list, flags and examples: Account statements.
curl --request GET \
--url https://api.hypedexer.com/users/{user}/statements \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hypedexer.com/users/{user}/statements"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hypedexer.com/users/{user}/statements', 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.hypedexer.com/users/{user}/statements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.hypedexer.com/users/{user}/statements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.hypedexer.com/users/{user}/statements")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hypedexer.com/users/{user}/statements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Daily statement 2026-10-30 to 2026-10-30",
"data": [
{
"date": "2026-10-30",
"total_value_usd": 47550.91,
"usdc_balance_usd": 46823.95,
"unrealized_pnl_usd": -188.22,
"positions_notional_usd": 63047.06,
"n_positions": 32,
"positions": {
"BTC": {
"szi": -0.1067,
"entryPx": 76978.21507029053,
"px": 77338
},
"HYPE": {
"szi": -15.22,
"entryPx": 89.99080223390277,
"px": 89.964
},
"xyz:NVDA": {
"szi": 1.446,
"entryPx": 205.105,
"px": 205.11
}
},
"spot_value_usd": 0.01,
"spot_balances": {
"MAX": 101007.0619
},
"staked_hype": 10.18575998,
"staked_value_usd": 915.17,
"lend_net_usd": 0,
"vault_equity_usd": 0,
"vaults": {},
"realized_pnl_usd": 3090.34,
"fees_usd": 919.23,
"funding_usd": 13.7,
"deposits_usd": 0,
"withdrawals_usd": 0,
"transfers_in_usd": 0,
"transfers_out_usd": 0,
"vault_net_usd": 0,
"staking_net_hype": 0,
"volume_usd": 15542396.29,
"fills": 55566,
"flags": []
}
],
"total_count": 1,
"execution_time_ms": null,
"next_cursor": null,
"has_more": null
}{
"error": "statements_paid_plans"
}Authorizations
Your Hypedexer API key. Create one in the console at https://app.hypedexer.com. Authorization: Bearer <key> and the api_key query parameter are accepted as well.
Headers
Path Parameters
Account address (0x + 40 hex)
^0x[0-9a-fA-F]{40}$"0xc42ec9d9156d9196f9a3887380ccfaaa518e4c8d"
Query Parameters
First day (UTC), YYYY-MM-DD
"2026-10-30"
Last day (UTC), YYYY-MM-DD, inclusive. Up to 400 days per request.
"2026-10-31"
json (default) or csv. CSV comes as a file download, one row per day; nested fields (positions, spot_balances, vaults) are JSON strings.
json, csv