DEV Community

Alex Spinov
Alex Spinov

Posted on

Zoom Has a Free Video API — Build Video Meetings Into Your App Without WebRTC Headaches

Zoom Has a Free Video API — Build Video Meetings Into Your App Without WebRTC Headaches

Building real-time video from scratch means wrestling with WebRTC, TURN servers, codec negotiation, and scaling. Zoom's API lets you embed video meetings in your app with a few API calls.

Free Tier (Basic Plan)

  • 100 participants per meeting
  • 40-minute group meetings
  • Unlimited 1:1 meetings
  • Local recording
  • REST API access
  • Webhooks

REST API: Create a Meeting

const response = await fetch('https://api.zoom.us/v2/users/me/meetings', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer your-jwt-token',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    topic: 'Weekly Standup',
    type: 2, // Scheduled meeting
    start_time: '2026-04-01T09:00:00Z',
    duration: 30,
    settings: {
      join_before_host: true,
      mute_upon_entry: true,
      auto_recording: 'cloud',
      waiting_room: false
    }
  })
});

const meeting = await response.json();
console.log('Join URL:', meeting.join_url);
console.log('Meeting ID:', meeting.id);
console.log('Passcode:', meeting.password);
Enter fullscreen mode Exit fullscreen mode

Webhooks

app.post('/webhooks/zoom', (req, res) => {
  const { event, payload } = req.body;

  switch (event) {
    case 'meeting.started':
      console.log('Meeting started:', payload.object.topic);
      break;
    case 'meeting.participant_joined':
      console.log('Joined:', payload.object.participant.user_name);
      break;
    case 'meeting.ended':
      console.log('Duration:', payload.object.duration, 'minutes');
      console.log('Participants:', payload.object.participants_count);
      break;
    case 'recording.completed':
      console.log('Recording ready:', payload.object.recording_files[0].download_url);
      break;
  }
  res.sendStatus(200);
});
Enter fullscreen mode Exit fullscreen mode

Zoom SDK (Embed in Your App)

// Initialize Zoom Meeting SDK
const client = ZoomMtg.createClient();

client.init({
  zoomAppRoot: document.getElementById('zoom-root'),
  language: 'en-US',
  customize: {
    video: { isResizable: true, viewSizes: { default: { width: 1000, height: 600 } } }
  }
});

client.join({
  sdkKey: 'your-sdk-key',
  signature: 'generated-signature',
  meetingNumber: '123456789',
  password: 'meeting-password',
  userName: 'Developer'
});
Enter fullscreen mode Exit fullscreen mode

The Bottom Line

Zoom's API turns video meetings from a standalone tool into a feature of your app. Schedule meetings, track attendance, and get recordings — all programmatically.


Need to extract meeting data, monitor webinar schedules, or automate video workflows? I create custom solutions.

📧 Email me: spinov001@gmail.com
🔧 My tools: Apify Store

Top comments (0)