> ## 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.

# spotClearinghouseState | Hyperliquid Info API

> Hyperliquid spotClearinghouseState: fetch a single user's spot account balances by wallet address.

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

The Hyperliquid info endpoint with `type: "spotClearinghouseState"` is used to fetch a single user's spot account balances by wallet address.

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

<Info>
  * Wire-equal to `POST api.hyperliquid.xyz/info` with `{"type": "spotClearinghouseState", "user": "..."}`.
  * USDC balance is returned as `token: 0`.
  * For real-time push of spot transfers, subscribe to <a href="https://goldrush.dev/docs/api-reference/streaming-api/subscriptions/wallet-activity-stream" target="_blank" rel="noopener noreferrer">`walletTxs`</a> and read `LedgerSpotTransfer` events.
</Info>

Returns a single user’s spot account state - token-by-token balances and the total USD value.

User-keyed. Cached and kept fresh by a per-user WebSocket subscription, so updates are sub-second after any user event.

## Endpoint

```
POST https://hypercore.goldrushdata.com/info
Authorization: Bearer <GOLDRUSH_API_KEY>
Content-Type: application/json
```

## Request

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

<ParamField body="user" type="string" required>
  The wallet address (lowercase 0x-prefixed hex).
</ParamField>

<ParamField body="dex" type="string">
  Reserved for future HIP-3 spot DEX support. Pass empty string.
</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": "spotClearinghouseState",
      "user": "0xecb63caa47c7c4e77f60f1ce858cf28dc2b82b00",
      "dex": ""
    }'
  ```

  ```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: "spotClearinghouseState",
      user: "0xecb63caa47c7c4e77f60f1ce858cf28dc2b82b00",
      dex: "",
    }),
  });

  const state = 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": "spotClearinghouseState",
          "user": "0xecb63caa47c7c4e77f60f1ce858cf28dc2b82b00",
          "dex": "",
      },
  )

  state = response.json()
  ```
</CodeGroup>

## Response

```json theme={null}
{
  "balances": [
    {
      "coin": "USDC",
      "token": 0,
      "hold": "0.0",
      "total": "5000.00",
      "entryNtl": "5000.00"
    },
    {
      "coin": "HYPE",
      "token": 150,
      "hold": "0.0",
      "total": "320.45",
      "entryNtl": "1530.00"
    },
    {
      "coin": "PURR",
      "token": 1,
      "hold": "0.0",
      "total": "12500.0",
      "entryNtl": "375.00"
    }
  ],
  "tokenToAvailableAfterMaintenance": [[0, "5000.00"]]
}
```

### Field descriptions

<Note>
  All numeric balance fields (`total`, `hold`, `entryNtl`) are returned as **decimal strings**, preserving upstream precision. Do not parse them as floats - keep them as strings or use a fixed-precision decimal type.
</Note>

<ResponseField name="balances" type="array<object>">
  One entry per token the wallet has interacted with on Hyperliquid spot. May be empty (`[]`) for wallets with no spot history.

  <Expandable title="properties">
    <ResponseField name="coin" type="string">Token ticker symbol (e.g. `"USDC"`, `"PURR"`, `"HYPE"`).</ResponseField>
    <ResponseField name="token" type="int">Numeric token index assigned by Hyperliquid. The pair `(coin, token)` together identifies the asset.</ResponseField>
    <ResponseField name="hold" type="string">Portion of `total` currently locked in open spot orders. Withdrawable balance is `total - hold`.</ResponseField>
    <ResponseField name="total" type="string">Total balance (held + free).</ResponseField>
    <ResponseField name="entryNtl" type="string">Entry notional value at acquisition, in USD.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="tokenToAvailableAfterMaintenance" type="array<[int, string]>">
  **Optional.** Present only when at least one token has a non-zero margin-deduction-aware balance. Each tuple is `[tokenId, availableAmountString]` where `tokenId` references `balances[].token`. Wallets without this field can ignore it; absence is normal for empty or inactive wallets.
</ResponseField>

## Related endpoints

<CardGroup cols={2}>
  <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="batchClearinghouseState" href="/api-reference/hyperliquid-info/batch-clearinghouse-state">fetch perpetuals account state for up to 50 wallets in a single request.</Card>
  <Card title="clearinghouseState" href="/api-reference/hyperliquid-info/clearinghouse-state">fetch a single user's perpetuals account state by wallet address.</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>
</CardGroup>

*Last reviewed: 2026-06-13*
