---
title: "FINRA daily short-sale volume, market wide"
method: GET
path: "/equities/short-volume"
tags: ["equities"]
---

# FINRA daily short-sale volume, market wide

`GET /equities/short-volume`

## Request

- Base URL: `https://kresmion.com/v1`
- URL: `https://kresmion.com/v1/equities/short-volume`
- Auth: HTTP bearer

FINRA daily short-sale VOLUME and short-volume ratio (short_volume / total_volume) per symbol, ~60-day retention. This is a daily FLOW of OFF-EXCHANGE volume reported to a FINRA facility (TRF/ADF: dark pools, wholesalers, internalizers), it includes market-maker hedging, and it is NOT the bi-monthly exchange short-interest stock.

With `symbol`: that symbol's own history, newest session first. Without: the latest trading day for the WHOLE file, ranked by short-volume ratio descending and then by symbol ascending, so the same request always returns the same page.

The route serves every symbol in the FINRA file. A ratio with no volume floor ranks thin names first (a symbol where 2 shares traded outranks one where 20 million did), so the market-wide ranking applies an off-exchange volume floor of 100,000 shares by default, the floor the public short-volume page uses. Pass `min_volume` to set another floor, or `min_volume=0` for every row. A `symbol` history has no default floor. `meta.min_volume` is the floor applied, `meta.total` is how many rows match the filters and `meta.has_more` says whether another page exists.

ATTRIBUTION (FINRA API ToS 2.3(a), owner AND source, derived ratios included): `meta.attribution` carries "Source: FINRA. Reg SHO Daily Short Sale Volume data owned by FINRA." Reproduce it when you quote a figure.

## Query parameters

- `symbol` string, nullable: Exact symbol match, case-insensitive. Returns that symbol's history.
- `days` integer: Look-back window in days. Applies to the `symbol` history only.
- `limit` integer: Rows per page. Default 100, maximum 1000.
- `offset` integer: Rows to skip. Page with `limit`.
- `min_volume` integer, nullable: Off-exchange volume floor: keep only rows whose `total_volume` is at least this. Default: 100000 for the market-wide ranking, none for a `symbol` history. 0 keeps every row.

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kresmion/apis/kresmion-api.md) · [All operations](https://skmtc.dev/kresmion/apis/kresmion-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kresmion/apis/kresmion-api/revisions/a94962dddccb?raw)
