Mindshare forecast

GET /forecasts/mindshare
GetMindshareForecast

Where an asset's mindshare is likely to be over the next 72 hours, as a range of outcomes with their chances. series gives the distribution every 4 hours; chance_higher_72h and likely_low_share to likely_high_share summarise where it lands; takeoff_chance_72h is the chance of a sudden surge in attention.

Forecasts update within a minute of new posts about the asset, and at least every 15 minutes. refresh=true recomputes on the latest data in about 5 seconds; if that takes over 20, you get the latest forecast with refreshed: false, charged at 5. Assets without a forecast return status: not_forecastable with a reason; /forecasts/assets lists the assets that have one.

Costs 5 credits, or 10 with refresh=true. not_forecastable answers are free, up to 30 an hour per account; past that this endpoint returns 429 until the hour clears.

Parameters

asset_id string QUERY required

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 required

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.

Allowed values
equitycommodityindexcrypto

Example:equity

refresh boolean QUERY

true recomputes the forecast on the latest data: 10 credits, about 5 seconds. Defaults to false.

Example:false

cURL Example

curl --get \
  --url 'https://nebula-api.hiddensystems.ai/api/v1/public/forecasts/mindshare' \
  --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 Credits used up; upgrade_url links to buying more
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

as_of
string (date-time) required

UTC start of the forecast: the end of the last complete 15 minutes it was computed from. Null when the asset has never been scored.

chance_higher_72h
number (double) required

The chance the share is higher than current_share in 72 hours, from 0 to 1.

current_share
number (double) required

The asset's share at as_of, from 0 to 1: where every path starts, and the value the chances are measured against.

horizon_hours
integer required

How far ahead the forecast runs, in hours: always 72.

likely_high_share
number (double) required

The 90th percentile of the share in 72 hours: a 90% chance of ending below it.

likely_low_share
number (double) required

The 10th percentile of the share in 72 hours: a 90% chance of ending above it.

reason
string required

Why the asset cannot be forecast: too_little_history, stale_data, or missing_price. Null when status is ok.

Allowed values
too_little_historystale_datamissing_pricenull
refreshed
boolean required

True when this request re-ran the forecast (refresh=true and the re-run finished in time); false when it is the latest scheduled five-minute forecast.

sample_paths
array<array<number (double)>> required

24 possible paths for the share, each aligned with series. Draw them to show the spread of outcomes.

series
array<object> required

The forecast distribution every 4 hours from as_of: 18 steps, oldest first.

series[].mean_share
number (double) required

The expected share at this step.

series[].p10_share
number (double) required

The 10th percentile of the share at this step, from 0 to 1.

series[].p25_share
number (double) required

The 25th percentile of the share at this step, from 0 to 1.

series[].p50_share
number (double) required

The 50th percentile of the share at this step, from 0 to 1.

series[].p75_share
number (double) required

The 75th percentile of the share at this step, from 0 to 1.

series[].p90_share
number (double) required

The 90th percentile of the share at this step, from 0 to 1.

series[].quantile_shares
array<number (double)> required

21 quantiles of the share at this step: the 0th, 5th, 10th, ... 100th percentiles, lowest first. Interpolate between them for the chance of landing in any range.

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

UTC time the step forecasts: as_of plus 4, 8, ... 72 hours.

status
string required

ok, or not_forecastable when the asset cannot be forecast (the summary fields are then null and the series empty; reason says why).

Allowed values
oknot_forecastable
takeoff_chance_72h
number (double) required

The chance of a sudden surge in attention on the asset within 72 hours, from 0 to 1. Null when there is no estimate.

{
  "as_of": "2026-09-14T09:15:00Z",
  "chance_higher_72h": 0.63,
  "current_share": 0.0498,
  "horizon_hours": 72,
  "likely_high_share": 0.1022,
  "likely_low_share": 0.0331,
  "reason": null,
  "refreshed": false,
  "sample_paths": [
    [
      0.0502,
      0.0515,
      0.0531
    ],
    [
      0.0494,
      0.0488,
      0.0479
    ]
  ],
  "series": [
    {
      "mean_share": 0.0512,
      "p10_share": 0.039936000000000006,
      "p25_share": 0.045568000000000004,
      "p50_share": 0.050176,
      "p75_share": 0.055296000000000005,
      "p90_share": 0.063488,
      "quantile_shares": [
        0.0301,
        0.0352,
        0.0391,
        0.0418,
        0.0437,
        0.0451,
        0.0463,
        0.0474,
        0.0484,
        0.0493,
        0.0502,
        0.0511,
        0.0521,
        0.0532,
        0.0544,
        0.0557,
        0.0573,
        0.0594,
        0.0623,
        0.0671,
        0.0889
      ],
      "timestamp": "2026-09-14T13:15:00Z"
    },
    {
      "mean_share": 0.0523,
      "p10_share": 0.040794000000000004,
      "p25_share": 0.046547,
      "p50_share": 0.051254,
      "p75_share": 0.056484,
      "p90_share": 0.06485199999999999,
      "quantile_shares": [
        0.0301,
        0.0352,
        0.0391,
        0.0418,
        0.0437,
        0.0451,
        0.0463,
        0.0474,
        0.0484,
        0.0493,
        0.0502,
        0.0511,
        0.0521,
        0.0532,
        0.0544,
        0.0557,
        0.0573,
        0.0594,
        0.0623,
        0.0671,
        0.0889
      ],
      "timestamp": "2026-09-14T17:15:00Z"
    },
    {
      "mean_share": 0.0534,
      "p10_share": 0.041652,
      "p25_share": 0.047526000000000006,
      "p50_share": 0.052332000000000004,
      "p75_share": 0.05767200000000001,
      "p90_share": 0.066216,
      "quantile_shares": [
        0.0301,
        0.0352,
        0.0391,
        0.0418,
        0.0437,
        0.0451,
        0.0463,
        0.0474,
        0.0484,
        0.0493,
        0.0502,
        0.0511,
        0.0521,
        0.0532,
        0.0544,
        0.0557,
        0.0573,
        0.0594,
        0.0623,
        0.0671,
        0.0889
      ],
      "timestamp": "2026-09-14T21:15:00Z"
    }
  ],
  "status": "ok",
  "takeoff_chance_72h": 0.21
}