Skip to main content
Receive real-time notifications when resources change in anny. Register a webhook subscription, and the platform will POST event payloads to your URL. For general request conventions, see JSON-API Conventions. For authentication, see Authentication.

Prerequisites

  • A valid Bearer token with admin access
  • An HTTPS endpoint capable of receiving POST requests
  • Organization context (?o={organization_id})

The easiest way to set up webhooks is through the anny admin dashboard:
  1. Navigate to Organization Settings → API → Webhooks
  2. Click Create Webhook
  3. Enter your HTTPS endpoint URL, select the events to subscribe to, and save
For a step-by-step walkthrough with screenshots, see the help center article on webhooks.

Event Catalog


Payload Structure

Every webhook delivery is a POST request with Content-Type: application/json. The payload uses a normalized flat JSON format — not JSON-API.

Key differences from JSON-API

Included relations per entity

Included relations and fieldsets may vary by event. The table above shows typical inclusions.

Signature Verification

Every webhook request includes a Signature header containing an HMAC SHA-256 hash of the request body, signed with your subscription’s signing_key.

Verifying the Signature

Always verify the signature before processing the payload. This prevents spoofed requests.

Retry Policy

If your endpoint doesn’t respond with a 2xx status code within 10 seconds, the delivery is retried: After 3 failed attempts for a single event, that delivery is abandoned.

Auto-Deactivation

If deliveries fail repeatedly across events, the subscription’s failure_count increments. After 5 consecutive failures, the subscription is automatically deactivated:
  • is_active is set to false
  • failure_count resets to 0
  • Organization admins receive a notification about the deactivation
To reactivate, update the subscription:

Managing Subscriptions

List All Subscriptions

Update Events

Delete a Subscription


Best Practices

  1. Respond quickly — return 200 immediately and process the payload asynchronously. The 10-second timeout is strict.
  2. Handle duplicates — use event_id to deduplicate. The same event may be delivered more than once on retries.
  3. Verify signatures — always validate the Signature header before trusting the payload.
  4. Subscribe selectively — only subscribe to events you actually process to minimize traffic.
  5. Monitor failure_count — periodically check subscription status to catch issues before auto-deactivation.

Normalized JSON via Accept Header

Webhook management endpoints (and all other API GET endpoints) also support Accept: application/json to receive the same flat/normalized format used in webhook payloads.
This returns attributes at the top level instead of nested under data.attributes, matching the webhook payload structure.
POST and PATCH requests must still use Content-Type: application/vnd.api+json with standard JSON-API format.