Send emails: video call invitation
- Sandbox: available
- Staging: available
- Production: unknown
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
emailRecipientstakes 1 to 20 entries. Each has anemailand aprofileRef(Practitioner/<id>orPatient/<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
isEmailSentisfalse. - The email includes the Appointment title, the practitioner's name, start and end in CET. The
Originheader 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
isEmailSentfor 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" }] }'bearerAuthorizationBearer <JWT>application/json- body
appointmentId*stringVideo call Appointment ID.
1 <= lengthemailRecipients*array<>List of email recipients.
1 <= items <= 20Summary of sent video call invitation emails.
application/json- response
appointmentId*stringVideo call Appointment ID.
1 <= lengthemailRecipientsResult*array<>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" } ]}'{ "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" }] }' ```