---
title: "Aggregate sentiment scoring across timeframes (VWF / SDF / FIR / Composite)"
method: GET
path: "/v1/aggregate/{ticker}"
tags: ["Analytics"]
---

# Aggregate sentiment scoring across timeframes (VWF / SDF / FIR / Composite)

`GET /v1/aggregate/{ticker}`

Returns a Composite directional score plus its VWF / SDF / FIR
components for one or more trailing timeframes (intraday or
multi-day). Optional moneyness breakdown, optional time-decay
weighting, and a comparative trend block contrasting short- vs
long-horizon sentiment. Reference: PRD Section 8.

## Path parameters

- `ticker` string, required

## Query parameters

- `timeframes` string
- `include_breakdown` boolean
- `include_moneyness` boolean
- `moneyness_filter` 'deep_itm' | 'itm' | 'atm' | 'otm' | 'deep_otm' | 'all'
- `expiration_filter` '0dte' | 'weekly' | 'monthly' | 'leaps' | 'all'
- `time_decay` boolean
- `time_decay_half_life` integer
- `date` string, date

## Response `200`

Aggregate sentiment by timeframe.

- AggregateSuccess
  - `data` AggregateResponse, required
    - `ticker` string, required
    - `generatedAt` string, date-time, required
    - `byTimeframe` object, required — Map keyed by timeframe id (`1h`, `4h`, `1d`, `7d`, `30d`, `90d`, …). Only the requested timeframes appear; missing entries indicate the underlying query failed for that horizon.
    - `trend` TrendAnalysis, required
      - `shortVsLong` 'stable' | 'bullish_divergence' | 'bearish_divergence' | 'improving' | 'deteriorating', required
      - `momentum` 'stable' | 'accelerating_bullish' | 'accelerating_bearish' | 'mixed', required
      - `description` string, required — Human-readable interpretation of the short→long horizon contour.
    - `byMoneyness` MoneynessAggregate[] — Present when `includeMoneyness=true`.
      - `category` 'DEEP_ITM' | 'ITM' | 'ATM' | 'OTM' | 'DEEP_OTM', required
      - `composite` integer, required
      - `tradeCount` integer, required
      - `premium` number, required
      - `pctOfTotal` number, required
  - `meta` Meta, required
    - `timestamp` string, date-time, required — Server-side timestamp the response was generated at.
    - `requestId` string, required — Short opaque ID for log correlation.

## Other responses

- `400` — Request validation failed.
- `401` — Missing or invalid API key.
- `402` — The account's shared Skylit credit balance is lower than this route's cost. Top up to continue. Carries `X-Credits-Remaining: 0`.
- `403` — API key revoked/expired, monthly quota exceeded, or the account's API access is suspended (`account_suspended`).
- `404` — Unknown resource (ticker / sector / window with no data).
- `429` — Per-minute rate limit exceeded.
- `503` — Underlying data source temporarily unavailable, or the credit balance could not be verified (`credit_check_failed`). Safe to retry.

---

[API](https://skmtc.net/skylit/apis/flowseeker-skylit-public-api.md) · [All operations](https://skmtc.net/skylit/apis/flowseeker-skylit-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skylit/flowseeker-skylit-public-api/revisions/3280190b1b24/schema)
