# Advanced video mode
Zoom Contact Center only
Customize your video client with advanced controls. For example, you can create your own button to start the video client and add actions to perform after the video has ended.
## VideoClient API
Use the following methods to create, initialize, and control the video client programmatically.
To create and initialize a video client, create a `VideoClient` instance and call `init()`, replacing `entryId` with your entry ID.
```javascript
new VideoClient({});
await videoClient.init({
entryId,
name: "name", // optional field, omit if not using, null value not accepted
});
```
To trigger the video flow, call `startVideo()`.
```javascript
videoClient.startVideo();
```
### VideoClient events
The video client supports these events:
| Event | Description |
| ------------------------ | --------------------------------- |
| `video-start` | Video started. |
| `video-end` | Video ended. |
| `notification-join-call` | User notified to join video. |
| `video-click-end` | User clicked button to end video. |
| `video-force-end` | User's video forcefully ended. |
| `task-created` | A task was created. |
## Custom video button
This code creates a custom button element, listens for clicks, and initializes and starts the video client when the button is clicked.
```html
create video