# Social vs trading volume

- Method: `GET`
- Path: `/social-volume-index`
- Credits: 2
- HTML docs: https://docs.hiddensystems.ai/nebula/reference/get-social-volume-index/
- Interactive docs: https://docs.hiddensystems.ai/nebula/api/#endpoint=get-social-volume-index

## Description

Whether an asset's trading activity is running ahead of, or behind, the conversation about it, on a 0–100 scale.

For each complete UTC day, `social_relative` is the asset's posts over the trailing 7 days as a multiple of its median 7-day post count over the previous 90 days, and `trading_relative` is its dollar trading volume over the same 7 days as a multiple of its own 90-day median. `volume_index` is 100 × trading_relative ÷ (social_relative + trading_relative): 50 means attention and trading are each at the same multiple of their normal, above 50 means trading is running ahead of the conversation, and below 50 that the conversation is running ahead of trading. The scale is symmetric: trading at twice attention's multiple reads 67, at half of it 33. `posts` and `volume_usd` are the day's own raw counts, so the two sides can be drawn on their own scales. Bots are left out. The series covers at most the last 90 days (`hours` up to 2160). A day without enough history for both baselines is omitted, and a move can reflect changing coverage of an asset as well as real interest, so read it beside price and volume.

## cURL Example

```bash
curl --get \
  --url 'https://nebula-api.hiddensystems.ai/api/v1/public/social-volume-index' \
  --data-urlencode 'asset_id=NVDA' \
  --data-urlencode 'asset_class=equity' \
  --header 'X-API-Key: YOUR_API_KEY'
```

## Path Parameters

No path parameters for this endpoint.

## Query Parameters

- `asset_id` (string, required): Asset identifier returned by /assets or /search: a ticker or market symbol for stocks, commodities, and indices (NVDA, GLD, SPX), or for crypto the CoinGecko slug (bitcoin), or a numeric id for the few coins without one. Always send it with the asset_class returned alongside it.
- `asset_class` (string, required, allowed: equity, commodity, index, crypto): Class of the asset named by asset_id: equity (stocks and ETFs), commodity, index, or crypto. Send the asset_class that /assets or /search returned alongside the asset_id.
- `hours` (integer, optional, default: 2160, range: 1–2160): Lookback window in hours. Free plans read up to 90 days back; Pro plans up to this parameter's maximum. A value reaching past your plan's window returns 403 and is not charged.

## Response

OK

- `series` (array<object>, required): Chronologically ordered observations.
- `series[].posts` (number (double), required): The asset's posts on the day itself, bots left out.
- `series[].social_relative` (number (double), required): The asset's posts over the trailing 7 days as a multiple of its median 7-day post count over the previous 90 days; 1 is usual.
- `series[].timestamp` (string (date-time), required): UTC RFC 3339 timestamp for the observation or bucket start.
- `series[].trading_relative` (number (double), required): The asset's dollar trading volume over the trailing 7 days as a multiple of its median 7-day volume over the previous 90 days; 1 is usual.
- `series[].volume_index` (number (double), required): 100 × trading_relative ÷ (social_relative + trading_relative), from 0 to 100: 50 means trading volume and posts are in their usual proportion, above 50 means trading is running ahead of the conversation, below 50 that the conversation is running ahead of trading.
- `series[].volume_usd` (number (double), required): The asset's dollar trading volume on the day itself; 0 on a day without trading, such as a weekend for a stock.

Media type: `application/json`

## JSON Response

```json
{
  "series": [
    {
      "posts": 684,
      "social_relative": 1.84,
      "timestamp": "2026-08-07T15:00:00Z",
      "trading_relative": 1.29,
      "volume_index": 41.2,
      "volume_usd": 41250000000
    }
  ]
}
```
