Author clusters

GET /clusters
ListClusters

Every author cluster's activity and sentiment in a market: posts, unique authors, change against the previous window, and net sentiment (bullish minus bearish posts) with an hourly series. asset_class is equity (the default) or crypto.

Wallet payment available at https://nebula-api.hiddensystems.ai/api/v1/x402/clusters. No Nebula account or API key required; check the payment offer before signing. x402 payment guide.

Parameters

asset_class string QUERY

Market to aggregate: equity (traditional markets, covering stocks, commodities, and indices together) or crypto.

Allowed values
equitycrypto

Default:equity

hours integer QUERY

Lookback window in hours. Free plans reach back 90 days; further returns 403.

Default:24

cURL Example

curl --request GET \
  --url 'https://nebula-api.hiddensystems.ai/api/v1/public/clusters' \
  --header 'X-API-Key: YOUR_API_KEY'

Responses

200 OK
400 Bad Request
401 Unauthorized
402 Credits used up; response includes renewal timing and purchased credit balance
403 Forbidden
404 Not Found
405 Method not allowed; the Allow header lists the supported method
429 Too Many Requests
500 Internal Server Error
503 Service Unavailable

Media type application/json

clusters
array<object> required

Author-cluster summaries for the selected asset class.

clusters[].activity_change_pct
number (double) optional

Percent change in posts against the previous window of equal length (76 posts after 84 is -9.52); absent when no comparison is possible.

clusters[].bearish_posts
number (double) required

Posts classified as bearish.

clusters[].bullish_posts
number (double) required

Posts classified as bullish.

clusters[].cluster_id
string required

Canonical author-cluster identifier.

clusters[].neutral_posts
number (double) required

Posts classified as neutral.

clusters[].previous_total_posts
number (double) required

Post count in the immediately preceding window of equal length.

clusters[].recent_sentiment_signal
number (double) required

The latest value of the hourly sentiment series: the most recent hour with posts.

clusters[].series
array<object> required

Chronologically ordered observations.

clusters[].series[].bearish_posts
number (double) required

Posts classified as bearish.

clusters[].series[].bullish_posts
number (double) required

Posts classified as bullish.

clusters[].series[].sentiment_signal
number (double) required

Decay-weighted net bullish posts: bullish minus bearish. Positive is bullish, negative is bearish, and magnitude grows with activity.

clusters[].series[].timestamp
string (date-time) required

UTC RFC 3339 timestamp for the observation or bucket start.

clusters[].series[].total_posts
number (double) required

Post count over the metric's active lookback window.

clusters[].total_posts
number (double) required

Post count over the metric's active lookback window.

clusters[].window_sentiment_signal
number (double) required

Net bullish sentiment signal over the complete requested window.

hours
integer required

Lookback window represented by the response, in hours.

{
  "clusters": [
    {
      "activity_change_pct": 18.4,
      "bearish_posts": 438,
      "bullish_posts": 1120,
      "cluster_id": "smart_money",
      "neutral_posts": 284,
      "previous_total_posts": 1556,
      "recent_sentiment_signal": 84.2,
      "series": [
        {
          "bearish_posts": 438,
          "bullish_posts": 1120,
          "sentiment_signal": 128.6,
          "timestamp": "2026-08-07T15:00:00Z",
          "total_posts": 1842
        }
      ],
      "total_posts": 1842,
      "window_sentiment_signal": 63.7
    }
  ],
  "hours": 168
}