Appearance
monitoring
29 endpoints at a glance
| Method | Path | Summary |
|---|---|---|
GET | /monitoring/admin/budget/ | List All Budgets |
POST | /monitoring/admin/budget/{owner}/cap | Set User Cap |
GET | /monitoring/admin/pipeline-health/ | Pipeline Health |
GET | /monitoring/alerts/ | List Alerts |
GET | /monitoring/alerts/{alert_id} | Get Alert |
POST | /monitoring/alerts/{alert_id}/ack | Ack Alert |
POST | /monitoring/alerts/{alert_id}/close | Close Alert |
GET | /monitoring/alerts/{alert_id}/narrative | Get Alert Narratives |
POST | /monitoring/alerts/{alert_id}/narrative | Generate Alert Narrative |
POST | /monitoring/alerts/{alert_id}/snooze | Snooze Alert |
GET | /monitoring/budget/ | Get My Budget |
GET | /monitoring/channels/ | List Channels |
POST | /monitoring/channels/ | Create Channel |
DELETE | /monitoring/channels/{channel_id} | Delete Channel |
GET | /monitoring/channels/{channel_id} | Get Channel |
PATCH | /monitoring/channels/{channel_id} | Patch Channel |
DELETE | /monitoring/checks/{check_id} | Delete Check |
GET | /monitoring/checks/{check_id} | Get Check |
PATCH | /monitoring/checks/{check_id} | Patch Check |
POST | /monitoring/checks/{check_id}/rerun | Rerun Check |
GET | /monitoring/checks/{check_id}/results/ | List Check Results |
GET | /monitoring/meta/ | Get Meta |
GET | /monitoring/targets/ | List Targets |
POST | /monitoring/targets/ | Create Target |
DELETE | /monitoring/targets/{target_id} | Delete Target |
GET | /monitoring/targets/{target_id} | Get Target |
PATCH | /monitoring/targets/{target_id} | Patch Target |
GET | /monitoring/targets/{target_id}/checks/ | List Target Checks |
POST | /monitoring/targets/{target_id}/checks/ | Create Check |
monitoring
List Targets
GET
/monitoring/targets/
Parameters
Header Parameters
authorization
x-api-key
Query Parameters
kind
tag
enabled
limit
Type
integer
Default
500skip
Type
integer
Default
0all
Admin-only: include every user's targets.
Type
boolean
Default
falseResponses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Create Target
POST
/monitoring/targets/
Parameters
Header Parameters
authorization
x-api-key
Request Body
application/json
JSON "kind": "string", "value": "string", "label": "string", "tags": [ "string" ], "description": "string", "runbook_url": "string", "enabled": true
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Get Target
Delete Target
DELETE
/monitoring/targets/{target_id}
Delete a target + cascade-sweep its checks. The substrate
classes are deliberately single-purpose — the route owns the
cross-collection cascade including stopping every UDM that
the swept checks had spawned.
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
target_id*
Type
Requiredstring
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Patch Target
PATCH
/monitoring/targets/{target_id}
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
target_id*
Type
Requiredstring
Request Body
application/json
JSON "label": "string", "tags": [ "string" ], "description": "string", "runbook_url": "string", "enabled": true
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
List Target Checks
Create Check
POST
/monitoring/targets/{target_id}/checks/
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
target_id*
Type
Requiredstring
Request Body
application/json
JSON "kind": "string", "config": { "additionalProperties": "string" }, "every_s": 0, "enabled": true, "flap_threshold": 0
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Get Check
Delete Check
Patch Check
PATCH
/monitoring/checks/{check_id}
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
check_id*
Type
Requiredstring
Request Body
application/json
JSON "config": { "additionalProperties": "string" }, "every_s": 0, "enabled": true, "flap_threshold": 0
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Rerun Check
POST
/monitoring/checks/{check_id}/rerun
Force the check to run on the next worker tick — clears
next_due_ts so the drain loop picks it up regardless of
backoff. Useful after fixing a misconfigured API key, raising
a budget cap, or deploying an executor change: an operator can
poke the check instead of waiting out the unknown-status
backoff (which can be several minutes after a failed spawn).
Owner-scoped: a non-admin can only rerun their own checks.
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
check_id*
Type
Requiredstring
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
List Channels
Create Channel
POST
/monitoring/channels/
Parameters
Header Parameters
authorization
x-api-key
Request Body
application/json
JSON "kind": "string", "label": "string", "config": { "additionalProperties": "string" }, "tag_filter": [ "string" ], "severity_filter": [ "string" ], "rate_limit_per_hour": 0, "enabled": true
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Get Channel
Delete Channel
Patch Channel
PATCH
/monitoring/channels/{channel_id}
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
channel_id*
Type
Requiredstring
Request Body
application/json
JSON "label": "string", "config": { "additionalProperties": "string" }, "tag_filter": [ "string" ], "severity_filter": [ "string" ], "rate_limit_per_hour": 0, "enabled": true
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Get Meta
GET
/monitoring/meta/
Static catalogue of every kind / check the UI can offer.
Pulled from the substrate's source-of-truth tables so the
frontend doesn't have to duplicate them. Cheap; fine to ship
on every page load.
Parameters
Header Parameters
authorization
x-api-key
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
List Alerts
GET
/monitoring/alerts/
Parameters
Header Parameters
authorization
x-api-key
Query Parameters
target_id
check_id
severity
only_open
true = open alerts only (default), false = closed only, omit for both.
Default
truelimit
Type
integer
Default
200skip
Type
integer
Default
0all
Type
boolean
Default
falseResponses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Get Alert
Get Alert Narratives
GET
/monitoring/alerts/{alert_id}/narrative
Stored triage notes for an alert — at most one per model, so a
chat and a reasoner take can be compared. Each carries the evidence
packet it was written from, for audit. Owner-scoped.
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
alert_id*
Type
Requiredstring
Query Parameters
all
Type
boolean
Default
falseResponses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Generate Alert Narrative
POST
/monitoring/alerts/{alert_id}/narrative
Write an LLM triage note for one alert (fire-and-forget).
A deterministic evidence packet — the alert, its check and target,
and the recent result history with its failure shape — is computed
first; the model only narrates it, and any draft asserting a figure
the packet can't support is rejected.
Owner-scoped: a non-admin can only narrate their own alerts. Poll
GET for the result. 400 on an unknown model alias or an alert
that isn't visible to this caller.
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
alert_id*
Type
Requiredstring
Query Parameters
all
Type
boolean
Default
falseRequest Body
application/json
JSON "model": "string", "force": false
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Ack Alert
Snooze Alert
Close Alert
POST
/monitoring/alerts/{alert_id}/close
Operator-triggered manual close. Distinct from the
auto-close path the state machine takes on a recovery — useful
for known maintenance windows.
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
alert_id*
Type
Requiredstring
Request Body
application/json
JSON "note": "string"
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
List Check Results
GET
/monitoring/checks/{check_id}/results/
Newest-first time-series for one check. Per-user
owner scope is enforced via the parent check — a non-admin
requesting another user's check_id gets 404.
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
check_id*
Type
Requiredstring
Query Parameters
since_ts
until_ts
limit
Type
integer
Default
500all
Type
boolean
Default
falseResponses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Get My Budget
GET
/monitoring/budget/
Today's UDM-spawn budget for the caller — used / cap so the
UI can warn when a user is approaching their daily cap. Always
scoped to the caller; admin uses /admin/budget/ to see
other users.
Parameters
Header Parameters
authorization
x-api-key
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Pipeline Health
GET
/monitoring/admin/pipeline-health/
Notification-pipeline diagnostic: enabled checks, open alerts, and
configured channels rolled up globally and per owner, plus the
recent monitoring_drain delivery stats. Answers "is anything
triggering notifications?" — the per-owner gap field pinpoints
where the chain is empty (checks but no channel, alerts open but no
channel, inbox-only). drain_lookback = recent drain audit rows to
fold (default 60 ≈ last hour).
Parameters
Header Parameters
authorization
x-api-key
Query Parameters
drain_lookback
Type
integer
Maximum
1440Minimum
1Default
60Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
List All Budgets
GET
/monitoring/admin/budget/
List every user's today-row, sorted by used desc — drives the
admin panel. Includes the deployment default cap so the operator
can see what new users land on.
Parameters
Header Parameters
authorization
x-api-key
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}
Set User Cap
POST
/monitoring/admin/budget/{owner}/cap
Override one user's cap for today. Affects the current UTC
day only — by design, raising a cap is a temporary unblock; if
the user genuinely needs more head-room every day the operator
should bump MONITORING_DEFAULT_DAILY_UDM_SPAWN_CAP and
restart. Returns the persisted row so the UI can re-render the
table without a refetch.
Parameters
Header Parameters
authorization
x-api-key
Path Parameters
owner*
Type
Requiredstring
Request Body
application/json
JSON "cap": 0
{
}
Responses
Successful Response
application/json
JSON "additionalProperties": "string"
{
}