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. Response201 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
Response200 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. Response204 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.
Response200 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. Response200 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