Appointment Templates
Appointment templates define the types of appointments your organisation offers — their names, durations, pricing, and configuration. Templates are configuration objects that change rarely.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /appointment-templates | List templates |
GET | /appointment-templates/{id} | Retrieve a template |
POST | /appointment-templates | Create a template |
PATCH | /appointment-templates/{id} | Update a template |
⚠️
Templates that have appointments booked against them cannot be modified. Create a new version instead.
The Template Object
{
"id": "tmpl_123e4567-e89b-12d3-a456-426614174000",
"name": "Standard GP Consultation",
"description": "30-minute consultation with a GP",
"duration": 30,
"price": 8500,
"pricing_type": "stripe",
"is_active": true,
"status": "draft",
"version": 1,
"allow_online_booking": true,
"buffer_before_minutes": 5,
"buffer_after_minutes": 5,
"created_at": "2025-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
}List Templates
GET /appointment-templatesQuery Parameters
| Parameter | Type | Description |
|---|---|---|
limit / offset | integer | Pagination (default 20) |
status | string | Filter by status |
status_in | string | Filter by multiple statuses (comma-separated) |
is_active | string | Filter by active/inactive |
created_at_gte / created_at_lte | string | Date range filter |
Create a Template
POST /appointment-templatesRequired Fields
| Field | Type | Description |
|---|---|---|
name | string | Template name |
Optional Fields
| Field | Type | Validation |
|---|---|---|
duration | integer | Duration in minutes |
price | integer | Price in smallest currency unit (pence) |
pricing_type | string | free, stripe, or xero |
Templates are created with version: 1 and status: "draft" automatically.
Related Resources
- Appointments - Bookings against these templates