Social momentum

GET /social-momentum
GetSocialMomentum

Posts, unique posters, and sentiment inside each author cluster, side by side, for an asset, a subject, or a whole market: which groups are driving the conversation and how their tone differs. Clusters overlap, so do not add them together. Send clusters to return only the ones you name.

Parameter rules:

  • asset_id must be sent with asset_class.
  • subject_id cannot be combined with asset_id or asset_class.
  • Without asset_id, asset_class must be equity or crypto; commodity and index need an asset_id.

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

Parameters

asset_id string QUERY

Asset ID from /assets or /search, such as NVDA, GLD, SPX, or bitcoin. Send it with the asset_class returned alongside it.

Example:NVDA

asset_class string QUERY

With asset_id, the asset's class. Without it, the market to aggregate: equity (stocks, commodities, and indices; the default) or crypto.

Allowed values
equitycommodityindexcrypto

Example:equity

subject_id string QUERY

Canonical non-asset identifier returned by /subjects or /search, such as text:jensen huang or handle:elonmusk. Accepted in any case. It cannot be combined with asset_id or asset_class.

Example:text:jensen huang

hours integer QUERY

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

Default:168

granularity string QUERY

Requested time-series bucket size. When omitted, the service chooses a bucket size appropriate for the lookback window.

Allowed values
1h2h4h12h1d

Example:1h

clusters array<string> QUERY

Only these clusters, each as its own series; omit for all. Uses the ids from the clusters parameter of /sentiment, except posting communities.

Example:smart_money

cURL Example

curl --request GET \
  --url 'https://nebula-api.hiddensystems.ai/api/v1/public/social-momentum' \
  --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
object required

Social-momentum series keyed by canonical author-cluster identifier.

clusters.{key}[].average_sentiment_score
number (double) required

Arithmetic mean of the posts' sentiment scores, on the −100 (very bearish) to +100 (very bullish) scale.

clusters.{key}[].bearish_posts
integer (int64) required

Posts classified as bearish.

clusters.{key}[].bullish_posts
integer (int64) required

Posts classified as bullish.

clusters.{key}[].neutral_posts
integer (int64) required

Posts classified as neutral.

clusters.{key}[].timestamp
string (date-time) required

UTC RFC 3339 timestamp for the observation or bucket start.

clusters.{key}[].total_posts
integer (int64) required

Post count over the metric's active lookback window.

clusters.{key}[].unique_posters
integer (int64) required

Distinct posting accounts in the bucket; at coarser-than-hourly granularity this is an upper bound summed from hourly counts.

{
  "clusters": {
    "smart_money": [
      {
        "average_sentiment_score": 38.5,
        "bearish_posts": 41,
        "bullish_posts": 112,
        "neutral_posts": 31,
        "timestamp": "2026-08-07T15:00:00Z",
        "total_posts": 184,
        "unique_posters": 73
      }
    ]
  }
}