API

Webhooks

How Everyn sends signed run, row, export, and test events to customer endpoints.

Webhooks let Everyn notify your system when run, row, export, or test events happen. Endpoint configuration is API-managed, secrets are generated by Everyn, and delivery records stay inspectable without exposing secret material.

Subscribable event types

eventTypes accepts only the values below. An unsupported value is rejected when you create or update the endpoint, so a typo fails loudly instead of producing an endpoint that silently never fires.

Event typeFires when
run.createdA run is created.
run.succeededA run finishes with every row successful.
run.completed_with_flagsA run finishes, but at least one row is flagged.
run.failedA run finishes in a failed state.
run.canceledA run is canceled.
row.failedAn individual row fails.
export.readyAn export finishes and is ready to download.

webhook.test is delivered by the manual test route and cannot be subscribed to, but you can filter deliveries by it. Alert rules use a different, slightly wider vocabulary — see the Alert rules reference. The type filter on GET /v1/runs/{runId}/events is wider still: it spans the full run event stream, not just the deliverable subset.

Webhook workflow

Create a webhook endpoint:

curl -sS -X POST "$EVERYN_BASE_URL/v1/webhook-endpoints" \
  -H "Authorization: Bearer $EVERYN_API_KEY" \
  -H "Idempotency-Key: webhook-001" \
  -H "Content-Type: application/json" \
  --data '{
    "url": "https://example.com/everyn/webhooks",
    "eventTypes": ["run.succeeded", "row.failed", "export.ready"],
    "description": "Production webhook endpoint",
    "enabled": true
  }'

Signing headers:

Everyn-Webhook-Id
Everyn-Webhook-Timestamp
Everyn-Webhook-Signature: v1=<lowercase hex hmac sha256>

The signed content is:

<timestamp>.<raw UTF-8 body>

Webhook behavior:

TopicContract
Secret visibilitysigningSecret is returned only on create or rotate-secret.
Payload shapeThin event envelope; fetch sensitive details through authenticated API routes.
Endpoint URLsPublic HTTPS URLs only; unsafe local, credentialed, fragmented, or non-default-port URLs are rejected.
Delivery inspectionUse GET /v1/webhook-deliveries and GET /v1/webhook-deliveries/{deliveryId}.
Manual testUse POST /v1/webhook-endpoints/{webhookEndpointId}/test.
Secret rotationUse POST /v1/webhook-endpoints/{webhookEndpointId}/rotate-secret.

Use the generated Webhooks API reference for endpoint details and Authentication for required scopes.