API Reference

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.

GET
/appointment-templates

Authorization

BearerApiKey
AuthorizationBearer <token>

API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.

In: header

Query Parameters

limit?integer

Maximum number of records to return (1–100, default 20)

Range1 <= value <= 100
Default20
offset?integer

Number of records to skip (default 0)

Range0 <= value
Default0
status?string

Value in

  • "draft"
  • "active"
  • "archived"
status_in?string
is_active?boolean
created_at_gte?string
Formatdate-time
created_at_lte?string
Formatdate-time

Response 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
AuthorizationBearer <token>

API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.

In: header

Header Parameters

Idempotency-Key?string

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.

Formatuuid

Request 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"  }}
GET
/appointment-templates/{id}

Authorization

BearerApiKey
AuthorizationBearer <token>

API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.

In: header

Path Parameters

id*string

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
AuthorizationBearer <token>

API key with the pk_live_ prefix. pk_test_ keys are refused (403 TEST_MODE_UNAVAILABLE) until a sandbox exists.

In: header

Path Parameters

id*string

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"  }}