Skip to main content
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.
The 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 dedicated webData3 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

The info 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
type
enum<string>
default:webData3
required

Request type

Available options:
webData3
user
string
default:0x31ca8395cf837de08b24da3f660e77761dfb974b
required

Onchain address in 42-character hexadecimal format

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