Intel Feed API

2 endpoints in this group.

GET /api/intel/insider-buying

Get Insider Buying

Insider purchase transactions (transactionCode='P') from Finnhub.

Cache strategy: results are stored in insider_transactions with a 6-hour TTL. On cache miss, fetches live from Finnhub for all requested symbols.

If no symbols are provided, defaults to symbols currently held in the portfolio.

Error policy: this endpoint is wrapped end-to-end in try/except. ANY failure (DB, Finnhub, cache, schema drift, auth-downstream) returns an empty-result degraded payload rather than a 500. Empty-state beats blanking the page.

Parameters

NameInTypeRequiredDescription
min_value_usdquerynumberoptional
daysqueryintegeroptional
symbolsquery—optionalComma-separated symbol list; defaults to portfolio symbols

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/intel/volume-leaders

Get Volume Leaders

Top symbols by cumulative volume in the last window_minutes from market_data_1s.

Additive data_status envelope: {status, as_of, reason?}. status is ok when leaders are present and unavailable when they are not. Database errors return HTTP 200 with data_status.reason=query_failed (empty leaders, as_of null) rather than HTTP 5xx.

Algorithm

  1. Window aggregation: SUM(volume), SUM(close*volume), VWAP for each symbol over the last window_minutes.
  2. Price change: first vs last close within the window.
  3. Relative-volume z-score: compare today's window volume against the 5-day rolling mean/stddev for the same wall-clock window (same hour offsets).
  4. Sort by cumulative volume descending, return top limit.

Returns market_status field so the UI can display a "market closed" banner and still show the last-session snapshot.

P0-8: limit capped at 100.

Parameters

NameInTypeRequiredDescription
window_minutesqueryintegeroptional
limitqueryintegeroptionalPage size (max 100). Legacy — prefer ?page_size=.
page_sizequery—optionalCanonical page size. Must be one of 25, 50, 100. When supplied, overrides ?limit=.
cursorquery—optionalOpaque pagination cursor from a previous page's next_cursor.

Responses

CodeDescription
200Successful Response
422Validation Error

Occasional BlitzPulse product updates and offers, sent only if you tick the box and confirm your address.

How we handle your email

Footer Disclaimer BlitzPulse is educational decision support only. Not investment, tax, or legal advice. Not a broker. Trade at your own risk.