Squeeze Alerts
Coins whose forced-liquidation flow is one-sided and abnormal right now.
A cascade tripwire, not a news feed. Scored catalysts on /news/market-moving are 15-45 minutes behind a breaking story — RSS is polled every 5 minutes and desks publish well after the fact — which is no use to a leveraged position. This reads the liquidation websocket directly: on 2026-08-19 the BTC tape printed $322.8M of short liquidations in one 5-minute bucket at a 334x short/long ratio, 23 minutes before the first related headline qualified for the tape.
direction names the side being LIQUIDATED, not the price. A short liquidation is the exchange closing a short at market — forced buying — so short_squeeze is upward pressure and long_flush is downward, and the label is correct before price confirms it.
oi_state is what separates the two cases that matter. Open interest falling into a short squeeze means shorts are being closed out (the move is consuming its own fuel); OI rising means fresh positioning is being added into it. It reads null until the OI history has two samples, and unclear inside a ±0.5% noise band rather than being forced into a story.
Severity is built from ratios, not dollars: spike_ratio (this window against the coin's own trailing-24h mean) and asymmetry (the dominant side's share) carry 80% of the weight. Absolute notionals are the figure most distorted by the coverage gap below, so they are weighted least.
Coverage: the same venue subset as /market-intelligence/liquidations (OKX + Bybit + Hyperliquid where armed; Hyperliquid is exact per-fill). Binance geo-blocks its liquidation stream from our infrastructure, so notionals run below a true all-exchange total.
Check baseline_span_h, not window_uptime_h. spike_ratio compares a window against a trailing-24h mean, and baseline_span_h is how many hours of history are actually behind that mean — it is what triggering is gated on. window_uptime_h is process uptime and resets on every deploy, while the feed restores up to 24h of events from its snapshot on boot, so the two routinely disagree by a full day.
triggered requires every gate: spike_ratio ≥ 2, asymmetry ≥ 0.70, severity ≥ 0.35, window notional ≥ $100k and ≥ 1h of baseline history. suppressed_by names whichever blocked it. The two absolute floors exist because notional is only 20% of the severity weight — without them a perfectly one-sided window scores 0.80 on any size at all, which in production raised alerts on $760 of liquidations. They gate the alert, not the scoring, so include_quiet=true still returns the row with the reason.
The free tier is scoped to BTC; full-universe coverage is Pro and Pro Plus.
Request
- Base URL: https://cryptodataapi.com
- URL: https://cryptodataapi.com/api/v1/market-intelligence/squeeze-alerts
- Auth: API key in header X-API-Key
Query parameters
Filter to a single coin (e.g. BTC)
Trailing window in seconds (default 300 = 5 min)
Minimum severity to report
Return every coin with a usable window, not just the ones firing. For calibration
Max coins to scan
Response
Successful Response
Changes
No recorded changes to this operation across all 1 revision of this API.