Signals
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
GET | |
POST | |
GET | |
GET | |
POST | |
POST | |
GET | |
POST | |
GET | |
PATCH | |
DELETE |
Retrieve signals scout runs recent
Return the team's recently emitted scout findings across every run, newest first — the cross-run counterpart to the per-run emissions action. Each row carries its run_id, so you can regroup by run without first listing runs and fanning out one emissions call each. Pass skill_name to scope to a single scout, and date_from / date_to (a half-open window on emitted_at) to bound or paginate — set date_to to the oldest emission's emitted_at to walk back past the limit. Pure Postgres, no ClickHouse round-trip. Capped at 200 rows (default 50).
Required API key scopes
signal_scout:readQuery parameters
- date_fromstring
- date_tostring
- limitinteger
- skill_namestring
Example request
GET /api /projects /:project_id /signals /scout /runs /emissions /recentExample response
Status 200 Recent emitted findings across every run on the team, newest first.
Create signals scout runs emission reports
Batched form of the per-run emission-reports endpoint. For every finding the requested runs emitted, resolve the inbox SignalReport (if any) its signal grouped into — all in a single ClickHouse round-trip rather than one query per run, which is what made the findings page slow to open. report is null when a finding hasn't grouped yet, was de-duplicated, or its signal was deleted. Strictly team-scoped — run ids belonging to another team contribute no rows.
Required API key scopes
signal_scout:readtask:readRequest parameters
- run_idsarray
Example request
POST /api /projects /:project_id /signals /scout /runs /emissions /reports /batchExample response
Status 200 Per-finding inbox report links across all requested runs, newest finding first.
Retrieve signals scout runs findings
Return a cheap fleet-wide tally of the output the scout troop produced in the recent window — the finding count, the distinct reports authored/edited via the report channel, the number of distinct scouts behind them, and the latest output time. Backs the 'Scout findings' callout so it renders from one query instead of the client paging through the whole runs window. Counts runs that emitted at least one finding (emitted_count > 0) or authored/edited an inbox report within the last window_hours (default 72), capped to the most recent 120 such runs so the count matches what the findings list renders. Strictly team-scoped.
Required API key scopes
signal_scout:readQuery parameters
- window_hoursinteger
Response
Example request
GET /api /projects /:project_id /signals /scout /runs /findings /summaryExample response
Status 200 Fleet-wide tally of recent scout output — findings and report activity.
Retrieve signals scout scratchpad
Return SignalScratchpad entries for this project, newest-first. ILIKE matches on content and key; pass key instead for an exact single-entry lookup. date_from / date_to are a half-open window on updated_at (>= date_from, < date_to); pass date_to (the updated_at of the oldest entry seen) on subsequent calls to walk past the cap. Pass keys_only=true to scan keys without pulling entry bodies, or content_max_chars to cap each content to a preview — both keep a wide orientation scan from returning every entry's full prose. Results capped at 1000.
Required API key scopes
signal_scout:readQuery parameters
- content_max_charsinteger
- date_fromstring
- date_tostring
- keystring
- keys_onlyboolean
- limitinteger
- textstring
Example request
GET /api /projects /:project_id /signals /scout /scratchpadExample response
Status 200 Matching memory entries newest-first.
Create signals scout scratchpad
Upsert a memory keyed on (team, key). Re-using a key updates the existing entry in place.
Required API key scopes
signal_scout_internal:writeRequest parameters
- keystring
- contentstring
- run_idstringnull
Response
Example request
POST /api /projects /:project_id /signals /scout /scratchpadExample response
Status 200 Memory entry written or refreshed.
Status 400 Invalid memory shape (empty key/content, key too long).
Create signals scout scratchpad
Delete an entry by key. Returns deleted=false if no row matched.
Required API key scopes
signal_scout_internal:writeRequest parameters
- keystring
Response
Example request
POST /api /projects /:project_id /signals /scout /scratchpad /forgetExample response
Status 200 Whether a row was removed.
List all signals source configs
Required API key scopes
task:readQuery parameters
- limitinteger
- offsetinteger
Response
Example request
GET /api /projects /:project_id /signals /source_configsExample response
Status 200
Create signals source configs
Required API key scopes
task:writeRequest parameters
- source_product
- source_type
- enabledboolean
- config
Response
Example request
POST /api /projects /:project_id /signals /source_configsExample response
Status 201
Retrieve signals source configs
Required API key scopes
task:readPath parameters
- idstring
Response
Example request
GET /api /projects /:project_id /signals /source_configs /:idExample response
Status 200
Update signals source configs
Required API key scopes
task:writePath parameters
- idstring
Request parameters
- source_product
- source_type
- enabledboolean
- config
Response
Example request
PATCH /api /projects /:project_id /signals /source_configs /:idExample response
Status 200
Delete signals source configs
Required API key scopes
task:writePath parameters
- idstring
Example request
DELETE /api /projects /:project_id /signals /source_configs /:id