---
title: "Aggregate flow over an arbitrary [start, end] window"
method: GET
path: "/v1/flow/{ticker}/aggregate"
tags: ["Flow"]
---

# Aggregate flow over an arbitrary [start, end] window

`GET /v1/flow/{ticker}/aggregate`

Server-side aggregation across an arbitrary `[startTime, endTime]`
window — no row cap. Returns trade/sweep counts, VWF/SDF/FIR, and a
bullish/bearish/neutral premium split with a one-line interpretation.
Useful for arbitrary slicing without paging the full trade list.

## Path parameters

- `ticker` string, required

## Query parameters

- `start_time` string, required
- `end_time` string, required
- `option_type` 'call' | 'put' | 'all'
- `min_premium` number, double
- `exclude_multi_leg` boolean
- `min_dte` integer
- `max_dte` integer
- `date` string, date

## Response `200`

Window-aggregated flow scores.

- FlowAggregateSuccess
  - `data` FlowAggregateResponse, required
    - `ticker` string, required
    - `startTime` string, date-time, required
    - `endTime` string, date-time, required
    - `tradeCount` integer, required
    - `sweepCount` integer, required
    - `totalPremium` number, required
    - `aggregate` WindowAggregateScores, required — Window-level scoring components.
      - `vwf` number, required — Volume-Weighted Flow score (-100..+100).
      - `sdf` number, required — Sweep-Dominant Flow score (-100..+100).
      - `fir` number, required — Flow Imbalance Ratio (-100..+100).
      - `composite` number, required — Composite roll-up of VWF/SDF/FIR for the window.
    - `premiumSplit` WindowPremiumSplit, required
      - `bullishPremium` number, required
      - `bearishPremium` number, required
      - `neutralPremium` number, required
      - `netPremium` number, required
      - `bullishCount` integer, required
      - `bearishCount` integer, required
      - `neutralCount` integer, required
      - `sweepPremium` number, required
    - `interpretation` WindowInterpretation, required
      - `bias` 'bullish' | 'bearish' | 'neutral' | 'mixed', required
      - `signalStrength` 'strong' | 'moderate' | 'weak', required
    - `queryTimeMs` integer, 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)
