Base URL
Base
https://subsystem-unusual-suffering.ngrok-free.dev
All endpoint paths below are appended to this. Run the tunnel script to get your URL — it changes each session unless you use a named tunnel.
Endpoints
GET/api/ext/status🔑 auth
Scanner health and live market stats. Use as a heartbeat — call every 30s to confirm the scanner is alive.
Query Parameters
| Param | Type | Default | Description |
| No parameters |
Example response
{
"ok": true,
"scanner": "UOA-Dashboard",
"port": 5008,
"market_open": true,
"time_et": "2026-05-23 10:32:14",
"signals_cached": 12,
"dark_pool_prints": 34,
"spy_price": 527.43,
"spy_change": 0.41,
"vix": null,
"webhook_active": false,
"uptime_ts": 1748001134.28
}
GET/api/signals🔑 auth
Today's UOA signals — filtered and ready for a trading bot to consume.
Query Parameters
| Param | Type | Default | Description |
| min_score | integer | 7 | Minimum signal score 1–10. Score 8+ = high conviction, 9–10 = institutional. |
| direction | CALL | PUT | all | Filter by flow direction. Omit to return both calls and puts. |
| limit | integer | 50 | Max results to return. Hard cap at 200. |
Example response
{
"ok": true,
"count": 1,
"as_of": "2026-05-23 10:32:14 ET",
"signals": [{
"ticker": "NVDA",
"direction": "CALL",
"score": 9,
"flow_type": "SWEEP",
"market_sentiment": "BULLISH",
"premium": 284500,
"vol_oi_ratio": 8.3,
"strike": 135,
"expiry": "2026-06-20",
"dte": 28,
"stock_price": 131.42,
"stock_change": 1.24,
"occ": "NVDA260620C00135000",
"ask": 4.85,
"bid": 4.70,
"mid": 4.775,
"delta": 0.48,
"iv": 52.3,
"above_ask": true,
"divergence": false,
"timestamp": "10:32:08",
"money_tier": "INSTITUTIONAL",
"sector": "Technology"
}]
}
GET/api/positions🔑 auth
Current open trade recommendations from the scanner. Only returns today's records.
Query Parameters
| Param | Type | Default | Description |
| limit | integer | 10 | Max positions to return. Hard cap at 200. |
Example response
{
"ok": true,
"count": 1,
"as_of": "2026-05-23 10:32:14 ET",
"positions": [{
"ticker": "NVDA",
"direction": "CALL",
"score": 9,
"occ": "NVDA260620C00135000",
"entry_price": 4.80,
"date": "2026-05-23"
}]
}
GET/api/convergencepublic
Live convergence scores — tickers where UOA, dark pool, breakout, and net flow are pointing the same direction. Score ≥ 7 = strong setup. Only returns tickers with score ≥ 5 and at least 2 signal types.
Query Parameters
| Param | Type | Default | Description |
| min_score | integer | 5 | Minimum convergence score. Use 7+ for strong setups, 9+ for institutional. |
| direction | BULLISH | BEARISH | all | Filter by signal direction. |
| limit | integer | 20 | Max results to return. Hard cap at 200. |
Example response
[{
"ticker": "AAPL",
"score": 8,
"direction": "BULLISH",
"signal_count": 3,
"uoa_score": 8,
"uoa_premium": 420000,
"dark_pool_notional": 1850000,
"net_flow_call": 620000,
"net_flow_put": 145000,
"bo_score": 7,
"recency_mins_ago": 14.2,
"recency_window_mins": 38.5,
"tradeable": true
}]
GET/api/darkpool/live🔑 auth
Today's dark pool prints sorted by notional size descending. Large off-exchange blocks that didn't trade on lit markets.
Query Parameters
| Param | Type | Default | Description |
| min_notional | integer | 1000000 | Minimum print size in dollars. Default filters sub-$1M prints. |
| limit | integer | 50 | Max prints to return. Hard cap at 500. |
Example response
{
"ok": true,
"count": 1,
"prints": [{
"ticker": "MSFT",
"price": 422.50,
"size": 4200,
"notional": 1774500,
"timestamp": "10:18:44",
"exchange": "FINRA"
}]
}
GET/api/smartmoneypublic
Multi-day smart money tracker — tickers with repeated institutional flow across multiple sessions.
Query Parameters
| Param | Type | Default | Description |
| min_days | integer | 2 | Minimum number of days with activity. Use 3+ for strongest conviction. |
| limit | integer | 20 | Max results to return. Hard cap at 200. |
Example response
[{
"ticker": "AMD",
"direction": "BULLISH",
"days": 3,
"total_premium": 1240000,
"last_seen": "10:28:31"
}]
GET/api/maxpainpublic
Max pain strikes and OI walls for active tickers. Sorted by distance from max pain — closest first.
Query Parameters
| Param | Type | Default | Description |
| ticker | string | all | Filter to a specific ticker, e.g. ?ticker=SPY |
| limit | integer | 30 | Max results to return. Hard cap at 200. |
Example response
[{
"ticker": "SPY",
"max_pain": 545,
"current_price": 547.23,
"distance_pct": 0.41,
"expiry": "2026-05-23",
"dte": 0
}]
Educational & informational only — not financial advice, and not a recommendation to buy or sell any security. BlackTick surfaces options-flow data to study. Options involve substantial risk of loss.