Appointments
Create Appointment
Create a new appointment for the authenticated doctor
POST
Overview
Creates a new appointment owned by the authenticated doctor. Thedoctor_id is
taken from the JWT; all other details come from the request body. name,
date and time are required by the data model.
Optionally, supplying notify_patient: true together with a patient object
turns the same appointment into a confirmed booking and sends the patient a
confirmation email with a calendar (ICS) invite — no separate record is created.
This endpoint sits behind a subscription gate. If your trial or subscription
has expired the request is rejected with
403 before it runs (see Error
Responses). Free-trial and paid accounts are also subject to appointment /
encounter caps that return structured error codes your integration should
handle.Authentication
Bearer token for authenticated access. The doctor id is taken from the token.
Body Parameters
Appointment title.
YYYY-MM-DD (or ISO). When creating a notify_patient booking, this is
combined with time in the practice timezone into a precise instant.Wall-clock time,
HH:mm.Recording lifecycle status. Defaults to
recording; pass planned to create
a planned appointment.Associated recording id.
Recording URL.
Recording storage key.
Private clinical notes.
ISO language code for note generation. Default
de.Notes template key. Default
null (the service selects a template).Free-form appointment type. Default
in_person.Duration in minutes,
5–480. An out-of-range or non-numeric value falls
back to the appointment type’s duration (when appointment_type_id is given)
or null.Room / location label. Whitespace-only or empty is stored as
null.
Remembered for the practice’s room autocomplete.ObjectId of an appointment type you own. Used to default the duration and tag
the booking source. An unknown or unowned id returns
404.When
true, the appointment becomes a confirmed booking and a confirmation
email + ICS invite is sent. Requires a valid patient.email.Patient contact details for the confirmation email.
Patient-facing note stored on the booking (only when a booking is created).
Response
Whether the request succeeded.
The created appointment object.
Additional fields may appear on the appointment object. Treat any field not
documented here as opaque.
Example Request
Example Response
Error Responses
Branch on the
code field for the structured limit responses
(TRIAL_APPOINTMENT_LIMIT_REACHED, ENCOUNTER_LIMIT_REACHED, SLOT_TAKEN,
PATIENT_EMAIL_REQUIRED). The subscription gate returns a German message
with a trialExpired (or subscriptionExpired) flag. Missing required fields
or other save failures return 400/500 with the raw error in the error
field. A missing or invalid Bearer token returns 401 with a message key.