Video Call

Send emails: video call invitation

  • Sandbox: available
  • Staging: available
  • Production: unknown
POST
/video-call/livekit/mail/invite

Sends invitation emails for a video call Appointment to the recipients you list. The route does not change the Appointment.

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).

Behaviour

  • emailRecipients takes 1 to 20 entries. Each has an email and a profileRef (Practitioner/<id> or Patient/<id>). Duplicate emails are dropped.
  • The caller is never emailed, even when listed. If no recipient is left, the route returns an empty emailRecipientsResult.
  • The email contains the recipient's TAN (a one-time access code) and its expiry. A recipient with no TAN gets no email and isEmailSent is false.
  • The email includes the Appointment title, the practitioner's name, start and end in CET. The Origin header of your request sets the app domain used in the email, and the request language sets its language.
  • Emails are sent one by one. A failed send does not fail the request. Check isEmailSent for each recipient.

Example

curl -X POST 'https://api.sandbox.ovok.com/video-call/livekit/mail/invite' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' \  -H 'Content-Type: application/json' \  -d '{    "appointmentId": "c3499c27-2973-0a7f-807e-fb8676a92dcb",    "emailRecipients": [{      "email": "max.mustermann@example.com",      "profileRef": "Patient/c3499c27-2973-0a7f-807e-fb8676a92dcb"    }]  }'

Authorization

bearer
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
appointmentId*string

Video call Appointment ID.

Length1 <= length
emailRecipients*array<>

List of email recipients.

Items1 <= items <= 20

Response Body

Summary of sent video call invitation emails.

application/json
  1. response
appointmentId*string

Video call Appointment ID.

Length1 <= length
emailRecipientsResult*array<>
Example Request
curl -X POST 'https://api.sandbox.ovok.com/video-call/livekit/mail/invite' \  -H 'Content-Type: application/json' \  -d '{  "appointmentId": "string",  "emailRecipients": [    {      "email": "user@example.com",      "profileRef": "string"    }  ]}'
Example Response
{  "appointmentId": "string",  "emailRecipientsResult": [    {      "email": "user@example.com",      "profileRef": "string",      "isEmailSent": true    }  ]}

Update video call Appointment PUT

Replaces the time, title, description and participants of an existing video call Appointment. Use it to reschedule a call or change who is invited. **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). ## Behaviour - The Appointment is identified by the `appointmentId` path parameter. Any `id` in the body is ignored. - The body works like the create route: `end` must be later than `start`, participants are identified by email and deduplicated, and at least one must be a Practitioner. Unknown emails become Patient accounts. - The participant list is replaced by the one you send. Send everyone who should stay. - The passphrase of the Appointment does not change, so existing join links keep working. - New TANs are created for all participants on every update. - If the Appointment already has an access permission, its recipients are replaced by the new participant list. A Patient you add can therefore join without a second call to the active-call notification route. - The route sends no emails. Use `POST /video-call/livekit/mail/update` to tell participants about the change. ## Example ```bash curl -X PUT 'https://api.sandbox.ovok.com/video-call/livekit/appointment/c3499c27-2973-0a7f-807e-fb8676a92dcb' \ -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", "videoCallParticipants": [{ "email": "max.mustermann@example.com" }] }' ```

Send emails: video call update POST

Sends update emails for a video call Appointment to the recipients you list. The route does not change the Appointment. **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). ## Behaviour - `emailRecipients` takes 1 to 20 entries. Each has an `email` and a `profileRef` (`Practitioner/<id>` or `Patient/<id>`). Duplicate emails are dropped. - The caller is never emailed, even when listed. If no recipient is left, the route returns an empty `emailRecipientsResult`. - The email contains the recipient's TAN (a one-time access code) and its expiry. A recipient with no TAN gets no email and `isEmailSent` is `false`. - The email includes the Appointment title, the practitioner's name, start and end in CET. The `Origin` header of your request sets the app domain used in the email, and the request language sets its language. - Emails are sent one by one. A failed send does not fail the request. Check `isEmailSent` for each recipient. ## Example ```bash curl -X POST 'https://api.sandbox.ovok.com/video-call/livekit/mail/update' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' \ -H 'Content-Type: application/json' \ -d '{ "appointmentId": "c3499c27-2973-0a7f-807e-fb8676a92dcb", "emailRecipients": [{ "email": "max.mustermann@example.com", "profileRef": "Patient/c3499c27-2973-0a7f-807e-fb8676a92dcb" }] }' ```