Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.secapi.ai/llms.txt

Use this file to discover all available pages before exploring further.

Webhook Delivery SLA

SEC API 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 secapi-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: $SECAPI_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: $SECAPI_API_KEY"

Monitoring

Track webhook health from the delivery history endpoint. Store delivery IDs and request IDs so failed events can be replayed without guessing which payload failed.

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: $SECAPI_API_KEY"
The old secret remains valid for 24 hours after rotation.