Appointment Templates
Manage appointment type templates with the Jump EHR API. Define bookable service types with pricing and duration.
Appointment templates define the types of appointments your organisation offers — their names, durations, pricing, and configuration. Templates are configuration objects that change rarely.
Templates that have appointments booked against them cannot be modified. Create a new version instead.
Authorization
BearerApiKey API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.
In: header
Query Parameters
Maximum number of records to return (1–100, default 20)
1 <= value <= 10020Number of records to skip (default 0)
0 <= value0Value in
- "draft"
- "active"
- "archived"
date-timedate-timeResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/appointment-templates"{ "data": [ { "id": "Example id", "name": "Example name", "description": "Example description", "duration": 1, "buffer_before": 1, "buffer_after": 1, "color": "Example color", "price": 1.5, "currency": "Example currency", "pricing_type": "free", "is_active": true, "status": "draft", "version": 1, "available_remote": false, "available_in_person": false, "available_remote_video": false, "available_remote_phone": false, "max_participants": 1, "min_participants": 1, "slot_interval_minutes": 1, "max_advance_booking_days": 1, "max_bookings_per_day_per_patient": 1, "max_bookings_per_week_per_patient": 1, "max_active_bookings_per_patient": 1, "cancellation_window_minutes": 1, "minimum_notice_minutes": 1, "requires_approval": false, "require_online_payment": false, "created_at": "2026-01-15T10:30:00Z", "updated_at": "2026-01-15T10:30:00Z" } ], "meta": { "limit": 20, "next_offset": 1, "has_more": true, "request_id": "req_abc123" }}Try-it is disabled for POST /appointment-templates
This operation writes data. Running it from these docs would target the production API and change a real record. Copy the request sample and run it against staging first.
Authorization
BearerApiKey API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.
In: header
Header Parameters
Optional UUID for request deduplication. Same key + same body returns the cached response. Same key + different body returns 409 CONFLICT. Keys are scoped to your organisation and endpoint, and expire after 24 hours.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
version is forced to 1 and status to draft on creation.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/appointment-templates" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{ "data": { "id": "Example id", "name": "Example name", "description": "Example description", "duration": 1, "buffer_before": 1, "buffer_after": 1, "color": "Example color", "price": 1.5, "currency": "Example currency", "pricing_type": "free", "is_active": true, "status": "draft", "version": 1, "available_remote": false, "available_in_person": false, "available_remote_video": false, "available_remote_phone": false, "max_participants": 1, "min_participants": 1, "slot_interval_minutes": 1, "max_advance_booking_days": 1, "max_bookings_per_day_per_patient": 1, "max_bookings_per_week_per_patient": 1, "max_active_bookings_per_patient": 1, "cancellation_window_minutes": 1, "minimum_notice_minutes": 1, "requires_approval": false, "require_online_payment": false, "created_at": "2026-01-15T10:30:00Z", "updated_at": "2026-01-15T10:30:00Z" }, "meta": { "request_id": "req_abc123" }}Authorization
BearerApiKey API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.
In: header
Path Parameters
Text ID (e.g. apt_type_xxx)
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/appointment-templates/string"{ "data": { "id": "Example id", "name": "Example name", "description": "Example description", "duration": 1, "buffer_before": 1, "buffer_after": 1, "color": "Example color", "price": 1.5, "currency": "Example currency", "pricing_type": "free", "is_active": true, "status": "draft", "version": 1, "available_remote": false, "available_in_person": false, "available_remote_video": false, "available_remote_phone": false, "max_participants": 1, "min_participants": 1, "slot_interval_minutes": 1, "max_advance_booking_days": 1, "max_bookings_per_day_per_patient": 1, "max_bookings_per_week_per_patient": 1, "max_active_bookings_per_patient": 1, "cancellation_window_minutes": 1, "minimum_notice_minutes": 1, "requires_approval": false, "require_online_payment": false, "created_at": "2026-01-15T10:30:00Z", "updated_at": "2026-01-15T10:30:00Z" }, "meta": { "request_id": "req_abc123" }}Try-it is disabled for PATCH /appointment-templates/{id}
This operation writes data. Running it from these docs would target the production API and change a real record. Copy the request sample and run it against staging first.
Authorization
BearerApiKey API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.
In: header
Path Parameters
Text ID (e.g. apt_type_xxx)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Partial update. version and status are excluded — lifecycle changes use action endpoints.
Only templates with no appointments against them can be updated.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/appointment-templates/string" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "id": "Example id", "name": "Example name", "description": "Example description", "duration": 1, "buffer_before": 1, "buffer_after": 1, "color": "Example color", "price": 1.5, "currency": "Example currency", "pricing_type": "free", "is_active": true, "status": "draft", "version": 1, "available_remote": false, "available_in_person": false, "available_remote_video": false, "available_remote_phone": false, "max_participants": 1, "min_participants": 1, "slot_interval_minutes": 1, "max_advance_booking_days": 1, "max_bookings_per_day_per_patient": 1, "max_bookings_per_week_per_patient": 1, "max_active_bookings_per_patient": 1, "cancellation_window_minutes": 1, "minimum_notice_minutes": 1, "requires_approval": false, "require_online_payment": false, "created_at": "2026-01-15T10:30:00Z", "updated_at": "2026-01-15T10:30:00Z" }, "meta": { "request_id": "req_abc123" }}