curl -X GET "https://app.medisync.me/api/appointments/get/65f8a1b2c3d4e5f6789012ef" \
-H "Authorization: Bearer <JWT>"
{
"success": true,
"data": {
"_id": "65f8a1b2c3d4e5f6789012ef",
"name": "Allgemeine Beratung",
"date": "2026-07-15T00:00:00.000Z",
"time": "14:30",
"recording_id": "rec_123",
"recording_url": "https://storage.example.com/recording.mp3",
"recording_key": "recordings/rec_123.mp3",
"status": "finished",
"error_reason": null,
"doctor_id": "65f0a1b2c3d4e5f678901234",
"notes": "...",
"language": "de",
"notes_type": null,
"appointment_type": "in_person",
"room": null,
"duration_minutes": 30,
"deletionDate": "2026-07-29T00:00:00.000Z",
"case_id": null,
"booking_status": "none",
"booking": null,
"createdAt": "2026-07-02T09:12:00.000Z",
"updatedAt": "2026-07-02T10:01:00.000Z",
"__v": 0
}
}
Appointments
Get Appointment
Retrieve a single appointment you own by its ID
GET
/
appointments
/
get
/
{id}
curl -X GET "https://app.medisync.me/api/appointments/get/65f8a1b2c3d4e5f6789012ef" \
-H "Authorization: Bearer <JWT>"
{
"success": true,
"data": {
"_id": "65f8a1b2c3d4e5f6789012ef",
"name": "Allgemeine Beratung",
"date": "2026-07-15T00:00:00.000Z",
"time": "14:30",
"recording_id": "rec_123",
"recording_url": "https://storage.example.com/recording.mp3",
"recording_key": "recordings/rec_123.mp3",
"status": "finished",
"error_reason": null,
"doctor_id": "65f0a1b2c3d4e5f678901234",
"notes": "...",
"language": "de",
"notes_type": null,
"appointment_type": "in_person",
"room": null,
"duration_minutes": 30,
"deletionDate": "2026-07-29T00:00:00.000Z",
"case_id": null,
"booking_status": "none",
"booking": null,
"createdAt": "2026-07-02T09:12:00.000Z",
"updatedAt": "2026-07-02T10:01:00.000Z",
"__v": 0
}
}
Overview
Fetches one appointment by its id. Access is owner-only: the appointment’sdoctor_id must match the authenticated caller, otherwise a 403 Forbidden is
returned.
Authentication
string
required
Bearer token for authenticated access.
Authorization: Bearer <JWT>
Path Parameters
string
required
Appointment ObjectId. Must be a 24-character hex ObjectId — a malformed value
fails with a
400 cast error.Response
boolean
Whether the request succeeded.
object
The appointment object.
Show Appointment Object
Show Appointment Object
string
Unique appointment identifier (ObjectId).
string
Appointment title.
string
Appointment date, serialized as a full ISO datetime
(e.g.
2026-07-15T00:00:00.000Z).string
Wall-clock time,
HH:mm.string
Associated recording id, if any.
string
URL to the recording, if any.
string
Recording storage key, if any.
string
Recording lifecycle status. Common values:
planned, recording,
transcribing, processing, finished, error, error_transcription,
audio_upload_failed. Not strictly enforced — treat unknown values as
opaque.string | null
Human-readable reason when processing failed; otherwise
null.string
Owning doctor’s user id.
string
Private clinical notes.
string
Language code used for note generation. Default
de.string | null
Notes template key. Default
null (the service selects a template).string
Free-form appointment type. Default
in_person.string | null
Room / location label, or
null when none is assigned.number | null
Appointment duration in minutes, or
null when unset.string
ISO datetime at which the appointment is scheduled for automatic deletion.
string | null
Case grouping id for follow-up linking, or
null.string
Booking lifecycle state (a separate axis from
status). Default none.object | null
Booking subdocument for appointments that carry booking metadata,
otherwise
null.string
ISO creation timestamp.
string
ISO last-update timestamp.
number
Internal document version.
Additional fields may appear on the appointment object depending on how it was
created. Treat any field not documented here as opaque.
Example Request
curl -X GET "https://app.medisync.me/api/appointments/get/65f8a1b2c3d4e5f6789012ef" \
-H "Authorization: Bearer <JWT>"
Example Response
{
"success": true,
"data": {
"_id": "65f8a1b2c3d4e5f6789012ef",
"name": "Allgemeine Beratung",
"date": "2026-07-15T00:00:00.000Z",
"time": "14:30",
"recording_id": "rec_123",
"recording_url": "https://storage.example.com/recording.mp3",
"recording_key": "recordings/rec_123.mp3",
"status": "finished",
"error_reason": null,
"doctor_id": "65f0a1b2c3d4e5f678901234",
"notes": "...",
"language": "de",
"notes_type": null,
"appointment_type": "in_person",
"room": null,
"duration_minutes": 30,
"deletionDate": "2026-07-29T00:00:00.000Z",
"case_id": null,
"booking_status": "none",
"booking": null,
"createdAt": "2026-07-02T09:12:00.000Z",
"updatedAt": "2026-07-02T10:01:00.000Z",
"__v": 0
}
}
Error Responses
{
"success": false,
"error": "Appointment not found"
}
{
"success": false,
"error": "Forbidden"
}
{
"success": false,
"error": "Cast to ObjectId failed for value \"abc\" (type string) at path \"_id\" for model \"Appointment\""
}
{
"success": false,
"message": "Unauthorized"
}
403 Forbidden is returned when the appointment exists but is owned by a
different doctor. A missing or invalid Bearer token returns 401 with a
message key. A session revoked by a sign-in elsewhere returns 401 with
"code": "SESSION_REVOKED".