Webhooks (API Reference)
The Webhooks API lets you manage webhook endpoints that receive real-time event notifications from Jump EHR. For an overview of webhook concepts, event types, and signature verification, see the Webhooks guide.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /webhooks | List webhook endpoints |
GET | /webhooks/{id} | Retrieve a webhook endpoint |
POST | /webhooks | Create a webhook endpoint |
PATCH | /webhooks/{id} | Update a webhook endpoint |
DELETE | /webhooks/{id} | Delete a webhook endpoint |
POST | /webhooks/{id}/test | Send a test event |
The Webhook Endpoint Object
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "My Integration",
"url": "https://example.com/webhooks/jump",
"events": [
"appointment.created",
"appointment.cancelled"
],
"is_active": true,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-06-20T14:45:00Z"
}Supported Event Types
| Event | Description |
|---|---|
patient.created | New patient record created |
patient.updated | Patient demographics changed |
patient.archived | Patient archived |
appointment.created | New appointment booked |
appointment.updated | Appointment details changed |
appointment.cancelled | Appointment cancelled |
appointment.completed | Appointment marked complete |
appointment.no_show | Patient marked as no-show |
appointment.rescheduled | Appointment rescheduled |
questionnaire_response.created | New questionnaire submitted |
questionnaire_response.updated | Questionnaire response updated |
clinician_profile.updated | Clinician profile changed |
clinician_profile.deactivated | Clinician deactivated |
location.updated | Location details changed |
location.deactivated | Location deactivated |
appointment_template.updated | Appointment type changed |
appointment_template.deactivated | Appointment type deactivated |
Create a Webhook Endpoint
POST /webhooks⚠️
The signing secret (whsec_...) is returned only in the creation response. Store it securely — it cannot be retrieved later.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
url | string | Yes | HTTPS endpoint URL |
events | string[] | Yes | Event types to subscribe to |
name | string | No | Display name for the endpoint |
Example Request
curl -X POST -H "Authorization: Bearer pk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/webhooks/jump", "events": ["appointment.created"], "name": "Booking Sync"}' \
"https://api.jumpehr.com/api-v1/webhooks"Example Response
{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Booking Sync",
"url": "https://example.com/webhooks/jump",
"events": ["appointment.created"],
"is_active": true,
"secret": "whsec_a1b2c3d4e5f6...",
"created_at": "2024-07-01T12:00:00Z",
"updated_at": "2024-07-01T12:00:00Z"
},
"meta": { "request_id": "req_abc123" }
}Update a Webhook Endpoint
PATCH /webhooks/{id}Partial update — only supplied fields are changed.
| Field | Type | Description |
|---|---|---|
name | string | Display name |
url | string | HTTPS endpoint URL |
events | string[] | Event types (replaces the full list) |
is_active | boolean | Enable or disable the endpoint |
Delete a Webhook Endpoint
DELETE /webhooks/{id}Permanently removes the endpoint. Pending deliveries for this endpoint will be marked as failed.
Test a Webhook
POST /webhooks/{id}/testEnqueues a test.ping event for delivery. Use this to verify your receiver is correctly processing and verifying signatures.
Example Response
{
"data": {
"event_id": "evt_123",
"endpoint_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "queued",
"message": "Test webhook queued for delivery"
},
"meta": { "request_id": "req_abc123" }
}