info (webData3)
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "webData3",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload = {
"type": "webData3",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({type: 'webData3', user: '0x31ca8395cf837de08b24da3f660e77761dfb974b'})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/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' => 'webData3',
'user' => '0x31ca8395cf837de08b24da3f660e77761dfb974b'
]),
CURLOPT_HTTPHEADER => [
"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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload := strings.NewReader("{\n \"type\": \"webData3\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"webData3\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"webData3\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\n}"
response = http.request(request)
puts response.read_body{}Hyperliquid node API
webData3 | Hyperliquid info
The info endpoint with type: “webData3” retrieves a comprehensive user state summary including account state, perp dex states, and metadata.
POST
/
4f8d8f4040bdacd1577bff8058438274
/
info
info (webData3)
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "webData3",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload = {
"type": "webData3",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({type: 'webData3', user: '0x31ca8395cf837de08b24da3f660e77761dfb974b'})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/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' => 'webData3',
'user' => '0x31ca8395cf837de08b24da3f660e77761dfb974b'
]),
CURLOPT_HTTPHEADER => [
"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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload := strings.NewReader("{\n \"type\": \"webData3\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"webData3\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"webData3\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\n}"
response = http.request(request)
puts response.read_body{}This method is available on Chainstack. Not all Hyperliquid methods are available on Chainstack, as the open-source node implementation does not support them yet — see Hyperliquid methods for the full availability breakdown.
info endpoint with type: "webData3" retrieves a comprehensive user state summary including account state, perp dex states, and metadata. This is a combined endpoint that returns data useful for rendering trading interfaces.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
Request body
type(string, required) — The request type. Must be"webData3".user(string, required) — Onchain address in 42-character hexadecimal format.
Response
The response is an object containing:userState(object) — User account state including agent address, cumulative ledger, server time, and vault status.perpDexStates(array) — Array of perp dex state objects with total vault equity and perps at open interest cap.
Example request
The Hyperliquid SDKs do not expose a dedicatedwebData3 info method, so the examples below post the request through each SDK’s generic info request path.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"type": "webData3", "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"}' \
https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info
from hyperliquid.info import Info
# Skip the WebSocket connection for a one-off request.
info = Info("YOUR_CHAINSTACK_ENDPOINT", skip_ws=True)
# No typed webData3 method exists, so post the raw request to /info.
response = info.post(
"/info",
{
"type": "webData3",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
},
)
print(response)
import { HttpTransport } from "@nktkas/hyperliquid";
const transport = new HttpTransport({ apiUrl: "YOUR_CHAINSTACK_ENDPOINT" });
// No typed webData3 method exists, so send the raw request to the info endpoint.
const response = await transport.request("info", {
type: "webData3",
user: "0x31ca8395cf837de08b24da3f660e77761dfb974b",
});
console.log(response);
Use your own endpoint in your code. The code examples use a placeholder Chainstack endpoint (YOUR_CHAINSTACK_ENDPOINT) — replace it with your own Hyperliquid node endpoint from the Chainstack console. The curl above uses a shared public endpoint for quick checks only; do not use it in production.
Example response
{
"userState": {
"agentAddress": null,
"agentValidUntil": null,
"cumLedger": "111469349.66",
"serverTime": 1771204901501,
"isVault": true,
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
},
"perpDexStates": [
{
"totalVaultEquity": "0.0",
"perpsAtOpenInterestCap": [
"CANTO",
"FTM"
]
}
]
}
Use case
Theinfo endpoint with type: "webData3" is useful for trading applications that need to:
- Render comprehensive trading dashboards with a single API call
- Display user account state alongside perp dex information
- Check which perpetuals are at open interest capacity
- Retrieve server time for clock synchronization
Body
application/json
Response
200 - application/json
Comprehensive user state including account data and perp dex states
The response is of type object.
Last modified on June 24, 2026
Was this page helpful?