Appointments
Schedule and manage appointments with the Jump EHR Appointments API. Create, update, cancel, and list bookings.
The Appointments API allows you to manage patient appointments in Jump EHR. Appointments connect patients with clinicians at specific times and locations.
Status changes must use the cancel action endpoint. You cannot change status via PATCH.
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 <= value0uuidMaps to clinician_profile_id
uuidValue in
- "pending_approval"
- "confirmed"
- "pending"
- "scheduled"
- "in_progress"
- "completed"
- "no_show"
- "rejected"
- "cancelled"
Comma-separated list of statuses
Filter start_time >= value
date-timeFilter start_time <= value
date-timeuuidResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/appointments"{ "data": [ { "id": "123e4567-e89b-12d3-a456-426614174006", "patient_id": "P-100428", "clinician_profile_id": "123e4567-e89b-12d3-a456-426614174007", "title": "Ms", "description": "Example description", "start_time": "2026-01-15T10:30:00Z", "end_time": "2026-01-15T10:30:00Z", "status": "pending_approval", "appointment_type_id": "123e4567-e89b-12d3-a456-426614174008", "location_id": "123e4567-e89b-12d3-a456-426614174009", "is_remote": true, "remote_channel": "video", "video_link": "Example video link", "video_provider": "Example video provider", "duration_minutes": 1, "attendee_email": "Example attendee email", "attendee_name": "Example attendee name", "meeting_url": "https://example.com/resource", "meeting_started_at": "2026-01-15T10:30:00Z", "meeting_ended_at": "2026-01-15T10:30:00Z", "attendance_status": "Example attendance status", "arrived_at": "2026-01-15T10:30:00Z", "sent_in": "2026-01-15T10:30:00Z", "left_at": "2026-01-15T10:30:00Z", "cancellation_reason": "Example cancellation reason", "rejection_reason": "Example rejection reason", "reschedule_reason": "Example reschedule reason", "booking_source": "Example booking source", "is_guest_booking": true, "guest_first_name": "Example guest first name", "guest_last_name": "Example guest last name", "guest_dob": "2026-01-15", "guest_mobile": "Example guest mobile", "guest_relationship": "Example guest relationship", "is_team_booking": true, "episode_id": "123e4567-e89b-12d3-a456-426614174010", "patient_timezone": "Example patient timezone", "booked_by_patient_id": "123e4567-e89b-12d3-a456-426614174011", "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 /appointments
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.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/appointments" \ -H "Content-Type: application/json" \ -d '{ "title": "string", "start_time": "2019-08-24T14:15:22Z", "end_time": "2019-08-24T14:15:22Z" }'{ "data": { "id": "123e4567-e89b-12d3-a456-426614174006", "patient_id": "P-100428", "clinician_profile_id": "123e4567-e89b-12d3-a456-426614174007", "title": "Ms", "description": "Example description", "start_time": "2026-01-15T10:30:00Z", "end_time": "2026-01-15T10:30:00Z", "status": "pending_approval", "appointment_type_id": "123e4567-e89b-12d3-a456-426614174008", "location_id": "123e4567-e89b-12d3-a456-426614174009", "is_remote": true, "remote_channel": "video", "video_link": "Example video link", "video_provider": "Example video provider", "duration_minutes": 1, "attendee_email": "Example attendee email", "attendee_name": "Example attendee name", "meeting_url": "https://example.com/resource", "meeting_started_at": "2026-01-15T10:30:00Z", "meeting_ended_at": "2026-01-15T10:30:00Z", "attendance_status": "Example attendance status", "arrived_at": "2026-01-15T10:30:00Z", "sent_in": "2026-01-15T10:30:00Z", "left_at": "2026-01-15T10:30:00Z", "cancellation_reason": "Example cancellation reason", "rejection_reason": "Example rejection reason", "reschedule_reason": "Example reschedule reason", "booking_source": "Example booking source", "is_guest_booking": true, "guest_first_name": "Example guest first name", "guest_last_name": "Example guest last name", "guest_dob": "2026-01-15", "guest_mobile": "Example guest mobile", "guest_relationship": "Example guest relationship", "is_team_booking": true, "episode_id": "123e4567-e89b-12d3-a456-426614174010", "patient_timezone": "Example patient timezone", "booked_by_patient_id": "123e4567-e89b-12d3-a456-426614174011", "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
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/appointments/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "data": { "id": "123e4567-e89b-12d3-a456-426614174006", "patient_id": "P-100428", "clinician_profile_id": "123e4567-e89b-12d3-a456-426614174007", "title": "Ms", "description": "Example description", "start_time": "2026-01-15T10:30:00Z", "end_time": "2026-01-15T10:30:00Z", "status": "pending_approval", "appointment_type_id": "123e4567-e89b-12d3-a456-426614174008", "location_id": "123e4567-e89b-12d3-a456-426614174009", "is_remote": true, "remote_channel": "video", "video_link": "Example video link", "video_provider": "Example video provider", "duration_minutes": 1, "attendee_email": "Example attendee email", "attendee_name": "Example attendee name", "meeting_url": "https://example.com/resource", "meeting_started_at": "2026-01-15T10:30:00Z", "meeting_ended_at": "2026-01-15T10:30:00Z", "attendance_status": "Example attendance status", "arrived_at": "2026-01-15T10:30:00Z", "sent_in": "2026-01-15T10:30:00Z", "left_at": "2026-01-15T10:30:00Z", "cancellation_reason": "Example cancellation reason", "rejection_reason": "Example rejection reason", "reschedule_reason": "Example reschedule reason", "booking_source": "Example booking source", "is_guest_booking": true, "guest_first_name": "Example guest first name", "guest_last_name": "Example guest last name", "guest_dob": "2026-01-15", "guest_mobile": "Example guest mobile", "guest_relationship": "Example guest relationship", "is_team_booking": true, "episode_id": "123e4567-e89b-12d3-a456-426614174010", "patient_timezone": "Example patient timezone", "booked_by_patient_id": "123e4567-e89b-12d3-a456-426614174011", "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 /appointments/{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
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Partial update. status is excluded — use action endpoints for state transitions.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/appointments/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "id": "123e4567-e89b-12d3-a456-426614174006", "patient_id": "P-100428", "clinician_profile_id": "123e4567-e89b-12d3-a456-426614174007", "title": "Ms", "description": "Example description", "start_time": "2026-01-15T10:30:00Z", "end_time": "2026-01-15T10:30:00Z", "status": "pending_approval", "appointment_type_id": "123e4567-e89b-12d3-a456-426614174008", "location_id": "123e4567-e89b-12d3-a456-426614174009", "is_remote": true, "remote_channel": "video", "video_link": "Example video link", "video_provider": "Example video provider", "duration_minutes": 1, "attendee_email": "Example attendee email", "attendee_name": "Example attendee name", "meeting_url": "https://example.com/resource", "meeting_started_at": "2026-01-15T10:30:00Z", "meeting_ended_at": "2026-01-15T10:30:00Z", "attendance_status": "Example attendance status", "arrived_at": "2026-01-15T10:30:00Z", "sent_in": "2026-01-15T10:30:00Z", "left_at": "2026-01-15T10:30:00Z", "cancellation_reason": "Example cancellation reason", "rejection_reason": "Example rejection reason", "reschedule_reason": "Example reschedule reason", "booking_source": "Example booking source", "is_guest_booking": true, "guest_first_name": "Example guest first name", "guest_last_name": "Example guest last name", "guest_dob": "2026-01-15", "guest_mobile": "Example guest mobile", "guest_relationship": "Example guest relationship", "is_team_booking": true, "episode_id": "123e4567-e89b-12d3-a456-426614174010", "patient_timezone": "Example patient timezone", "booked_by_patient_id": "123e4567-e89b-12d3-a456-426614174011", "created_at": "2026-01-15T10:30:00Z", "updated_at": "2026-01-15T10:30:00Z" }, "meta": { "request_id": "req_abc123" }}Try-it is disabled for POST /appointments/{id}/cancel
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
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/appointments/497f6eca-6276-4993-bfeb-53cbbbba6f08/cancel" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "id": "123e4567-e89b-12d3-a456-426614174000", "status": "cancelled", "title": "Check-up" }, "meta": { "request_id": "req_abc123", "action": "cancelled", "performed_at": "2026-03-25T10:00:00Z", "performed_by": "key_abc123" }}