Source · Exa · Verified November 1, 2026

Exa

Short answer: Exa Websets webhooks report search, item, monitor run, import and export lifecycle events for research pipelines.

Hooks verifies Exa deliveries with hmac-sha256, lowercase hex over <timestamp>.<raw body>; exa-signature carries t=<unix>,v1=<hex> and any matching v1 passes and normalizes them into the unified event format.

Set up the webhook in Exa

  1. Create a webhook in the Exa dashboard or call POST https://api.exa.ai/websets/v0/webhooks with the Hooks receive URL and the events you need.
  2. The response includes a secret that is only returned once; copy it into the Hooks source secret field.
  3. Exa sends Exa-Signature: t=<unix>,v1=<hex>; Hooks checks the 5-minute window and accepts any matching v1 value (secret rotation).
  4. Exa does not follow redirects, so register the final HTTPS URL. Retries reuse the same event id, which Hooks uses for dedupe.

Signature verification

HeaderExa-Signature
AlgorithmHMAC-SHA256, lowercase hex over <timestamp>.<raw body>; Exa-Signature carries t=<unix>,v1=<hex> and any matching v1 passes
Replay window5 minutes
Delivery idBody `id`

Events Hooks normalizes

event.typesubjectWhat it means
webset.search.completedeventExa Websets webhooks report search, item, monitor run, import and export lifecycle events for research pipelines.

Normalized payload

Every adapter produces this shape before filters or templates run. The raw payload and sanitized headers stay attached for audit, but filters and templates read the normalized fields.

Normalized event

{
  "id": "evt_demo",
  "source": "exa",
  "type": "webset.search.completed",
  "action": "completed",
  "deliveryId": "delivery_demo",
  "subject": {
    "title": "Exa event"
  },
  "raw": {
    "id": "evt_2d9f1c7a-4b3e-4c8a-9f10-6e5d4c3b2a10",
    "object": "event",
    "type": "webset.search.completed",
    "data": {
      "id": "ws_search_8f3c2a1d",
      "object": "webset_search",
      "websetId": "ws_7c1e9b40",
      "status": "completed",
      "query": "AI infrastructure startups"
    },
    "createdAt": "2026-11-08T12:00:00.000Z"
  }
}

Filter and template examples

Filter

type equals "webset.search.completed"

Template

"Exa event: {{event.subject.title}}"

Retries and the delivery log

408, 425, 429, and 5xx responses retry with backoff and honor Retry-After; other 4xx responses fail permanently with a named code. Every attempt keeps the rendered request and the target response, so a failure points at one field or one status instead of a guess.

Hooks delivery detail: attempt timeline, request payload, and the destination response for one delivery
Delivery detail: the attempt timeline, the rendered request the target received, and its response — the same record an event keeps for every destination.

Common errors

SymptomFix
SIGNATURE_INVALIDUse the signing secret Exa shows when the webhook is created, and send Exa-Signature for the exact raw body.
Nothing arrivesConfirm the webhook points at the endpoint's /in/<endpoint-id> URL and that the endpoint is active.

Pair with a target

Reference

Other sources