Video Call

Fetch user's video call Appointments

  • Sandbox: available
  • Staging: available
  • Production: unknown
GET
/video-call/livekit/appointment

Lists the video call Appointments in which the signed-in user is a participant, ordered by date.

Auth: bearer token. Any signed-in user can call it. Scope: the caller's project (from the token). Only Appointments that name the caller's own profile as a participant are returned.

Behaviour

  • Only Appointments created through the video call routes are returned.
  • startDate and endDate are optional. Each is a UTC date-time such as 2025-01-01T14:00:00Z, with an optional FHIR search prefix (eq, ne, lt, gt, ge, le, sa, eb, ap), for example ge2025-01-01T00:00:00Z. Each becomes a FHIR date search on the Appointment start.
  • The route has no paging. It returns every match in one response.

Example

curl -X GET 'https://api.sandbox.ovok.com/video-call/livekit/appointment?startDate=ge2026-01-01T12:00:00Z&endDate=le2026-01-02T12:00:00Z' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk'

Authorization

bearer
headerAuthorizationBearer <JWT>

Query Parameters

startDate?string

Video call appointment start date.

Match^(eq|ne|lt|gt|ge|le|sa|eb|ap)?\d\d\d\d-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(\.(\d{3}))?Z$
endDate?string

Video call appointment end date.

Match^(eq|ne|lt|gt|ge|le|sa|eb|ap)?\d\d\d\d-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(\.(\d{3}))?Z$

Response Body

User's video call Appointments.

application/json
  1. response
[index: integer]?
Example Request
curl -X GET 'https://api.sandbox.ovok.com/video-call/livekit/appointment'
Example Response
[  {    "id": "string",    "resourceType": "Appointment",    "status": "proposed",    "start": "2019-08-24T14:15:22Z",    "end": "2019-08-24T14:15:22Z",    "comment": "string",    "description": "string",    "videoCallParticipants": [      {        "email": "user@example.com",        "status": "accepted",        "profileRef": "string"      }    ],    "passphrase": "string"  }]

Create video call Ovok-user access POST

Creates a join link for a video call Appointment for the signed-in Ovok user. Use it when a Practitioner or Patient joins a call from an Ovok app. **Auth:** bearer token. The caller's profile must be a Practitioner or a Patient. A RelatedPerson is refused. **Scope:** the caller's project (from the token). ## Behaviour - A Practitioner can always join and joins as room admin. - A Patient can join only after a Practitioner has granted access to the Appointment. The grant is a `CommunicationRequest` that names the Patient as recipient. `POST /video-call/livekit/notification/active-call/{appointmentId}` creates it. Without it the route returns 401. - The display name in the call is the Practitioner's name, or for a Patient the user's email, or `user-<profile id>` when there is no email. - The token is valid from 1 hour before the request until 24 hours after it. Unlike guest access, it does not follow the Appointment times. - The response holds `videoCallUrl` (the full join link), `livekitJwt` and `passphrase`. ## Example ```bash curl -X POST 'https://api.sandbox.ovok.com/video-call/livekit/user-access/c3499c27-2973-0a7f-807e-fb8676a92dcb' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' ```

Create video call Appointment POST

Creates a video call Appointment with its participants. Use it before you invite participants or create join links. **Auth:** bearer token. The caller must be a Practitioner, an admin or a super admin, or hold the "System Owner" access policy. **Scope:** the caller's project (from the token). Participant accounts are looked up and created in that project. ## Behaviour - `start` and `end` are UTC date-times. `end` must be later than `start`. - Participants are identified by email. Duplicate emails are dropped. - For each email, a Practitioner account in the project is used if one exists. Otherwise a Patient account is used, and one is created if the email has none yet. - The Appointment must have at least one Practitioner participant. - Each participant gets a TAN (a one-time access code), valid from one hour before the request until one day after `end`. Invitation and update emails include it. - The Appointment gets a random passphrase. Join links include it, and you cannot set or change it. - Participants are stored with status `tentative`. The route sends no emails and creates no access permission. Use `POST /video-call/livekit/mail/invite` to email participants and `POST /video-call/livekit/notification/active-call/{appointmentId}` to let them join. ## Example ```bash curl -X POST 'https://api.sandbox.ovok.com/video-call/livekit/appointment' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' \ -H 'Content-Type: application/json' \ -d '{ "start": "2026-01-01T12:00:00Z", "end": "2026-01-02T12:00:00Z", "comment": "Check-up call", "description": "Follow-up appointment", "videoCallParticipants": [{ "email": "max.mustermann@example.com" }] }' ```