X-API-Key authentication — JWT Bearer tokens are not accepted on these routes. Endpoints live under /api/v1/ingestion.
How ingestion works
Each endpoint accepts a source-specific event payload, normalizes it to a canonical Scrubbe signal format, and deduplicates it against the existing signal stream. Duplicate events — identified by a combination of source, event type, and a fingerprint derived from the payload — are merged rather than creating redundant signals.string
Unique ID assigned to this signal in the Scrubbe pipeline.
boolean
true if this event was merged into an existing signal rather than creating a new one.string
The normalized source name recorded for the signal.
POST /ingestion/github
Ingest a GitHub webhook event (push, pull request, deployment status, etc.).string
required
GitHub event action. Example:
"opened", "completed".object
required
GitHub repository object from the webhook payload.
object
GitHub user object representing the actor who triggered the event.
POST /ingestion/gitlab
Ingest a GitLab webhook event (push, merge request, pipeline, etc.).string
required
GitLab event kind. Example:
"push", "merge_request", "pipeline".object
required
GitLab project object from the webhook payload.
object
GitLab user who triggered the event.
POST /ingestion/kubernetes
Ingest a Kubernetes event or alert (e.g., pod crash, OOMKilled, node not ready).string
required
Kubernetes event type. Example:
"Warning", "Normal".string
required
Short reason string from the event. Example:
"OOMKilling", "BackOff".string
required
Human-readable event message.
object
required
The Kubernetes resource the event relates to (kind, name, namespace).
object
Standard Kubernetes object metadata (namespace, labels, creationTimestamp).
POST /ingestion/pagerduty
Ingest a PagerDuty webhook event (incident triggered, acknowledged, resolved, etc.).object[]
required
Array of PagerDuty webhook message objects. Each message includes
event, incident, and log_entries.PagerDuty webhook v3 payloads are supported. Configure the outbound webhook in your PagerDuty account to point to this endpoint.
POST /ingestion/prometheus
Ingest an Alertmanager webhook payload from Prometheus.string
required
Alertmanager receiver name.
string
required
Alert group status. One of:
"firing", "resolved".object[]
required
Array of Prometheus alert objects. Each alert contains
status, labels, annotations, startsAt, and endsAt.POST /ingestion/datadog
Ingest a Datadog webhook notification (monitor alert, recovery, etc.).string
required
Datadog monitor ID.
string
required
Datadog event type. Example:
"monitor alert", "metric alert".string
required
Monitor alert title.
string
Full monitor alert body text.
string
Alert priority. One of:
"normal", "low".Configure your Datadog webhook integration to point to this endpoint. Include the API key in the URL as a query parameter or set it as a custom header named
X-API-Key.POST /ingestion/webhook
Generic canonical webhook endpoint for tools not covered by a dedicated integration. Submit a normalized signal payload directly.string
required
Identifier for the originating tool or system. Example:
"custom-monitor", "statuspage".string
required
Short description of the event.
string
required
Signal severity. One of:
"critical", "high", "medium", "low", "info".string
required
Current state of the event. One of:
"firing", "resolved".string
Detailed description of the event.
object
Arbitrary key-value pairs for additional context. These are stored with the signal and surfaced in the Scrubbe UI.
string
ISO 8601 timestamp of the original event. Defaults to the time of ingestion if omitted.