---
title: "Market-wide breadth, advance/decline, and sector rotation"
method: GET
path: "/v1/flow/market-breadth"
tags: ["Market"]
---

# Market-wide breadth, advance/decline, and sector rotation

`GET /v1/flow/market-breadth`

## Request

- Base URL: `https://flow-api.skylit.ai`
- URL: `https://flow-api.skylit.ai/v1/flow/market-breadth`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/skylit/apis/flowseeker-skylit-public-api/docs/v1/flow/market-breadth/get.ts> (a function with typed inputs; its response is checked against the schema)

Combines SPY/QQQ/IWM aggregate sentiment with an advance/decline
ratio (over directional FIR) and per-sector rotation signals. Ideal
as a single "is the market risk-on or risk-off right now" probe.

## Query parameters

- `date` string, date
- `fir_threshold` number, double

## Response `200`

Market breadth + advance/decline + sector rotation.

- MarketBreadthSuccess
  - `data` MarketBreadthResponse, required
    - `date` string, date, required
    - `majorIndices` IndexSentiment[], required
      - `ticker` string, required
      - `bullishPremium` number, required
      - `bearishPremium` number, required
      - `netPremium` number, required
      - `fir` number, required
      - `sentiment` 'strong_bullish' | 'bullish' | 'slightly_bullish' | 'neutral' | 'slightly_bearish' | 'bearish' | 'strong_bearish', required
    - `aggregateSentiment` AggregateSentiment, required
      - `combinedBullish` number, required
      - `combinedBearish` number, required
      - `combinedNetPremium` number, required
      - `combinedFir` number, required
      - `sentiment` 'strong_bullish' | 'bullish' | 'slightly_bullish' | 'neutral' | 'slightly_bearish' | 'bearish' | 'strong_bearish', required
    - `advanceDecline` AdvanceDecline, required
      - `advancing` integer, required
      - `declining` integer, required
      - `unchanged` integer, required
      - `total` integer, required
      - `ratio` number, required: Advancing / declining (capped). 0.0 means no decliners.
      - `breadthPct` number, required: Share (0–100) of tickers classified as advancing.
      - `marketAvgFir` number, required: Mean FIR across all tickers (-100..+100).
    - `sectorRotation` SectorRotation[], required
      - `sector` string, required
      - `etf` string, required
      - `fir` number, required
      - `netPremium` number, required
      - `signal` 'strong_inflow' | 'inflow' | 'neutral' | 'outflow' | 'strong_outflow', 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`).
- `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.dev/skylit/apis/flowseeker-skylit-public-api.md) - [All operations](https://skmtc.dev/skylit/apis/flowseeker-skylit-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/skylit/apis/flowseeker-skylit-public-api/revisions/3280190b1b24?raw)
