Delegator history
curl --request POST \
--url 'https://api.hypedexer.com/info#delegatorHistory' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "delegatorHistory",
"user": "0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c"
}
'import requests
url = "https://api.hypedexer.com/info#delegatorHistory"
payload = {
"type": "delegatorHistory",
"user": "0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c"
}
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: 'delegatorHistory', user: '0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c'})
};
fetch('https://api.hypedexer.com/info#delegatorHistory', 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/info#delegatorHistory",
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' => 'delegatorHistory',
'user' => '0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c'
]),
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://api.hypedexer.com/info#delegatorHistory"
payload := strings.NewReader("{\n \"type\": \"delegatorHistory\",\n \"user\": \"0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c\"\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://api.hypedexer.com/info#delegatorHistory")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"delegatorHistory\",\n \"user\": \"0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hypedexer.com/info#delegatorHistory")
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\": \"delegatorHistory\",\n \"user\": \"0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c\"\n}"
response = http.request(request)
puts response.read_body[
{
"time": 1793998203944,
"hash": "0x9f3e2d1c0b8a79685746352413021f0e9d8c7b6a5948372615049382716051a4",
"delta": {
"delegate": {
"validator": "0x5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d",
"amount": "2.579484",
"isUndelegate": false
}
}
},
{
"time": 1793998203944,
"hash": "0x9f3e2d1c0b8a79685746352413021f0e9d8c7b6a5948372615049382716051a4",
"delta": {
"cDeposit": {
"amount": "2.579484"
}
}
},
{
"time": 1793391190042,
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"delta": {
"withdrawal": {
"amount": "10.16184979",
"phase": "finalized"
}
}
}
]{
"error": "Invalid API key"
}Staking
Delegator history
Every staking action of an address, newest first, in Hyperliquid’s exact delegatorHistory format: delegate (validator, amount, isUndelegate), cDeposit (transfer from spot to the staking balance) and withdrawal (amount, phase: initiated, then finalized once the unstaking queue clears; the finalization carries the zero hash).
Coverage: full history since staking launched (December 2024), updated within seconds from our own nodes. Unlike Hyperliquid’s API, which returns at most the 2,000 most recent entries, the history is not truncated.
POST
/
info#delegatorHistory
Delegator history
curl --request POST \
--url 'https://api.hypedexer.com/info#delegatorHistory' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "delegatorHistory",
"user": "0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c"
}
'import requests
url = "https://api.hypedexer.com/info#delegatorHistory"
payload = {
"type": "delegatorHistory",
"user": "0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c"
}
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: 'delegatorHistory', user: '0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c'})
};
fetch('https://api.hypedexer.com/info#delegatorHistory', 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/info#delegatorHistory",
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' => 'delegatorHistory',
'user' => '0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c'
]),
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://api.hypedexer.com/info#delegatorHistory"
payload := strings.NewReader("{\n \"type\": \"delegatorHistory\",\n \"user\": \"0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c\"\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://api.hypedexer.com/info#delegatorHistory")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"delegatorHistory\",\n \"user\": \"0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hypedexer.com/info#delegatorHistory")
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\": \"delegatorHistory\",\n \"user\": \"0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c\"\n}"
response = http.request(request)
puts response.read_body[
{
"time": 1793998203944,
"hash": "0x9f3e2d1c0b8a79685746352413021f0e9d8c7b6a5948372615049382716051a4",
"delta": {
"delegate": {
"validator": "0x5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d",
"amount": "2.579484",
"isUndelegate": false
}
}
},
{
"time": 1793998203944,
"hash": "0x9f3e2d1c0b8a79685746352413021f0e9d8c7b6a5948372615049382716051a4",
"delta": {
"cDeposit": {
"amount": "2.579484"
}
}
},
{
"time": 1793391190042,
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"delta": {
"withdrawal": {
"amount": "10.16184979",
"phase": "finalized"
}
}
}
]{
"error": "Invalid API key"
}Authorizations
Your Hypedexer API key, sent as Authorization: Bearer <key>. The X-API-Key: <key> header and the api_key query parameter are accepted as well.
Body
application/json