Analytics
GET /api/runtime-security/analytics?days=14
Returns aggregate counts for the window.
minutes=N instead of days=N for sub‑day windows
(1 ≤ N ≤ 5256000).
How to read the numbers
Event log
GET /api/runtime-security/events
Paginated event list.
The response includes the full event payload:
uuid, verdict,
text, redacted_text, scoring breakdown, App id, config version,
and any custom_params attached at scan time.
Drift
GET /api/runtime-security/drift?baseline_days=30&recent_days=7
Population Stability Index (PSI) per dimension:
verdictdirectionsource_appmodelproviderpii_categoryinjection_labelblocked_reason
PSI > 0.25 on
injection_label is the canonical “model is missing a
new attack pattern” signal, investigate and consider updating the
phrase pack or threshold.
Streaming
Rolling‑window streaming with mid‑stream cancellation is supported on the following proxy routes:- OpenAI (
stream=true) - Anthropic (
stream=true) - Every OpenAI‑compatible provider (Groq, DeepSeek, Perplexity, Mistral, OpenRouter, Cerebras, self‑hosted)
- Google Gemini (
:streamGenerateContent) - Vertex AI (
:streamGenerateContent)
block.
Not yet streamed
- AWS Bedrock
/converse-stream, uses the AWS event‑stream binary framing that needs a custom parser. Use the non‑streaming/converseroute for now. - Legacy OpenAI
/v1/completions, rejected with400.
Where the dashboard surfaces this
Common workflows
Quarterly review
Quarterly review
Pull
analytics?days=90 for each App. Plot verdict mix and PII
categories alongside your model release timeline to see what
changed.Tune a noisy App
Tune a noisy App
drift?baseline_days=30&recent_days=3to see what’s shifted.- If
injection_labeldrifted, inspect thetop_injection_labelsanalytics field for the new label. - Add a custom phrase or adjust the threshold, then watch the next drift run.
Ship live data to your SIEM
Ship live data to your SIEM
Poll
/events with before_uuid cursoring from a scheduled job.
Push to your SIEM with the uuid so cross‑system queries can
join on it.
