Welcome to Zoom Video SDK

Zoom Video SDK enables developers to build custom video experiences with Zoom's core technology. Keep your existing user interface and let Zoom's global infrastructure power the real-time audio and video.

Start migrating with 10,000 free minutes per month.

Select a platform to start migrating from Twilio Programmable Video to Zoom Video SDK. Migrate as fast as 1 week per platform.

Read about some Twilio migration success stories.

Web migration example

Keep your existing user interface and simply swap out your Twilio Video code for Zoom Video SDK code. Migrate as fast as 1 week per platform.

// Twilio Video:
import * as TwilioVideo from "twilio-video";
var twilioVideo = TwilioVideo;
var twilioRoom;
twilioVideo.connect(TOKEN, { name: "yourName" }).then((room) => {
    twilioRoom = room;
});
// Zoom Video SDK:
import ZoomVideo from "@zoom/videosdk";
var zoomVideo = ZoomVideo.createClient();
var zoomSession;
zoomVideo.init("en-US", "Global", { patchJsMedia: true }).then(() => {
    zoomVideo
        .join("sessionName", TOKEN, "yourName", "sessionPasscode")
        .then(() => {
            zoomSession = zoomVideo.getMediaStream();
        });
});
// Twilio Video:
// Start:
twilioVideo
    .createLocalVideoTrack({
        height: { ideal: 720, min: 480, max: 1080 },
        width: { ideal: 1280, min: 640, max: 1920 },
        aspectRatio: 16 / 9,
    })
    .then((localVideoTrack) => {
        twilioRoom.localParticipant.publishTrack(localVideoTrack);
        const localMediaContainer = document.getElementById(
            "twilio-self-view-div",
        );
        localMediaContainer.appendChild(localVideoTrack.attach());
    });
// Stop:
twilioRoom.localParticipant.videoTracks.forEach((publication) => {
    publication.unpublish();
    publication.track.stop();
    var selfTwilioVideo = document.getElementById("twilio-self-view-div");
    selfTwilioVideo.querySelector("video").remove();
});
// Zoom Video SDK:
// Start:
zoomSession.startVideo().then(() => {
    zoomSession
        .attachVideo(zoomVideo.getCurrentUserInfo().userId, RESOLUTION)
        .then((userVideo) => {
            document
                .querySelector("video-player-container")
                .appendChild(userVideo);
        });
});
// Stop:
zoomSession.stopVideo().then(() => {
    zoomSession.detachVideo(USER_ID);
});
// Twilio Video:
twilioRoom.on("participantConnected", (participant) => {
    participant.on("trackSubscribed", (track) => {
        document
            .getElementById("twilio-user-view-div")
            .appendChild(track.attach());
    });
    participant.on("trackUnsubscribed", (track) => {
        var selfTwilioVideo = document.getElementById("twilio-user-view-div");
        selfTwilioVideo.querySelector("video").remove();
    });
});
// Zoom Video SDK:
zoomVideo.on("peer-video-state-change", (payload) => {
    if (payload.action === "Start") {
        zoomSession.attachVideo(payload.userId, 3).then((userVideo) => {
            document
                .querySelector("video-player-container")
                .appendChild(userVideo);
        });
    } else if (payload.action === "Stop") {
        zoomSession.detachVideo(payload.userId);
    }
});
// Twilio Video:
// Start Audio:
twilioVideo.createLocalAudioTrack().then((localAudioTrack) => {
    twilioRoom.localParticipant.publishTrack(localAudioTrack);
    const audioElement = localAudioTrack.attach();
    document.body.appendChild(audioElement);
});
// Unmute:
twilioRoom.localParticipant.audioTracks.forEach((publication) => {
    publication.track.enable();
});
// Mute:
twilioRoom.localParticipant.audioTracks.forEach((publication) => {
    publication.track.disable();
});
// Zoom Video SDK:
// Start Audio:
zoomSession.startAudio();
// Unmute:
zoomSession.unmuteAudio();
// Mute:
zoomSession.muteAudio();
// Twilio Video:
twilioVideo.disconnect();
// Zoom Video SDK:
zoomVideo.leave();

Feature map

The Zoom Video SDK has complete feature parity with the Twilio Video platform, plus many additional features to build with. This is not just a 1:1 migration, it's access to even more possibilities.

Migration services

Migrate faster with Zoom's support options.

Read more

Get started

Get started with the official migration guides. For questions, contact us.

See Video SDK Plans & Pricing.