Skip to content

Webhooks

Eiryx receives webhooks at POST /api/webhooks/ingest/{type}?token={user_id}. The payload is parsed, normalized into a standard ErrorEvent, classified by AI, and optionally triggers a bugfix task.

Processing Pipeline

Incoming HTTP POST → Provider Parser → ErrorEvent → AI Classification → Threshold Check → Task Creation
  1. Provider Parser — Extracts structured data from the raw JSON payload
  2. Normalization — All events become an ErrorEvent with: source, severity, title, stack_trace, environment, event_id, url, tags
  3. AI Classification — Gemini Flash classifies severity (for generic payloads where severity isn’t explicit)
  4. Threshold Check — Compares against user’s configured threshold (e.g., only error and above)
  5. Task Creation — If threshold is met, creates a bugfix task with the error context

ErrorEvent Schema

FieldTypeDescription
sourcestringsentry, generic, manual
severitystringcritical, error, warning, info
titlestringError message / title
stack_tracestringFull stack trace if available
repo_urlstringMapped to repository via integration config
environmentstringproduction, staging, development
timestampdatetimeWhen the error occurred
event_idstringUnique ID in the source provider
urlstringLink to the error in the source provider
tagsobjectAdditional metadata

Sentry Payload

Eiryx handles both Issue Alerts (error events) and Metric Alerts (threshold breaches).

Key fields parsed:

  • data.issue.title → error title
  • data.issue.level → severity mapping (fatalcritical, errorerror, warningwarning)
  • data.issue.exception.values[].stacktrace.frames → reconstructed stack trace
  • data.issue.environment → environment filter
  • data.issue.web_url → link back to Sentry

Generic JSON Payload

For any tool that sends JSON, Eiryx auto-detects fields:

Eiryx fieldLooks for (in order)
Titleerror, message, msg, title, exception
Stack tracestack_trace, stacktrace, traceback, stack
Severityseverity, level (default: error)
Environmentenvironment, env (default: production)

Adding a New Provider

Eiryx uses a parser registry pattern. Each provider is a Python function decorated with @register_parser("provider_name") that receives the raw payload dict and returns an ErrorEvent or None.

New parsers for Datadog, PagerDuty, and others will be added in future releases.