Skip to main content
POST

Overview

Creates a new appointment owned by the authenticated doctor. The doctor_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

string
required
Bearer token for authenticated access. The doctor id is taken from the token.

Body Parameters

string
required
Appointment title.
string
required
YYYY-MM-DD (or ISO). When creating a notify_patient booking, this is combined with time in the practice timezone into a precise instant.
string
required
Wall-clock time, HH:mm.
string
Recording lifecycle status. Defaults to recording; pass planned to create a planned appointment.
string
Associated recording id.
string
Recording URL.
string
Recording storage key.
string
Private clinical notes.
string
ISO language code for note generation. Default de.
string
Notes template key. Default null (the service selects a template).
string
Free-form appointment type. Default in_person.
number
Duration in minutes, 5480. An out-of-range or non-numeric value falls back to the appointment type’s duration (when appointment_type_id is given) or null.
string
Room / location label. Whitespace-only or empty is stored as null. Remembered for the practice’s room autocomplete.
string
ObjectId of an appointment type you own. Used to default the duration and tag the booking source. An unknown or unowned id returns 404.
boolean
When true, the appointment becomes a confirmed booking and a confirmation email + ICS invite is sent. Requires a valid patient.email.
object
Patient contact details for the confirmation email.
string
Patient-facing note stored on the booking (only when a booking is created).

Response

boolean
Whether the request succeeded.
object
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.