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

# userPnlSummary | Hyperliquid Info API

> Hyperliquid userPnlSummary: fetch one aggregate PnL summary for a wallet - realized PnL, win/loss rate, volume, fees, funding, active days, and traded pairs.

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

The Hyperliquid info endpoint with `type: "userPnlSummary"` is used to fetch one aggregate PnL summary for a wallet - realized PnL, win/loss rate, volume, fees, funding, active days, and traded pairs.

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

<Info>
  * GoldRush custom analytics product. **Not available on the public Hyperliquid node** - there is no `POST api.hyperliquid.xyz/info` equivalent. Served only from `POST hypercore.goldrushdata.com/info`.
  * Returns a **single aggregate object** for one wallet (not an array), rolled up from the wallet's fully-closed round-trip trades and trading activity.
  * `startTime` / `endTime` are optional. When supplied they window the realized metrics; `accountAgeDays` and `tradedPairs` are always lifetime.
  * `dex` scopes the trade aggregates and `tradedPairs`; `volumeTraded`, `daysActive`, and `accountAgeDays` are computed across all DEXes.
  * For the underlying per-trade rows behind these totals, use <a href="https://goldrush.dev/docs/api-reference/hyperliquid-info/user-completed-trades" target="_blank" rel="noopener noreferrer">`userCompletedTrades`</a> or <a href="https://goldrush.dev/docs/api-reference/hyperliquid-info/user-completed-trades-by-time" target="_blank" rel="noopener noreferrer">`userCompletedTradesByTime`</a>.
</Info>

Returns a single aggregate object summarizing a wallet's realized trading performance - net PnL, win and loss rates, trade count, notional volume, fees, funding, active-day count, account age, and the list of coins it has traded. Use this for leaderboard tiles, wallet profile headers, or a one-call PnL read instead of paging through completed trades.

User-keyed. GoldRush-native, so there is no upstream Hyperliquid `/info` equivalent.

## Endpoint

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

## Request

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

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

<ParamField body="startTime" type="int">
  Optional. Unix timestamp in milliseconds. Inclusive lower bound on `close_time` for the realized metrics. Omit for a lifetime summary.
</ParamField>

<ParamField body="endTime" type="int">
  Optional. Unix timestamp in milliseconds. Inclusive upper bound on `close_time` for the realized metrics. Defaults to current server time when a window is otherwise in play.
</ParamField>

<ParamField body="dex" type="string">
  Optional perp-DEX scope for the trade aggregates and `tradedPairs`. `main_dex` for the canonical Hyperliquid perp DEX, or a HIP-3 DEX identifier. Omit to aggregate across every DEX.
</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": "userPnlSummary",
      "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
    }'
  ```

  ```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: "userPnlSummary",
      user: "0x31ca8395cf837de08b24da3f660e77761dfb974b",
    }),
  });

  const summary = 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": "userPnlSummary",
          "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
      },
  )

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

## Response

A single aggregate object for the wallet.

```json theme={null}
{
  "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
  "totalPnl": "1245.67",
  "winRate": 0.6143,
  "lossRate": 0.3857,
  "totalTrades": 140,
  "volumeTraded": "1095452.80",
  "totalFees": "812.44",
  "totalFunding": "15.09",
  "daysActive": 42,
  "accountAgeDays": 88,
  "tradedPairs": ["BTC", "ETH", "HYPE"]
}
```

### Field descriptions

<Note>
  `totalPnl`, `totalFees`, and `totalFunding` are **decimal strings** (full precision); `volumeTraded` is a **fixed 2-decimal string**. `winRate` and `lossRate` are JSON **floats** (4 decimals). `totalTrades`, `daysActive`, and `accountAgeDays` are JSON numbers. Do not parse the decimal strings as floats - keep them as strings or use a fixed-precision decimal type.
</Note>

<ResponseField name="user" type="string">The wallet address the summary belongs to (lowercase 0x-prefixed hex), echoing the request.</ResponseField>
<ResponseField name="totalPnl" type="string">Net realized PnL in USDC across the completed trades in scope - trading PnL minus fees plus funding (the sum of per-trade `net_pnl`).</ResponseField>
<ResponseField name="winRate" type="number">Fraction of completed trades with positive net PnL (`net_pnl > 0`), rounded to 4 decimals. `0.0` when the wallet has no completed trades.</ResponseField>
<ResponseField name="lossRate" type="number">Fraction of completed trades with non-positive net PnL (`net_pnl <= 0`), rounded to 4 decimals. Equal to `1 - winRate`; break-even trades count as losses.</ResponseField>
<ResponseField name="totalTrades" type="int">Number of fully-closed round-trip trades in scope.</ResponseField>
<ResponseField name="volumeTraded" type="string">Total notional traded in USDC as a fixed 2-decimal string (e.g. `"1095452.80"`). Computed across all DEXes.</ResponseField>
<ResponseField name="totalFees" type="string">Total trading fees paid in USDC across the completed trades in scope.</ResponseField>
<ResponseField name="totalFunding" type="string">Total funding in USDC across the completed trades in scope (negative = net paid, positive = net received).</ResponseField>
<ResponseField name="daysActive" type="int">Number of distinct UTC calendar days on which the wallet traded, within the window. Computed across all DEXes.</ResponseField>
<ResponseField name="accountAgeDays" type="int | null">Whole days since the wallet's first-ever fill, counted inclusively (first day = 1). Lifetime and all-DEX - never windowed. `null` when the wallet has no recorded fills. A wallet whose first fill predates GoldRush's HyperCore coverage reads younger than its true age.</ResponseField>
<ResponseField name="tradedPairs" type="string[]">Coin symbols the wallet has traded, in chronological order of first fill. Scoped to `dex` when supplied, otherwise all DEXes. Lifetime (not windowed).</ResponseField>

## Related endpoints

<CardGroup cols={2}>
  <Card title="userCompletedTrades" href="/docs/api-reference/hyperliquid-info/user-completed-trades">fetch a wallet's most recent fully-closed round-trip trades, newest-first, with realized PnL, funding, and fees.</Card>
  <Card title="userCompletedTradesByTime" href="/docs/api-reference/hyperliquid-info/user-completed-trades-by-time">fetch a wallet's fully-closed round-trip trades within a time window, oldest-first with a keyset cursor for forward paging.</Card>
  <Card title="userFills" href="/docs/api-reference/hyperliquid-info/user-fills">fetch a user's most recent trade fills without specifying a time window.</Card>
  <Card title="userFunding" href="/docs/api-reference/hyperliquid-info/user-funding">fetch a user's per-coin funding payment history within a time window for funding-only P\&L attribution.</Card>
</CardGroup>

See all Hyperliquid endpoints: [Overview hub](/docs/goldrush-hyperliquid/overview) · [Info API reference](/docs/goldrush-hyperliquid/info-api/overview)

*Last reviewed: 2026-08-17*
