Skip to main content
Webhooks require the Pro plan or higher. Endpoint limits by tier: Pro 3, Business 10, Enterprise unlimited. The Free plan cannot create endpoints.

Authentication

These endpoints accept either a dashboard session cookie or a server API key sent as Authorization: Bearer <key>.

List webhook endpoints

Returns all configured webhook endpoints for the organization, newest first. Response
The signing secret is not included — it is returned only at creation time.

Create a webhook endpoint

Request body
Supported event types device.new, device.attested.first, device.high_risk, device.attestation_failed, attestation.anomaly, flag.created, flag.updated, flag.deleted, subscription.changed, subscription.expired, subscription.refunded. Payloads for each are in Webhook Events. Response — 201 Created
The secret field is returned only at creation time. Store it immediately — it cannot be retrieved again. Use it to verify the X-Grantiva-Signature header on incoming deliveries.
Errors

Update a webhook endpoint

Toggle the endpoint on or off, change subscribed events, or update the description. All fields are optional. Request body
Response — 200 OK — the updated endpoint object (same shape as the list response, without secret).

Delete a webhook endpoint

Permanently removes the webhook endpoint. In-flight deliveries are not retried after deletion. Response — 204 No Content

Send a test delivery

Synchronously delivers a synthetic attestation.completed event to the endpoint’s configured URL and returns the outcome. The test delivery:
  • is signed with the endpoint’s secret (X-Grantiva-Signature), exactly like a real delivery
  • does not create a delivery record and is not retried on failure
  • includes "is_test": "true" in the payload data
  • is sent regardless of which events the endpoint subscribes to
Test payload sent to your endpoint
Headers on the outgoing request:
attestation.completed is a test-only event name. It is not a subscribable event type — real attestation events arrive as device.new, device.high_risk, and the others listed above.
Response — 200 OK

List deliveries

Paginated delivery history for a webhook endpoint, newest first. Query parameters Response
Errors

Retry a delivery

Manually re-sends a delivery with the original payload. The delivery is reset to pending with attemptCount back to 0, giving it a fresh automatic-retry budget, and the HTTP call fires in the background — the response reflects the reset state, not the outcome of the new attempt. Poll the deliveries list to see the result. Response — 200 OK Returns the delivery object (same shape as the list items) with status: "pending" and attemptCount: 0. Errors

Signature verification

Every delivery includes an X-Grantiva-Signature header: the string sha256= followed by the hex-encoded HMAC-SHA256 of the raw request body, keyed with your endpoint’s secret. Verify the signature before processing any payload:
For Node.js, Python, and Go examples see Webhooks Concepts.

See also