Skip to main content

Webhook Delivery SLA

OMNI Datastream guarantees 99.9% webhook delivery for all configured endpoints.

Delivery Guarantee

MetricTarget
Delivery rate99.9%
First attempt latency< 5 seconds from event
Retry window72 hours
Max retry attempts8 (exponential backoff)
Payload signingHMAC-SHA256 on every delivery

Retry Policy

Failed deliveries are retried with exponential backoff:
AttemptDelay
1Immediate
230 seconds
32 minutes
410 minutes
51 hour
64 hours
712 hours
824 hours
After 8 failed attempts, the delivery is marked as failed and can be manually replayed.

Signed Payloads

Every webhook delivery includes an Omni-Signature header with an HMAC-SHA256 signature. Verify the signature to ensure the payload is authentic:
import { createHmac, timingSafeEqual } from "crypto"

function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean {
  const expected = createHmac("sha256", secret).update(payload).digest("hex")
  if (signature.length !== expected.length) return false
  return timingSafeEqual(Buffer.from(signature), Buffer.from(expected))
}

Event Types

EventDescriptionTrigger
filing.publishedNew SEC filing detectedRSS poller detects new filing
enforcement.publishedNew enforcement actionDaily enforcement sync
monitor.matchSaved search has new matchesMonitor evaluation cycle
billing.budget.thresholdBudget threshold crossed75%, 90%, 95%, 100% of spend cap

Delivery Audit

Every delivery attempt is logged and queryable:
# List recent deliveries
curl "https://api.secapi.ai/v1/webhook_endpoints/{id}/deliveries?limit=10" \
  -H "x-api-key: $OMNI_DATASTREAM_API_KEY"

# Replay a failed delivery
curl -X POST "https://api.secapi.ai/v1/webhook_endpoints/{id}/deliveries/{delivery_id}/replay" \
  -H "x-api-key: $OMNI_DATASTREAM_API_KEY"

Monitoring

Track webhook health via the observability endpoint:
curl "https://api.secapi.ai/v1/observability" \
  -H "x-api-key: $OMNI_DATASTREAM_API_KEY"
Response includes delivery success rate, average latency, and recent failures.

Secret Rotation

Rotate your webhook signing secret without downtime:
curl -X POST "https://api.secapi.ai/v1/webhook_endpoints/{id}/rotate_secret" \
  -H "x-api-key: $OMNI_DATASTREAM_API_KEY"
The old secret remains valid for 24 hours after rotation.