Signals API
Auto-generated from
openapi-snapshot.json. Do not edit by hand — changes are overwritten byscripts/docs/generate_api_reference.py.
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 #89): 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant_id | query | integer | optional | |
agent_id | query | — | optional | |
symbol | query | — | optional | |
limit | query | integer | optional | Page size (max 100). |
cursor | query | — | optional | Opaque pagination cursor from a previous page’s next_cursor. |
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation 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
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
GET /api/signals/{signal_id}
Fetch a single signal with structured rationale
ML-SIGNAL-REFINE (#102): 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
signal_id | path | integer | required | |
tenant_id | query | integer | optional |
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |