Signals API

3 endpoints in this group.

GET /api/signals/feed

List latest trading signals

Return the most recent trading signals from the agent_signals table.

P0-8: limit capped at 100. P0-9: typed response — Signal is now emitted as a $ref in the OpenAPI schema so openapi-typescript codegen produces a proper Signal[] type instead of unknown. Raw DB columns (signal_type, confidence, indicator_data) are mapped to the wire contract (type, score, payload) via row_to_signal so the feed and the WS stream publish the same shape.

TA-018 (issue ): source filtering is applied at SQL level using the calling user's signal_sources preference map. New TA sources are OFF by default so existing users see no behavior change on upgrade.

Parameters

NameInTypeRequiredDescription
tenant_idquery—optionalDeprecated; ignored. Tenant scope comes from the authenticated session.
agent_idquery—optional
symbolquery—optional
include_featuresquerybooleanoptionalPR-MLR-5: when true, populate the per-row feature_vector field. Default false keeps the hot-path feed response lean.
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

POST /api/signals/generate

Generate Signals

Run the signal engine for the given agent/strategy/symbol list. Inserts new rows into agent_signals, then publishes each new signal to the Redis Pub/Sub channel so WebSocket clients receive it in real time.

Request body: application/json

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/signals/{signal_id}

Fetch a single signal with structured rationale

ML-SIGNAL-REFINE : return one signal including rationale_json so the signal-detail drawer can render per-citation reasoning. 404 if the signal does not exist for the given tenant.

Parameters

NameInTypeRequiredDescription
signal_idpathintegerrequired
tenant_idquery—optionalDeprecated; ignored. Tenant scope comes from the authenticated session.

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.