Scheduling
Administer your organisation’s scheduling configuration with an API key instead of the admin interface. You can list and cancel scheduled appointments, manage appointment types and their reminders, and configure each doctor’s recurring availability rules. All endpoints are scoped to the organisation that owns the API key. UIDs that belong to another organisation are treated as not found.Permissions
Scheduling endpoints are gated by two permissions:scheduling:read— required for all read (GET) endpoints.scheduling:admin— required for all write endpoints (POST,PATCH,DELETE).
scheduling:admin is not automatically granted scheduling:read;
add both if you need to read and write. Contact your RxScale account manager to
adjust permissions.
All requests authenticate with the X-API-Key header. See
Authentication for details.
Appointments
List Appointments
scheduling:read
integer
default:"0"
Page number (0-indexed)
integer
default:"50"
Number of appointments per page
string
Filter appointments by doctor UID
string
Filter appointments by patient UID
string
Filter by appointment status. One of
held, confirmed, cancelled,
expired, completed, no_show, or all. When omitted, the default
server-side filtering applies.integer
Filter appointments starting at or after this Unix timestamp
integer
Filter appointments starting at or before this Unix timestamp. Must be
greater than
from when both are supplied.Example Request
Response
Response Fields
Cancel an Appointment
scheduling:admin
string
required
The scheduled meeting UID
string
required
Reason for cancelling the appointment (must not be empty)
Example Request
Response
Appointment Types
An appointment type defines a bookable kind of meeting (duration, hold behaviour, room and rebooking strategy).List Appointment Types
scheduling:read
Example Request
Response
Create an Appointment Type
scheduling:admin
string
required
Display name (1–255 characters)
string
required
Meeting type. One of
CONSULTATION, FOLLOW_UP, INITIAL, REVIEW,
ON_DEMAND.integer
required
Appointment duration in minutes (1–1440)
integer
required
How long a tentative hold survives before expiring, in seconds (1–86400)
integer
default:"0"
Default minimum notice required before patients can book this appointment type,
in minutes. Doctor-specific settings can override this value.
integer
default:"0"
Minimum notice required to cancel, in minutes (≥ 0)
integer
default:"0"
Minimum notice required to rebook, in minutes (≥ 0)
string
required
Room allocation strategy. One of
persistent_per_provider,
per_appointment.string
required
Rebooking mode. One of
same_doctor_only,
any_doctor_same_organisation.string
default:"all_available_doctors"
Controls which doctors can offer this appointment type. Use
all_available_doctors to include every doctor with availability, or
selected_doctors_only to require an active doctor-specific setting.boolean
default:"false"
Whether patients may rebook their own appointments of this type
boolean
default:"true"
Whether the appointment type is bookable
Example Request
201 Created with the created appointment type (same shape as a list
entry).
Update an Appointment Type
scheduling:admin
string
required
The appointment type UID
string
Display name (1–255 characters)
string
One of
CONSULTATION, FOLLOW_UP, INITIAL, REVIEW, ON_DEMANDinteger
Appointment duration in minutes (1–1440)
integer
Hold lifetime in seconds (1–86400)
integer
Default minimum booking notice in minutes (≥ 0)
integer
Minimum cancellation notice in minutes (≥ 0)
integer
Minimum rebooking notice in minutes (≥ 0)
string
One of
persistent_per_provider, per_appointmentstring
One of
same_doctor_only, any_doctor_same_organisationstring
One of
all_available_doctors, selected_doctors_onlyboolean
Whether patients may rebook their own appointments of this type
boolean
Whether the appointment type is bookable
Example Request
200 OK with the updated appointment type.
Delete an Appointment Type
scheduling:admin
string
required
The appointment type UID
Example Request
204 No Content on success.
Reminders
Reminders are configured per appointment type and notify a recipient role a fixed number of minutes before the appointment starts.List Reminders
scheduling:read
string
required
The appointment type UID
Example Request
Response
Response Fields
Create a Reminder
scheduling:admin
string
required
The appointment type UID
string
required
Who is notified. One of
patient, doctor, admin.integer
required
Minutes before the appointment to send the reminder (1–86400, i.e. up to 60
days)
boolean
default:"false"
Whether to send an email
boolean
default:"false"
Whether to send an SMS
boolean
default:"true"
Whether the reminder is active
Example Request
201 Created with the created reminder (same shape as a list entry).
Update a Reminder
scheduling:admin
string
required
The appointment type UID
string
required
The reminder UID
string
One of
patient, doctor, admininteger
Minutes before the appointment to send the reminder (1–86400)
boolean
Whether to send an email
boolean
Whether to send an SMS
boolean
Whether the reminder is active
Example Request
200 OK with the updated reminder.
Delete a Reminder
scheduling:admin
string
required
The appointment type UID
string
required
The reminder UID
Example Request
204 No Content on success.
Availability Rules
Availability rules define a doctor’s recurring weekly bookable windows. Times are expressed as minutes from midnight (for example,540 is 09:00 and 1020 is
17:00).
List Availability Rules
scheduling:read
string
required
The doctor UID
Example Request
Response
Response Fields
Create an Availability Rule
scheduling:admin
string
required
The doctor UID
integer
required
Day of week (0 = Monday … 6 = Sunday)
integer
required
Start of the window, in minutes from midnight (0–1440)
integer
required
End of the window, in minutes from midnight (0–1440)
integer
default:"0"
Buffer between appointments, in minutes (≥ 0)
integer
Optional start of validity (Unix timestamp)
integer
Optional end of validity (Unix timestamp)
boolean
default:"true"
Whether the rule is active
string
Optional. Omit or set to
null to apply the rule to all appointment types.
Set it to scope the rule to a single appointment type. See Scoping
availability to a single appointment
type.Example Request
201 Created with the created availability rule (same shape as a list
entry).
Update an Availability Rule
clear_* flag rather than a value.
Required permission: scheduling:admin
string
required
The doctor UID
string
required
The availability rule UID
integer
Day of week (0 = Monday … 6 = Sunday)
integer
Start of the window, in minutes from midnight (0–1440)
integer
End of the window, in minutes from midnight (0–1440)
integer
Buffer between appointments, in minutes (≥ 0)
integer
Set the start of validity (Unix timestamp)
integer
Set the end of validity (Unix timestamp)
boolean
Whether the rule is active
boolean
default:"false"
Clear the existing
valid_from bound (set it to null)boolean
default:"false"
Clear the existing
valid_until bound (set it to null)string
Scope the rule to a single appointment type. See Scoping availability to a
single appointment type.
boolean
default:"false"
Clear the existing appointment-type scope so the rule applies to all types again
Example Request
200 OK with the updated availability rule.
Delete an Availability Rule
scheduling:admin
string
required
The doctor UID
string
required
The availability rule UID
Example Request
204 No Content on success.
Availability Date Overrides
Date overrides set a doctor’s availability for a specific calendar date, replacing their recurring weekly rules on that date. Each override is either a time window (custom hours that day) or a day off (no bookable slots that day). On any date that has at least one override, the doctor’s recurring rules are suppressed and only the overrides apply.dateis the UTC-midnight Unix timestamp of the calendar date — a multiple of86400(for example,1749427200is 2025-06-09 00:00:00 UTC).start_time/end_timeare minutes from midnight (for example,480is 08:00 and720is 12:00). For a day off, both arenull.
List Date Overrides
scheduling:read
string
required
The doctor UID
integer
Only return overrides on or after this UTC-midnight epoch
integer
Only return overrides on or before this UTC-midnight epoch
integer
default:"0"
Zero-indexed page number
integer
default:"50"
Page size (maximum 200)
Example Request
Response
The list is paginated, and a single request may span at most ~6 months. Omit bothfrom and to for “today onward”; pass one to anchor the window, or both to
choose a range — a span wider than ~6 months is trimmed from the to end.
totalRegistries is the number of overrides matching the (clamped) window and
totalPages is ceil(totalRegistries / limit).
Response Fields
Create a Date Override
scheduling:admin
string
required
The doctor UID
integer
required
UTC-midnight epoch of the calendar date (a multiple of 86400)
boolean
default:"false"
If true, the date is fully unavailable — omit
start_time/end_timeinteger
Start of the window, in minutes from midnight (0–1440). Required unless
day_off is trueinteger
End of the window, in minutes from midnight (0–1440). Required unless
day_off is trueinteger
default:"0"
Buffer between appointments, in minutes (≥ 0)
string
Optional. Omit or set to
null for an override that applies to all appointment
types. Set it to scope the override (including a day off) to a single
appointment type. See Scoping availability to a single appointment
type.Example Request — custom hours
Example Request — day off
201 Created with the created date override (same shape as a list
entry). Adding a day off clears any existing windows on that date, and adding a
window clears an existing day-off marker.
Update a Date Override
day_off: true to
turn the date into a day off (clearing its window).
Required permission: scheduling:admin
string
required
The doctor UID
string
required
The date override UID
integer
UTC-midnight epoch of the calendar date (a multiple of 86400)
boolean
default:"false"
If true, clear the date’s window and mark it a day off
integer
Start of the window, in minutes from midnight (0–1440)
integer
End of the window, in minutes from midnight (0–1440)
integer
Buffer between appointments, in minutes (≥ 0)
string
Scope the override to a single appointment type. See Scoping availability to a
single appointment type.
boolean
default:"false"
Clear the existing appointment-type scope so the override applies to all types again
Example Request
200 OK with the updated date override.
Delete a Date Override
scheduling:admin
string
required
The doctor UID
string
required
The date override UID
Example Request
204 No Content on success. The date returns to the doctor’s recurring
availability.
Scoping availability to a single appointment type
Both availability rules and date overrides accept an optionalappointment_type_uid. It lets a doctor offer different hours for different kinds
of appointment — for example, video follow-ups only in the afternoon while
in-person consultations keep the doctor’s general morning hours.
null(the default) means all appointment types. When you omitappointment_type_uidor sendnull, the rule or override behaves exactly as before and applies to every appointment type. Existing rules and overrides are unaffected.- A scoped rule replaces the doctor’s general hours for that type, per weekday. On a weekday where the doctor has at least one rule scoped to a given type, that type uses only the scoped rules for that weekday; the general (all-types) rules are ignored for that type on that weekday. Weekdays with no scoped rule for the type fall back to the doctor’s general hours.
- A scoped override replaces the doctor’s general override for that type, per date. On a date where the doctor has an override scoped to a given type, that type uses only the scoped override for that date; on dates with no scoped override the type falls back to the general override (or, if there is none, to the recurring rules).
- A general day off suppresses every type — unless that type has its own override for the date. To keep one appointment type bookable on an otherwise closed day, add a date override scoped to that type on the same date.
- The appointment type must belong to the same organisation as the doctor; otherwise the request is treated as not found.
appointment_type_uid on every rule and
override (null when not scoped).
Example Request — afternoon hours for one appointment type
Response
Reverting a row to all appointment types
On eitherPATCH endpoint, send clear_appointment_type: true to remove the
scope so the rule or override applies to all appointment types again: