userFees | Hyperliquid Info API
curl --request POST \
--url https://hypercore.goldrushdata.com/info \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"user": "<string>"
}
'import requests
url = "https://hypercore.goldrushdata.com/info"
payload = {
"type": "<string>",
"user": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({type: '<string>', user: '<string>'})
};
fetch('https://hypercore.goldrushdata.com/info', 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://hypercore.goldrushdata.com/info",
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([
'type' => '<string>',
'user' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://hypercore.goldrushdata.com/info"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"user\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://hypercore.goldrushdata.com/info")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"user\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hypercore.goldrushdata.com/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"<string>\",\n \"user\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"dailyUserVlm": [
{
"date": "<string>",
"userCross": "<string>",
"userAdd": "<string>",
"exchange": "<string>"
}
],
"feeSchedule": {
"cross": "<string>",
"add": "<string>",
"spotCross": "<string>",
"spotAdd": "<string>",
"referralDiscount": "<string>",
"tiers": {
"vip": [
{}
],
"mm": [
{}
]
},
"stakingDiscountTiers": [
{}
]
},
"userCrossRate": "<string>",
"userAddRate": "<string>",
"activeReferralDiscount": "<string>",
"trial": {},
"feeTrialReward": "<string>",
"nextTrialAvailableTimestamp": {}
}Info API
userFees | Hyperliquid Info API
Hyperliquid userFees: fetch a user’s fee schedule and recent daily trading volume.
POST
/
info
userFees | Hyperliquid Info API
curl --request POST \
--url https://hypercore.goldrushdata.com/info \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"user": "<string>"
}
'import requests
url = "https://hypercore.goldrushdata.com/info"
payload = {
"type": "<string>",
"user": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({type: '<string>', user: '<string>'})
};
fetch('https://hypercore.goldrushdata.com/info', 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://hypercore.goldrushdata.com/info",
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([
'type' => '<string>',
'user' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://hypercore.goldrushdata.com/info"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"user\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://hypercore.goldrushdata.com/info")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"user\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hypercore.goldrushdata.com/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"<string>\",\n \"user\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"dailyUserVlm": [
{
"date": "<string>",
"userCross": "<string>",
"userAdd": "<string>",
"exchange": "<string>"
}
],
"feeSchedule": {
"cross": "<string>",
"add": "<string>",
"spotCross": "<string>",
"spotAdd": "<string>",
"referralDiscount": "<string>",
"tiers": {
"vip": [
{}
],
"mm": [
{}
]
},
"stakingDiscountTiers": [
{}
]
},
"userCrossRate": "<string>",
"userAddRate": "<string>",
"activeReferralDiscount": "<string>",
"trial": {},
"feeTrialReward": "<string>",
"nextTrialAvailableTimestamp": {}
}Credit Cost
1 per call
Processing
Realtime
type: "userFees" is used to fetch a user’s fee schedule and recent daily volume.
Estimate your monthly cost for this API using the Pricing Calculator.
- Wire-equal to
POST api.hyperliquid.xyz/infowith{"type": "userFees", "user": "..."}. feeScheduleis the exchange-wide tier table;userCrossRate/userAddRateare the effective rates this user pays after VIP-tier, referral, and staking discounts.- All rate and volume fields are decimal strings; a rate of
"0.00045"means 4.5 basis points.
cross) and maker (add) rates a wallet actually pays, and to reconstruct the tier table and discounts that produce them.
User-keyed.
Endpoint
POST https://hypercore.goldrushdata.com/info
Authorization: Bearer <GOLDRUSH_API_KEY>
Content-Type: application/json
Request
string
required
Always
"userFees".string
required
The wallet address (lowercase 0x-prefixed hex).
Example
curl -X POST https://hypercore.goldrushdata.com/info \
-H "Authorization: Bearer $GOLDRUSH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "userFees",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
}'
const response = await fetch("https://hypercore.goldrushdata.com/info", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GOLDRUSH_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
type: "userFees",
user: "0x31ca8395cf837de08b24da3f660e77761dfb974b",
}),
});
const fees = await response.json();
import os, requests
response = requests.post(
"https://hypercore.goldrushdata.com/info",
headers={"Authorization": f"Bearer {os.environ['GOLDRUSH_API_KEY']}"},
json={
"type": "userFees",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
},
)
fees = response.json()
Response
A single object with the user’s recent daily volume, the exchange-widefeeSchedule, the user’s effective rates, and any active discounts / trial state.
{
"dailyUserVlm": [
{
"date": "2026-07-09",
"userCross": "587333.02",
"userAdd": "1041946.77",
"exchange": "3832824759.19"
}
],
"feeSchedule": {
"cross": "0.00045",
"add": "0.00015",
"spotCross": "0.0007",
"spotAdd": "0.0004",
"referralDiscount": "0.04",
"tiers": {
"vip": [
{
"ntlCutoff": "5000000",
"cross": "0.0004",
"add": "0.00012",
"spotCross": "0.0006",
"spotAdd": "0.0003"
}
],
"mm": [
{
"makerFractionCutoff": "0.005",
"add": "-0.00001"
}
]
},
"stakingDiscountTiers": [
{ "bpsOfMaxSupply": "0.0", "discount": "0.0" },
{ "bpsOfMaxSupply": "0.1", "discount": "0.05" }
]
},
"userCrossRate": "0.000405",
"userAddRate": "0.00015",
"activeReferralDiscount": "0.0",
"trial": null,
"feeTrialReward": "0.0",
"nextTrialAvailableTimestamp": null
}
Field descriptions
All rate and volume fields (
userCross, userAdd, exchange, cross, add, userCrossRate, userAddRate, and the tier / discount values) are returned as decimal strings. Do not parse them as floats. Rates are expressed as fractions of notional - "0.00045" = 4.5 bps.array<object>
object
Exchange-wide fee schedule - the base rates and the tier tables that discounts are applied against.
Show properties
Show properties
string
Base taker (cross) fee rate for perps.
string
Base maker (add) fee rate for perps.
string
Base taker fee rate for spot.
string
Base maker fee rate for spot.
string
Base referral discount, as a fraction of fees.
object
Volume- and maker-based tier tables.
Show properties
Show properties
array<object>
VIP tiers keyed by notional-volume cutoff. Each entry:
ntlCutoff (volume threshold) plus the cross, add, spotCross, and spotAdd rates at that tier.array<object>
Market-maker tiers. Each entry:
makerFractionCutoff (share-of-maker-volume threshold) and the reduced add (maker) rate at that tier.array<object>
Staking-based discount tiers. Each entry:
bpsOfMaxSupply (staked HYPE as basis points of max supply) and the discount (fraction of fees) at that tier.string
Effective taker (cross) rate this user pays, after all applicable discounts.
string
Effective maker (add) rate this user pays, after all applicable discounts.
string
Referral discount currently applied to the user, as a fraction of fees.
object | null
Active fee-trial details, or
null when the user has no active trial.string
Reward accrued from the user’s fee trial.
int | null
Millisecond timestamp when the next fee trial becomes available, or
null when not applicable.Related endpoints
userAbstraction
fetch a user’s account-abstraction mode.
userRateLimit
fetch a user’s API rate-limit usage and cap.
userRole
fetch a user’s account role.
userToMultiSigSigners
fetch the authorized signers for a multi-sig user.
extraAgents
list a user’s approved API-agent wallets.
subAccounts
fetch a master wallet’s sub-accounts along with their full perp and spot state in a single call.