API reference navigation
POST /v1/webhooks

Create a webhook endpoint

Access
Authenticated
webhook:manage
Cost
Free
Rate limit
20 / minute per account
Quota
None

Register an https endpoint to receive signed account events. The subscribed events must be from the supported event vocabulary. The signing secret is returned exactly once in this response and is never retrievable again; store it to verify the vamo-signature header on every delivery.

Request body CreateWebhookRequest

  • url string required

    Where to POST deliveries. Must be https.

    max 2048 chars
  • events array of string required

    The event types to subscribe to. Only these are delivered; the vocabulary is closed.

    max 6 items

Responses

  • 200 The new endpoint and its one-time signing secret
    • id string required

      The endpoint id.

    • url string required

      Where deliveries are POSTed. Must be https.

    • events array of string required

      The event types this endpoint is subscribed to. Only these are delivered.

    • status string required

      Whether the endpoint is active. A disabled endpoint stops receiving deliveries without being deleted.

    • secretDisplay string required

      The masked signing secret. Use the full secret you received at creation to verify the `vamo-signature` header; this masked form is for display only.

    • createdByKind string required

      Whether a member or a key created this endpoint.

    • createdById string required

      The member id or key id that created it.

    • createdAt string required

      When it was created, as an ISO 8601 instant.

    • updatedAt string required

      When it last changed, as an ISO 8601 instant.

    • secret string required

      The signing secret, returned EXACTLY ONCE, here. Store it now: every later read shows only the masked form, and verifying the `vamo-signature` header is impossible without it.

  • 401 No or invalid credential
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_error
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at the credit top-up).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.

  • 402 Plan does not include webhooks
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_error
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at the credit top-up).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.

  • 403 Missing webhook:manage
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_error
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at the credit top-up).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.