---
title: "Returns SEC Fails-to-Deliver (FTD) rows — daily settlement failures by ticker / CUSIP / date"
method: GET
path: "/v1/sec-fails-to-deliver"
---

# Returns SEC Fails-to-Deliver (FTD) rows — daily settlement failures by ticker / CUSIP / date

`GET /v1/sec-fails-to-deliver`

## Request

- Base URL: `https://api.keyvex.com`
- URL: `https://api.keyvex.com/v1/sec-fails-to-deliver`
- Auth: API key in header `x-api-key`

Returns SEC Fails-to-Deliver (FTD) rows — daily settlement failures by ticker / CUSIP / date. Each row is one ticker on one settlement date where a clearing-member's short sale FAILED to deliver shares.  Signal value: persistent FTDs are a contrarian short-squeeze leading indicator. When the daily FTD quantity spikes on a ticker, it often means naked short pressure overwhelming locate supply or settlement / locate mechanism breaking down. The Reg SHO Threshold Securities list (FTDs > 0.5% of issued shares for 5+ consecutive days) is a derived view; this tool exposes the underlying daily data.  Source: SEC bi-monthly cnsfails<YYYYMM><a|b>.zip files at sec.gov/files/data/fails-deliver-data/. Published ~1 week after each half-month settlement period. Coverage: every U.S.-listed security with a recorded settlement failure during the period.  Killer query patterns:   - Daily FTD history for a ticker: ticker='GME' + sort_by='settlement_date'   - Largest FTDs this month: min_value=1000000 + sort_by='fail_value'   - Squeeze setup candidates: min_quantity=100000 + recent dates   - Look-up by CUSIP: cusip='B6S7WD106' (foreign issuers, complex names)  Derived field: fail_value = quantity_fails × price (dollar magnitude of the failure on that day). Reference price comes from the SEC's posted value at settlement.  Note: FTDs are bi-monthly batch-published, not real-time. SEC releases each half-month batch (cnsfails<YYYYMM>a = days 1-15, b = 16-end) roughly 2-4 weeks AFTER that half-month period closes, so the most recent settlement date can be 2-4 weeks behind today (e.g. in mid-June the latest published batch is first-half-May, with settlement dates through ~May 15). That apparent lag is the SEC publish cadence, not a KeyVex freshness gap.

## Query parameters

- `id` string
- `ticker` string
- `cusip` string
- `since` string
- `until` string
- `min_quantity` number
- `min_value` number
- `sort_by` 'settlement_date' | 'quantity_fails' | 'fail_value'
- `sort_order` 'asc' | 'desc'
- `limit` integer

## Response `200`

JSON envelope: { results: [...], count, has_more }.

## Other responses

- `400`: Invalid parameter.
- `401`: Missing or invalid API key.
- `402`: This tool requires a higher plan (upgrade_required). Retrying will not help.
- `429`: Tier rate/quota limit reached (rate_limited). Retry-After points at the reset.

---

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