The categorised protocol feed
GET /api/v1/signals/external
Two exchanges: Polymarket carries sports and politics; Kalshi carries the whole music_culture bucket (~80 % of the feed). category is an exact match on the four buckets — music, culture, entertainment and sport are accepted aliases; anything else returns an empty feed rather than an error. source=polymarket is the only pin (denpa.ai’s own heatmap uses it). Falls back to the Postgres snapshot (stale: true) when a live fetch fails. CORS * on the API service.
Authorizations
Section titled “Authorizations ”- None
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Bypass the 30 s cache.
Responses
Section titled “ Responses ”OK
object
The exchange(s) the rows actually came from — polymarket, kalshi, kalshi+polymarket, none, or postgres_snapshot on a DB fallback.
One market of the categorised protocol feed (@denpa/types ExternalSignal).
object
sports · politics · fashion · music_culture.
Probability in basis points (0–10000).
Probability in basis points (0–10000).
external_signals_unavailable — live fetch failed and no snapshot.
object
Stable machine-readable code (snake_case) or a short reason.