Skip to content

Webhook Endpoints

Webhook management endpoints use session-based authentication (the VisiSign dashboard session) and require admin or owner role in the organization.

GET /v1/webhooks

Returns all webhook endpoints for the organization.

Response:

{
"webhook_endpoints": [
{
"id": 1,
"url": "https://example.com/webhooks",
"events": ["signature_request.signed", "signature_request.completed"],
"enabled": true,
"consecutive_failures": 0,
"last_delivery_at": "2026-03-04T10:00:00Z",
"created_at": "2026-01-15T10:00:00Z"
}
]
}

POST /v1/webhooks

Creates a new webhook endpoint. The signing secret is returned only in this response.

Body parameters:

ParameterTypeDescription
urlstringHTTPS URL to receive events (required)
eventsarrayEvent types to subscribe to (optional — empty means all events)

Valid events:

  • signature_request.sent
  • signature_request.viewed
  • signature_request.signed
  • signature_request.declined
  • signature_request.completed
  • signature_request.expired
  • signature_request.cancelled

Response (201):

{
"webhook_endpoint": {
"id": 2,
"url": "https://example.com/webhooks",
"events": [],
"enabled": true,
"consecutive_failures": 0,
"created_at": "2026-03-04T12:00:00Z"
},
"signing_secret": "whsec_a1b2c3d4e5f6..."
}

DELETE /v1/webhooks/:id

Permanently removes the endpoint. No further deliveries will be sent.

Response: 204 No Content


POST /v1/webhooks/:id/test

Sends a test delivery to the endpoint URL. The test payload looks like:

{
"event": {
"type": "test",
"timestamp": "2026-03-04T12:00:00Z"
},
"signature_request": {
"id": "sr_test",
"title": "Test Event"
}
}

Response:

{
"message": "Test webhook queued",
"delivery_id": 42
}

The test delivery is queued and sent asynchronously. Check your endpoint logs to confirm receipt.