A signal is a normalized event that enters Scrubbe from an internal or external source — a metric spike from Prometheus, an alert from Datadog, a deployment event from GitHub, or any raw event you send via the API. Signals are the raw material of incident detection. Scrubbe’s intelligence layer (Ezra) correlates signals across services, assesses blast radius, and, when patterns match, promotes them into incident tickets automatically.Documentation Index
Fetch the complete documentation index at: https://docs.scrubbe.com/llms.txt
Use this file to discover all available pages before exploring further.
Signal fields
When you ingest a signal, you provide the following fields:| Field | Required | Description |
|---|---|---|
name | Yes | Short label identifying the signal (e.g. "High error rate on payments") |
source | Yes | Origin system: PROMETHEUS, DATADOG, GRAFANA, GITHUB, GITLAB, PAGERDUTY, WEBHOOK, MANUAL, or INTERNAL |
type | Yes | Category of signal: METRIC, ALERT, LOG, TRACE, DEPLOYMENT, CODE_CHANGE, or ANOMALY |
severity | No | LOW, MEDIUM, or HIGH — defaults to LOW if omitted |
description | No | Longer explanation of what the signal represents |
serviceId | No | ID of the service node this signal is associated with |
value | No | Free-form JSON payload containing the raw metric or event data |
metadata | No | Additional context (e.g. labels, tags, alert rule name) |
triggeredAt | No | ISO 8601 timestamp of when the event occurred — defaults to the current time |
Ingesting a single signal
Bulk ingestion
When you need to forward a batch of signals from a monitoring system or replay historical events, use the bulk endpoint. Send an array of signal objects under thesignals key:
Signal lifecycle
A signal moves through four states from ingestion to closure:OPEN (active)
A newly ingested signal enters an active state. It is visible in the signal list and is available for correlation by Ezra. SLA and alerting rules evaluate active signals.
ACKNOWLEDGED
A team member has reviewed the signal and is aware of it. Acknowledging a signal suppresses repeat notifications but keeps the signal in scope for Ezra’s correlation.
RESOLVED
The condition that produced the signal has cleared. Resolving a signal records a
resolvedAt timestamp.You cannot resolve a signal that has already been resolved.
Filtering signals
GET /api/v1/signals accepts query parameters to narrow results:
| Parameter | Description |
|---|---|
status | Filter by lifecycle state: OPEN, ACKNOWLEDGED, RESOLVED, SUPPRESSED |
severity | Filter by severity: LOW, MEDIUM, HIGH |
source | Filter by source system (e.g. PROMETHEUS) |
type | Filter by signal type (e.g. METRIC) |
serviceId | Filter to a specific service node |
from | ISO 8601 start of the triggeredAt range |
to | ISO 8601 end of the triggeredAt range |
limit | Number of results to return (default: 50) |
offset | Pagination offset |
Signal stats
GET /api/v1/signals/stats returns a summary of signal activity for your organization:
How signals become incidents
When Ezra receives a signal, it runs a four-stage reasoning pipeline: it assesses the situation, hypothesizes a root cause by correlating related signals and recent deployments, estimates blast radius, and selects a remediation option. If a matching playbook exists and guardrails allow, Scrubbe can promote the signal to an incident ticket automatically. If no playbook matches, the signal is promoted to anOPEN incident for your on-call team to handle.
The correlated signal IDs appear on the resulting incident ticket in the correlatedSignalIds field, giving you a full trace from raw event to incident.