# ovok.videoCalls

Canonical page: https://docs.ovok.com/web-sdk/core/namespaces/videocalls

`ovok.videoCalls` covers the LiveKit video-call routes under `video-call/livekit`: appointments, access to a call and invitation emails. Practitioner and patient apps call it with a signed-in user; guests get access through an invite.

## Schedule a call [#schedule-a-call]

```ts
const appointment = await ovok.videoCalls.appointments.create({
  start: '2026-11-02T10:00:00Z',
  end: '2026-11-02T10:30:00Z',
  comment: 'Follow-up',
  videoCallParticipants: [{ email: 'patient@example.com' }],
});

const upcoming = await ovok.videoCalls.appointments.list();
```

- `list` resolves to an array and takes a query.
- `update(appointmentId, body)` replaces the appointment, so send the full body.

## Get access to a call [#get-access-to-a-call]

```ts
const permission = await ovok.videoCalls.access.permission(appointmentId);

const access = await ovok.videoCalls.access.createUser(appointmentId);
console.log(access.videoCallUrl, access.livekitJwt, access.passphrase);
```

- `permission` returns how the server says the caller may join.
- `createUser` is for the signed-in user. `createGuest(appointmentId, { guestEmail })` creates guest access.

## Email participants [#email-participants]

```ts
await ovok.videoCalls.emails.invite({
  appointmentId,
  emailRecipients: [{ email: 'patient@example.com', profileRef: 'Patient/123' }],
});
```

- `invite`, `update` and `cancel` take the same body.
- `ovok.videoCalls.notifyActive(appointmentId)` tells the server a call is active.

## Reference [#reference]

- [videoCalls API reference](/web-sdk/core/reference/core/videocalls): every method and type.
- [Errors and retries](/web-sdk/core/errors-and-retries)
