Skip to main content
A webhook endpoint is a URL plus the set of event types it should receive. Manage endpoints from the API with a secret key, or from the dashboard. Endpoints are scoped to one mode — a sk_v1_test_… key manages test-mode endpoints, a live key manages live ones. On Node, npm install @ionicfi/sdk gives you typed calls for every request below; the server SDK guide has details. Each example also shows raw curl. Every write on this API (create, update, delete, rotate) requires an Idempotency-Key header; the SDK types it as a required field on those calls.

Create an endpoint

The response is the endpoint object. The secret is present only in this create response and in a rotate response — store it now; it’s never returned again.
secret appears once. If you lose it, you can’t read it back — rotate to get a new one. Ionic stores only what’s needed to verify; it never persists the raw whsec_ value.

Filtering events

event_types accepts three forms, which you can mix in one array: Subscribe only to what you handle — it keeps your endpoint’s traffic and your logs focused. You can change the set any time with an update.

List, retrieve, update

List responses wrap the array in data:
Update with POST or PATCH and only the fields you’re changing — url, description, or event_types:

Disable and delete

Disable an endpoint to stop deliveries while keeping it (and its secret) intact — useful during maintenance:
disabled and status are two views of the same flag — {"disabled": true} is equivalent to {"status": "disabled"}, and status is only ever active or disabled. Re-enable with {"disabled": false}. Delete removes the endpoint permanently:

Rotate the signing secret

Rotating issues a new secret and returns it once. The previous secret keeps verifying for a brief overlap window, so deliveries already in flight (or signed just before the rotation) still pass — which is why a delivery’s webhook-signature header can carry more than one signature.
Roll out a rotation safely:
1

Rotate

Call rotate_secret and capture the new whsec_ from the response.
2

Accept both

Deploy your handler to verify against the new secret while still accepting the old one during the overlap.
3

Retire the old

Once the window has passed and all deliveries verify with the new secret, drop the old one.