You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
epilot sends **two** signatures with each webhook request:
38
38
39
39
-**`v1a`** (asymmetric, Ed25519) — Proves the request came from your organization. Verified using your organization's public key, which is specific to your tenant and never shared across organizations.
40
-
-**`v1s`** (symmetric, HMAC-SHA256) — Proves the request is intended for your specific webhook. Verified using the `whsec_...` signing secret you received when the webhook was created.
40
+
-**`v1`** (symmetric, HMAC-SHA256) — Proves the request is intended for your specific webhook. Verified using the `whsec_...` signing secret you received when the webhook was created.
41
41
42
42
Both signatures are computed over the same content:
Every webhook payload includes two system-injected fields that are **always set by epilot after any payload transformations** (including JSONata). These fields cannot be modified or spoofed:
51
-
52
-
-`_org_id` — The epilot organization ID that owns the webhook
53
-
-`_webhook_event_id` — The unique event ID for this webhook invocation
54
-
55
48
## Verification
56
49
57
50
### Option 1: Symmetric Verification (recommended for most use cases)
58
51
59
-
Use the [`standardwebhooks`](https://www.npmjs.com/package/standardwebhooks) npm package to verify the `v1s` signature with your webhook's signing secret.
52
+
Use the [`standardwebhooks`](https://www.npmjs.com/package/standardwebhooks) npm package to verify the `v1` signature with your webhook's signing secret.
60
53
61
54
```typescript
62
55
import { Webhook } from"standardwebhooks";
@@ -100,7 +93,7 @@ import crypto from "node:crypto";
0 commit comments