spotMetaAndAssetCtxs | Hyperliquid Info API
curl --request POST \
--url https://hypercore.goldrushdata.com/info \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>"
}
'import requests
url = "https://hypercore.goldrushdata.com/info"
payload = { "type": "<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>'})
};
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>'
]),
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}")
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}")
.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}"
response = http.request(request)
puts response.read_body{
"universe": [
{
"name": "<string>",
"tokens": [
123
],
"index": 123,
"isCanonical": true
}
],
"tokens": [
{
"name": "<string>",
"szDecimals": 123,
"weiDecimals": 123,
"index": 123,
"tokenId": "<string>",
"isCanonical": true,
"evmContract": {},
"fullName": {}
}
],
"coin": "<string>",
"markPx": "<string>",
"midPx": "<string>",
"prevDayPx": "<string>",
"dayNtlVlm": "<string>",
"dayBaseVlm": "<string>",
"circulatingSupply": "<string>"
}Info API
spotMetaAndAssetCtxs | Hyperliquid Info API
Hyperliquid spotMetaAndAssetCtxs: fetch the spot universe metadata, token configuration, and live market data in a single call.
POST
/
info
spotMetaAndAssetCtxs | Hyperliquid Info API
curl --request POST \
--url https://hypercore.goldrushdata.com/info \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>"
}
'import requests
url = "https://hypercore.goldrushdata.com/info"
payload = { "type": "<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>'})
};
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>'
]),
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}")
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}")
.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}"
response = http.request(request)
puts response.read_body{
"universe": [
{
"name": "<string>",
"tokens": [
123
],
"index": 123,
"isCanonical": true
}
],
"tokens": [
{
"name": "<string>",
"szDecimals": 123,
"weiDecimals": 123,
"index": 123,
"tokenId": "<string>",
"isCanonical": true,
"evmContract": {},
"fullName": {}
}
],
"coin": "<string>",
"markPx": "<string>",
"midPx": "<string>",
"prevDayPx": "<string>",
"dayNtlVlm": "<string>",
"dayBaseVlm": "<string>",
"circulatingSupply": "<string>"
}Credit Cost
1 per call
Processing
Realtime
type: "spotMetaAndAssetCtxs" is used to fetch the spot universe metadata, token configuration, and live market data in a single call.
Estimate your monthly cost for this API using the Pricing Calculator.
- Wire-equal to
POST api.hyperliquid.xyz/infowith{"type": "spotMetaAndAssetCtxs"}. - For perp universe + live contexts, use
metaAndAssetCtxsinstead.
[spotMeta, assetCtxs[]] covering the entire Hyperliquid spot universe - every pair’s universe entry, every token’s metadata, and a live snapshot of mark price, mid price, prior-day price, and 24-hour notional volume per pair.
This is the spot counterpart of metaAndAssetCtxs. Global, non-user-keyed; a single cache entry is shared across all callers and refreshed continuously from upstream Hyperliquid.
Endpoint
POST https://hypercore.goldrushdata.com/info
Authorization: Bearer <GOLDRUSH_API_KEY>
Content-Type: application/json
Request
string
required
Always
"spotMetaAndAssetCtxs".Example
curl -X POST https://hypercore.goldrushdata.com/info \
-H "Authorization: Bearer $GOLDRUSH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "spotMetaAndAssetCtxs"
}'
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: "spotMetaAndAssetCtxs",
}),
});
const [spotMeta, assetCtxs] = 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": "spotMetaAndAssetCtxs"},
)
spot_meta, asset_ctxs = response.json()
Response
A two-element JSON array. Element 0 is the spot universe and token metadata; element 1 is an array of per-pair live contexts indexed identically to element 0’suniverse.
[
{
"universe": [
{
"name": "PURR/USDC",
"tokens": [1, 0],
"index": 0,
"isCanonical": true
}
],
"tokens": [
{
"name": "USDC",
"szDecimals": 8,
"weiDecimals": 8,
"index": 0,
"tokenId": "0x6d1e7cde53ba9467b783cb7c530ce054",
"isCanonical": true,
"evmContract": null,
"fullName": null
},
{
"name": "PURR",
"szDecimals": 0,
"weiDecimals": 5,
"index": 1,
"tokenId": "0xc1fb593aeffbeb02f85e0308e9956a90",
"isCanonical": true,
"evmContract": null,
"fullName": null
}
]
},
[
{
"coin": "PURR/USDC",
"markPx": "0.5250",
"midPx": "0.5245",
"prevDayPx": "0.4800",
"dayNtlVlm": "1250000.0",
"dayBaseVlm": "2380952.38",
"circulatingSupply": "1000000000.0"
}
]
]
Element 0: spotMeta
array<object>
Array of spot pairs, indexed identically to element 1’s
assetCtxs.Show properties
Show properties
array<object>
Token configuration referenced by
universe[].tokens.Show properties
Show properties
string
Token symbol - e.g.
"USDC", "PURR".int
Number of decimals used for size precision.
int
Number of decimals used for the on-chain wei representation.
int
Token index.
(coin, index) together identifies the asset.string
Hyperliquid token identifier (hex).
boolean
true for tokens deployed in the canonical Hyperliquid spot universe.object | null
EVM contract address if the token has an HyperEVM mapping;
null otherwise.string | null
Optional full token name.
Element 1: assetCtxs[]
Array of per-pair live context, indexed identically to universe.
All numeric fields below are returned as decimal strings. Do not parse them as floats.
string
Pair symbol - matches
universe[].name.string
Current mark price.
string
Current orderbook mid price.
string
Mark price 24 hours ago.
string
24-hour notional volume in USDC.
string
24-hour volume in base units.
string
Circulating supply of the base token.
Related endpoints
spotMeta
fetch the spot universe metadata and full token configuration without live market context.
metaAndAssetCtxs
fetch the full Hyperliquid perpetuals market universe with live per-asset trading context.
outcomeMeta
enumerate all active HIP-4 binary outcome markets on HyperCore.
spotClearinghouseState
fetch a single user’s spot account balances by wallet address.
spotDeployState
fetch the spot-token deployment state and gas auction for a deployer.
batchSpotClearinghouseState
fetch spot account balances for up to 50 wallets in a single request.