# Insight attention

- Method: `GET`
- Path: `/insights/attention`
- Credits: 5
- HTML docs: https://docs.hiddensystems.ai/nebula/reference/get-insight-attention/
- Interactive docs: https://docs.hiddensystems.ai/nebula/api/#endpoint=get-insights-attention

## Description

The conversation around one intelligence item: the 24-hour attention window, author and sentiment counts, hourly buckets, cluster mix, impact vectors, and price reactions for every priceable linked entity. Use this after `/insights` when a reader opens one item and needs the full drawer-level context.

## cURL Example

```bash
curl --get \
  --url 'https://nebula-api.hiddensystems.ai/api/v1/public/insights/attention' \
  --data-urlencode 'insight_id=1' \
  --header 'X-API-Key: YOUR_API_KEY'
```

## Path Parameters

No path parameters for this endpoint.

## Query Parameters

- `insight_id` (integer, required, minimum: 1): Stable identifier of the intelligence item returned by `/insights`. Free plans reach back 90 days; further returns 403.

## Response

OK

- `attention` (object, required): Conversation and impact readout for the requested intelligence item.
- `attention.anchor_subject_id` (string, required): Subject id used to anchor the attention scan.
- `attention.authors` (integer (int64), required): Distinct authors represented by the matching posts.
- `attention.average_sentiment_score` (number (double), required): Arithmetic mean of the posts' sentiment scores, on the −100 (very bearish) to +100 (very bullish) scale.
- `attention.bearish_posts` (integer (int64), required): Posts classified as bearish.
- `attention.bucket_hours` (integer, required): Width of each bucket in hours.
- `attention.buckets` (array<object>, required): Attention buckets in chronological order.
- `attention.buckets[].authors` (integer (int64), required): Distinct authors represented by the matching posts.
- `attention.buckets[].average_sentiment_score` (number (double), required): Arithmetic mean of the posts' sentiment scores, on the −100 (very bearish) to +100 (very bullish) scale.
- `attention.buckets[].bearish_posts` (integer (int64), required): Posts classified as bearish.
- `attention.buckets[].bullish_posts` (integer (int64), required): Posts classified as bullish.
- `attention.buckets[].neutral_posts` (integer (int64), required): Posts classified as neutral.
- `attention.buckets[].posts` (integer (int64), required): Matching post count over the requested window.
- `attention.buckets[].timestamp` (string (date-time), required): UTC RFC 3339 timestamp for the observation or bucket start.
- `attention.bullish_posts` (integer (int64), required): Posts classified as bullish.
- `attention.cluster_mix` (array<object>, required): Author-cluster mix for the matching posts, ranked by authors.
- `attention.cluster_mix[].authors` (integer (int64), required): Distinct authors represented by the matching posts.
- `attention.cluster_mix[].cluster_id` (string, required): Canonical author-cluster identifier.
- `attention.cluster_mix[].posts` (integer (int64)): Matching post count over the requested window.
- `attention.cluster_mix[].share` (number (double), required): Share of eligible social attention as a decimal fraction from 0 to 1.
- `attention.clusters` (integer (int64), required): Distinct author clusters represented by the matching posts.
- `attention.from` (string (date-time), required): Inclusive UTC start of the measured window.
- `attention.impact` (object): Structured impact assessment for the intelligence item.
- `attention.impact.max_score` (integer, required): Maximum possible score for each impact vector.
- `attention.impact.sentiment_score` (integer, required): Signed sentiment score; positive is bullish and negative is bearish.
- `attention.impact.vectors` (array<object>, required): Impact vectors behind the item-level impact assessment.
- `attention.impact.vectors[].key` (string, required): Stable machine-readable key for this impact vector.
- `attention.impact.vectors[].label` (string, required): Human-readable bucket or index label.
- `attention.impact.vectors[].score` (integer, required): Score for this impact vector.
- `attention.last_post_at` (string (date-time)): UTC time of the latest matching post in the requested window.
- `attention.neutral_posts` (integer (int64), required): Posts classified as neutral.
- `attention.optional_subjects` (array<string>, required): Subject ids where matching posts had to mention at least one; empty means no optional side was required.
- `attention.posts` (integer (int64), required): Matching post count over the requested window.
- `attention.required_subjects` (array<string>, required): Subject ids that all matching posts had to mention.
- `attention.subjects_used` (array<string>, required): Subject ids actually used for the returned attention window after any fallback.
- `attention.to` (string (date-time), required): Exclusive UTC end of the measured window.
- `attention.window_kind` (string, required): Window placement around the insight: before or around.
- `insight_id` (integer (int64), required): Stable identifier for the intelligence item.
- `price_reactions` (array<object>, required): Price reactions for priceable entities linked to the intelligence item.
- `price_reactions[].insight_at` (string (date-time), required): UTC time used as the baseline for the price reaction.
- `price_reactions[].insight_id` (integer (int64), required): Stable identifier for the intelligence item.
- `price_reactions[].live_pct` (number (double)): Latest price change versus the insight baseline, present for recent insights.
- `price_reactions[].moves` (array<object>, required): Fixed-horizon price moves once each horizon has elapsed.
- `price_reactions[].moves[].change_pct` (number (double), required): Percentage-point price change versus the baseline at the insight time.
- `price_reactions[].moves[].hours` (integer, required): Lookback window represented by the response, in hours.
- `price_reactions[].series` (array<object>, required): Chronologically ordered observations.
- `price_reactions[].series[].change_pct` (number (double), required): Percentage-point price change versus the baseline at the insight time.
- `price_reactions[].series[].timestamp` (string (date-time), required): UTC RFC 3339 timestamp for the observation or bucket start.
- `price_reactions[].subject_id` (string, required): Canonical identifier for a non-asset person, account, or topic.

Media type: `application/json`

## JSON Response

```json
{
  "attention": {
    "anchor_subject_id": "eq:NVDA",
    "authors": 241,
    "average_sentiment_score": 38.5,
    "bearish_posts": 438,
    "bucket_hours": 1,
    "buckets": [
      {
        "authors": 241,
        "average_sentiment_score": 38.5,
        "bearish_posts": 438,
        "bullish_posts": 1120,
        "neutral_posts": 284,
        "posts": 684,
        "timestamp": "2026-08-07T15:00:00Z"
      }
    ],
    "bullish_posts": 1120,
    "cluster_mix": [
      {
        "authors": 241,
        "cluster_id": "smart_money",
        "posts": 684,
        "share": 0.148
      }
    ],
    "clusters": 4,
    "from": "2026-08-15T09:00:00Z",
    "last_post_at": "2026-08-22T08:45:00Z",
    "neutral_posts": 284,
    "optional_subjects": [
      "string"
    ],
    "posts": 684,
    "required_subjects": [
      "string"
    ],
    "subjects_used": [
      "string"
    ],
    "to": "2026-08-22T09:00:00Z",
    "window_kind": "around"
  },
  "insight_id": 38421,
  "price_reactions": [
    {
      "insight_at": "2026-08-20T20:00:00Z",
      "insight_id": 38421,
      "live_pct": 1.8,
      "moves": [
        {
          "change_pct": 2.4,
          "hours": 168
        }
      ],
      "series": [
        {
          "change_pct": 2.4,
          "timestamp": "2026-08-07T15:00:00Z"
        }
      ],
      "subject_id": "text:artificial intelligence"
    }
  ]
}
```
