Sentiment by timeframe

GET /sentiment/timeframes
GetSentimentTimeframes

Returns short-, medium-, and long-horizon sentiment series and current readings for exactly one resolved asset or non-asset subject. Asset selectors support equities, commodities, indices, and crypto assets returned by GET /assets; commodity and index IDs use asset_class=equity. Parameter rules: One of asset_id or subject_id is required. asset_id requires asset_class. subject_id and asset_class cannot be combined. subject_id and asset_id cannot be combined.

Parameters

asset_id string QUERY

Canonical identifier returned by /assets. Stock, commodity, and index IDs are normally ticker or market symbols and use asset_class=equity; crypto IDs are canonical crypto slugs. asset_class is mandatory whenever asset_id is present.

Example:NVDA

asset_class string QUERY

Namespace of asset_id, or the market class for endpoints with a class-scoped global view. Stocks, commodities, and indices use equity. Equity is the documented default only where the endpoint description states a default.

Allowed values
equitycrypto

Example:equity

subject_id string QUERY

Canonical non-asset identifier returned by /subjects. It cannot be combined with asset_id or asset_class.

Example:person:donald_trump

hours integer QUERY

Lookback window in hours.

Default:720

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

cURL Example

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

Responses

200 OK
400 Bad Request
401 Unauthorized
402 Credit balance exhausted
403 Forbidden
404 Not Found
429 Too Many Requests
500 Internal Server Error
503 Service Unavailable

Media type application/json

current
object required

Latest sentiment reading for each available timeframe horizon.

Allowed keys
short_termmedium_termlong_term
metadata
object optional

Methodology and request-window metadata needed to interpret the response.

metadata.as_of
string (date-time) optional

UTC time at which the metric was calculated.

metadata.calculation
string optional

Short name for the calculation method.

metadata.formula
string optional

Human-readable formula for the calculation.

metadata.half_life_hours
number (double) optional

Exponential-decay half-life used by the calculation, in hours.

metadata.lookback_days
integer optional

Historical lookback used by the calculation, in days.

metadata.scale
string optional

Published scale or interpretation of the metric.

series
object required

Sentiment series keyed by short_term, medium_term, and long_term horizon.

Allowed keys
short_termmedium_termlong_term
series.{key}[].interval_posts
number (double) optional

Posts in this emitted time bucket, before lookback accumulation.

series.{key}[].sentiment_signal
number (double) required

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

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

UTC RFC 3339 timestamp for the observation or bucket start.

series.{key}[].total_posts
number (double) optional

Post count over the metric's active lookback window.

{
  "current": {
    "long_term": 52.1,
    "medium_term": 57.8,
    "short_term": 64.2
  },
  "series": {
    "short_term": [
      {
        "sentiment_signal": 64.2,
        "timestamp": "2026-08-07T15:00:00Z",
        "total_posts": 318
      }
    ]
  }
}