> ## Documentation Index
> Fetch the complete documentation index at: https://goldrush.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# spotMetaAndAssetCtxs | Hyperliquid Info API

> Hyperliquid spotMetaAndAssetCtxs: fetch the spot universe metadata, token configuration, and live market data in a single call.

<CardGroup cols={2}>
  <Card title="Credit Cost"> 1 per call</Card>
  <Card title="Processing"> Realtime</Card>
</CardGroup>

The Hyperliquid info endpoint with `type: "spotMetaAndAssetCtxs"` is used to fetch the spot universe metadata, token configuration, and live market data in a single call.

<Tip>
  Estimate your monthly cost for this API using the [Pricing Calculator](/pricing-calculator?endpoint=%2Fapi-reference%2Fhyperliquid-info%2Fspot-meta-and-asset-ctxs).
</Tip>

<Info>
  * Wire-equal to `POST api.hyperliquid.xyz/info` with `{"type": "spotMetaAndAssetCtxs"}`.
  * For perp universe + live contexts, use <a href="https://goldrush.dev/docs/api-reference/hyperliquid/meta-and-asset-ctxs" target="_blank" rel="noopener noreferrer">`metaAndAssetCtxs`</a> instead.
  * For real-time mark-price updates on a discovered spot pair, use the <a href="https://goldrush.dev/docs/api-reference/streaming-api/subscriptions/ohlcv-pairs-stream" target="_blank" rel="noopener noreferrer">Streaming API OHLCV pair stream</a>.
</Info>

Returns a tuple `[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

<ParamField body="type" type="string" required>
  Always `"spotMetaAndAssetCtxs"`.
</ParamField>

### Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://hypercore.goldrushdata.com/info \
    -H "Authorization: Bearer $GOLDRUSH_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "spotMetaAndAssetCtxs"
    }'
  ```

  ```typescript TypeScript theme={null}
  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();
  ```

  ```python Python theme={null}
  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()
  ```
</CodeGroup>

## 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's `universe`.

```json theme={null}
[
  {
    "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`

<ResponseField name="universe" type="array<object>">
  Array of spot pairs, indexed identically to element 1's `assetCtxs`.

  <Expandable title="properties">
    <ResponseField name="name" type="string">Pair label - e.g. `"PURR/USDC"`.</ResponseField>
    <ResponseField name="tokens" type="array<int>">Two-element array of token indices `[base, quote]` referencing entries in `tokens[].index`.</ResponseField>
    <ResponseField name="index" type="int">Numeric pair index. The spot encoding for trading subscriptions is `10000 + index`.</ResponseField>
    <ResponseField name="isCanonical" type="boolean">`true` for pairs in the canonical Hyperliquid spot universe.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="tokens" type="array<object>">
  Token configuration referenced by `universe[].tokens`.

  <Expandable title="properties">
    <ResponseField name="name" type="string">Token symbol - e.g. `"USDC"`, `"PURR"`.</ResponseField>
    <ResponseField name="szDecimals" type="int">Number of decimals used for size precision.</ResponseField>
    <ResponseField name="weiDecimals" type="int">Number of decimals used for the on-chain wei representation.</ResponseField>
    <ResponseField name="index" type="int">Token index. `(coin, index)` together identifies the asset.</ResponseField>
    <ResponseField name="tokenId" type="string">Hyperliquid token identifier (hex).</ResponseField>
    <ResponseField name="isCanonical" type="boolean">`true` for tokens deployed in the canonical Hyperliquid spot universe.</ResponseField>
    <ResponseField name="evmContract" type="object | null">EVM contract address if the token has an HyperEVM mapping; `null` otherwise.</ResponseField>
    <ResponseField name="fullName" type="string | null">Optional full token name.</ResponseField>
  </Expandable>
</ResponseField>

### Element 1: `assetCtxs[]`

Array of per-pair live context, indexed identically to `universe`.

<Note>
  All numeric fields below are returned as **decimal strings**. Do not parse them as floats.
</Note>

<ResponseField name="coin" type="string">Pair symbol - matches `universe[].name`.</ResponseField>
<ResponseField name="markPx" type="string">Current mark price.</ResponseField>
<ResponseField name="midPx" type="string">Current orderbook mid price.</ResponseField>
<ResponseField name="prevDayPx" type="string">Mark price 24 hours ago.</ResponseField>
<ResponseField name="dayNtlVlm" type="string">24-hour notional volume in USDC.</ResponseField>
<ResponseField name="dayBaseVlm" type="string">24-hour volume in base units.</ResponseField>
<ResponseField name="circulatingSupply" type="string">Circulating supply of the base token.</ResponseField>

## Related endpoints

<CardGroup cols={2}>
  <Card title="metaAndAssetCtxs" href="/api-reference/hyperliquid-info/meta-and-asset-ctxs">fetch the full Hyperliquid perpetuals market universe with live per-asset trading context.</Card>
  <Card title="spotMeta" href="/api-reference/hyperliquid-info/spot-meta">fetch the spot universe metadata and full token configuration without live market context.</Card>
  <Card title="batchSpotClearinghouseState" href="/api-reference/hyperliquid-info/batch-spot-clearinghouse-state">fetch spot account balances for up to 50 wallets in a single request.</Card>
  <Card title="meta" href="/api-reference/hyperliquid-info/meta">fetch the perpetuals universe metadata without live market context.</Card>
</CardGroup>

*Last reviewed: 2026-06-13*
