Skip to main content

Create webhook subscription

Create an outbound webhook subscription (returns signing secret once).

POST/api/webhook-subscriptions
Scope webhooks:writeUpdated September 27, 2026

This page documents the canonical HTTP contract. Switch to the CLI example when you want the operator workflow.

Creation inserts the subscription and returns the new signing_secret once. Save it securely; later reads omit it. Filters and metadata default to empty objects. Unknown event names return 400.

Delivery is asynchronous. The compact JSON event body is signed with HMAC-SHA256 over timestamp + "." + body, using a v1=<hex> signature. Headers include X-SmartTable-Webhook-Id, X-SmartTable-Webhook-Timestamp, X-SmartTable-Webhook-Signature, X-SmartTable-Event-Type, X-SmartTable-Webhook-Delivery-Id, and Idempotency-Key. A 2xx response succeeds; every other HTTP status or request exception schedules exponential retry until the attempt limit.

Body parameters

  • urlrequired

    string

    Absolute http(s) URL without embedded username/password. Production requires HTTPS; public-host restrictions apply in production.

  • eventsrequired

    array<string>

    At least one supported event or family. Values are trimmed, lowercased, deduplicated, then validated against the event catalog.

  • enabled · optional

    boolean

    Set false to create paused.

  • filters · optional

    object

    Delivery matching filters: exact nested paths plus conditions using field/path/key, operator, and value/expected/equals. Operators: eq, neq, gt, gte, lt, lte, exists, not_exists, in, not_in, contains, not_contains; condition mode is and (default) or or.

  • metadata · optional

    object

    Opaque metadata for client use.

  • retryPolicy · optional

    object

    max_attempts 1-50 (default 8), base_delay_seconds 1-3600 (default 10), max_delay_seconds 1-86400 (default 900 and raised to at least base), timeout_seconds 1-120 (default 10). Values are clamped; invalid values fall back to defaults.

Errors

StatusMeaning
400Invalid URL or unsupported/empty events.
401Invalid API key or missing auth.
403Missing webhooks:write scope.
422Missing or malformed required body fields.

Docs