SpedySpedy Docs

Webhook Endpoints

Subscribe to events and receive real-time HTTP notifications when things happen in your organization.

Webhook endpoints let you receive HTTP callbacks when events occur in your organization -- for example, when a ticket is created or a status changes. You register a URL, choose which events to subscribe to, and Spedy sends a signed POST request to your URL whenever a matching event fires.

Webhook endpoints require a Pro plan subscription.

Supported Events

GET /api/v1/webhook-endpoints/events

Returns the list of event types you can subscribe to.

Available Events

EventDescription
ticket.createdA ticket was created
ticket.updatedA ticket was updated
ticket.deletedA ticket was deleted
ticket.status_changedA ticket's status changed
ticket.assignedA ticket was assigned or reassigned
ticket.comment_addedA comment was added to a ticket
board.createdA board was created
board.updatedA board was updated

List Webhook Endpoints

GET /api/v1/webhook-endpoints

Permission required: webhooks:view

Returns all webhook endpoints configured for your organization.

Example Response

[
  {
    "id": "wh_abc123",
    "name": "CI/CD Pipeline",
    "url": "https://ci.example.com/hooks/spedy",
    "events": ["ticket.status_changed", "ticket.created"],
    "isActive": true,
    "createdAt": "2025-06-01T10:00:00Z",
    "updatedAt": "2025-06-01T10:00:00Z"
  }
]

Create Webhook Endpoint

POST /api/v1/webhook-endpoints

Permission required: webhooks:manage

Creates a new webhook endpoint. The response includes a secret field -- store this securely, as it is only returned once. Use the secret to verify the signature of incoming payloads.

Request Body

FieldTypeRequiredDescription
namestringYesDisplay name (max 100 characters)
urlstringYesThe HTTPS URL to receive webhook payloads
eventsstring[]YesArray of event types to subscribe to

Example Request

{
  "name": "CI/CD Pipeline",
  "url": "https://ci.example.com/hooks/spedy",
  "events": ["ticket.created", "ticket.status_changed"]
}

Example Response

{
  "id": "wh_abc123",
  "name": "CI/CD Pipeline",
  "url": "https://ci.example.com/hooks/spedy",
  "events": ["ticket.created", "ticket.status_changed"],
  "isActive": true,
  "secret": "whsec_a1b2c3d4e5...",
  "createdAt": "2025-06-01T10:00:00Z",
  "updatedAt": "2025-06-01T10:00:00Z"
}

Get Webhook Endpoint

GET /api/v1/webhook-endpoints/{id}

Permission required: webhooks:view

Returns details for a specific webhook endpoint.

Update Webhook Endpoint

PATCH /api/v1/webhook-endpoints/{id}

Permission required: webhooks:manage

Updates the name, URL, or subscribed events of a webhook endpoint.

Delete Webhook Endpoint

DELETE /api/v1/webhook-endpoints/{id}

Permission required: webhooks:manage

Returns 204 No Content.

Ping Webhook Endpoint

POST /api/v1/webhook-endpoints/{id}/ping

Permission required: webhooks:manage

Sends a test ping to the webhook URL to verify connectivity. Returns 204 No Content.

List Deliveries

GET /api/v1/webhook-endpoints/{id}/deliveries

Permission required: webhooks:view

Returns recent delivery attempts for a webhook endpoint.

Query Parameters

ParameterTypeRequiredDescription
limitnumberNoNumber of deliveries to return (default: 50, max: 200)

Example Response

[
  {
    "id": "dlv_xyz789",
    "endpointId": "wh_abc123",
    "eventType": "ticket.created",
    "statusCode": 200,
    "success": true,
    "attempt": 1,
    "error": null,
    "createdAt": "2025-06-15T14:30:00Z"
  }
]

Redeliver

POST /api/v1/webhook-endpoints/{id}/deliveries/{deliveryId}/redeliver

Permission required: webhooks:manage

Re-sends a previous webhook delivery. Returns 204 No Content.