Skip to content

Create appointment

Request

Schedule a new appointment for a patient. Requires patient ID, practitioner ID, appointment type ID, scheduler config ID, and the desired start time. The system will validate availability before confirming the appointment.

Security
PartnerApiKey and PartnerOAuth
Path
accountIdinteger, (int64)required

Account identifier

locationIdinteger, (int64)required

Location identifier

Bodyapplication/jsonrequired
appointmentTypeIdinteger, (int64)required

Appointment type ID

Example:333
notestring

Appointment notes

Example:"Annual checkup"
patientIdinteger, (int64)required

Patient ID

Example:67890
practitionerIdinteger, (int64)required

Practitioner ID (staff member with a practitioner role)

Example:222
roomIdinteger, (int64)

Room ID (required when status is IN_TREATMENT; must be an active room at the location)

Example:1
schedulerConfigIdinteger, (int64)required

Scheduler config ID (from the availability slot being booked)

Example:1
startTimestringrequired

Appointment start time in ISO 8601 format (e.g., 2025-01-15T09:00:00-05:00)

Example:"2025-01-15T09:00:00-05:00"
statusstring(?i)SCHEDULED|CONFIRMED|CHECKED_IN|IN_TREATME...

Initial appointment status (defaults to SCHEDULED if omitted). IN_TREATMENT is allowed when roomId is provided.

Enum:"SCHEDULED""CONFIRMED""CHECKED_IN""IN_TREATMENT""CHECKED_OUT""CANCELLED""NO_SHOW"
Example:"CONFIRMED"
curl -i -X POST \
  'https://api-docs.lobbie.com/_mock/openapi/partner/v2/account/{accountId}/location/{locationId}/appointment' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY_HERE' \
  -d '{
    "appointmentTypeId": 333,
    "note": "Annual checkup",
    "patientId": 67890,
    "practitionerId": 222,
    "roomId": 1,
    "schedulerConfigId": 1,
    "startTime": "2025-01-15T09:00:00-05:00",
    "status": "CONFIRMED"
  }'

Responses

Appointment created successfully

Bodyapplication/json
appointmentTypeIdinteger, (int64)

Appointment type ID

Example:333
checkedInAtstring, (date-time)

Time the patient checked in (UTC, ISO 8601); null if not yet checked in

Example:"2025-01-15T14:00:00Z"
checkedOutAtstring, (date-time)

Time the patient checked out (UTC, ISO 8601); null if not yet checked out

Example:"2025-01-15T14:00:00Z"
confirmedAtstring, (date-time)

Time the appointment was confirmed (UTC, ISO 8601); null if not yet confirmed

Example:"2025-01-15T14:00:00Z"
createdAtstring, (date-time)

Creation timestamp (UTC)

Example:"2025-01-15T14:00:00Z"
durationMinutesinteger, (int32)

Duration in minutes

Example:30
endTimestring, (date-time)

Appointment end time (UTC, ISO 8601)

Example:"2025-01-15T14:30:00Z"
idinteger, (int64)

Unique appointment identifier

Example:12345
locationIdinteger, (int64)

Location ID

Example:111
notestring

Appointment notes

Example:"Annual checkup"
patientIdinteger, (int64)

Patient ID

Example:67890
practitionerIdinteger, (int64)

Practitioner ID (staff member with a practitioner role)

Example:222
roomIdinteger, (int64)

Room ID (set when appointment is IN_TREATMENT)

Example:1
roomInAtstring, (date-time)

Time the patient was brought into the room (UTC, ISO 8601); null if not set

Example:"2025-01-15T14:00:00Z"
startTimestring, (date-time)

Appointment start time (UTC, ISO 8601)

Example:"2025-01-15T14:00:00Z"
statusstring

Appointment status

Enum:"SCHEDULED""CONFIRMED""CHECKED_IN""IN_TREATMENT""CHECKED_OUT""CANCELLED""NO_SHOW"
Example:"SCHEDULED"
updatedAtstring, (date-time)

Last update timestamp (UTC)

Example:"2025-01-15T14:00:00Z"
Response
{ "appointmentTypeId": 333, "checkedInAt": "2025-01-15T14:00:00Z", "checkedOutAt": "2025-01-15T14:00:00Z", "confirmedAt": "2025-01-15T14:00:00Z", "createdAt": "2025-01-15T14:00:00Z", "durationMinutes": 30, "endTime": "2025-01-15T14:30:00Z", "id": 12345, "locationId": 111, "note": "Annual checkup", "patientId": 67890, "practitionerId": 222, "roomId": 1, "roomInAt": "2025-01-15T14:00:00Z", "startTime": "2025-01-15T14:00:00Z", "status": "SCHEDULED", "updatedAt": "2025-01-15T14:00:00Z" }