A comprehensive guide for integrating Zoom with IzI Techs Co. services
IzI Techs Co. offers seamless integration with Zoom's powerful video conferencing platform. This integration allows you to:
To use the Zoom integration, you'll need:
Our Zoom integration uses OAuth 2.0 for secure authentication and the Zoom REST API for all operations. The integration operates as follows:
First, you'll need to create an OAuth app in the Zoom Marketplace:
https://your-izitechs-domain.com/api/zoom/callback
meeting:read
meeting:write
recording:read
user:read
Now, set up the integration in your IzI Techs dashboard:
For real-time updates from Zoom:
https://your-izitechs-domain.com/api/zoom/webhook
IzI Techs provides the following API endpoints for the Zoom integration:
Endpoint | Method | Description |
---|---|---|
/api/zoom/meetings |
GET | List all scheduled meetings |
/api/zoom/meetings |
POST | Create a new Zoom meeting |
/api/zoom/meetings/{id} |
GET | Get meeting details by ID |
/api/zoom/meetings/{id} |
PUT | Update a meeting |
/api/zoom/meetings/{id} |
DELETE | Delete a meeting |
/api/zoom/recordings |
GET | List all recordings |
/api/zoom/users |
GET | List all Zoom users |
Here's an example of creating a Zoom meeting:
// POST /api/zoom/meetings
{
"topic": "Strategy Meeting",
"type": 2, // Scheduled meeting
"start_time": "2025-09-15T10:00:00Z",
"duration": 60, // minutes
"timezone": "America/New_York",
"settings": {
"host_video": true,
"participant_video": true,
"join_before_host": false,
"mute_upon_entry": true,
"watermark": false,
"approval_type": 0,
"registration_type": 1,
"audio": "both",
"auto_recording": "cloud"
}
}
Successful responses return JSON with the following structure:
{
"success": true,
"data": {
// Response data varies by endpoint
},
"meta": {
// Pagination info, if applicable
}
}
Errors return with appropriate HTTP status codes and a JSON response:
{
"success": false,
"error": {
"code": "error_code",
"message": "Human-readable error message",
"details": {
// Additional error details, if available
}
}
}
Example of creating a meeting using the IzI Techs API:
const axios = require('axios');
async function createZoomMeeting() {
try {
const response = await axios.post(
'https://your-izitechs-domain.com/api/zoom/meetings',
{
topic: 'Project Kickoff',
type: 2, // Scheduled meeting
start_time: '2025-09-20T14:00:00Z',
duration: 45,
timezone: 'UTC',
settings: {
host_video: true,
participant_video: true,
join_before_host: false,
mute_upon_entry: true,
auto_recording: 'cloud'
}
},
{
headers: {
'Authorization': 'Bearer ' + YOUR_API_TOKEN,
'Content-Type': 'application/json'
}
}
);
console.log('Meeting created:', response.data);
return response.data;
} catch (error) {
console.error('Error creating meeting:', error.response.data);
throw error;
}
}
Example of fetching meetings using PHP:
<?php
function getZoomMeetings() {
$apiUrl = 'https://your-izitechs-domain.com/api/zoom/meetings';
$token = 'YOUR_API_TOKEN';
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $token,
'Content-Type: application/json'
]);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($statusCode === 200) {
return json_decode($response, true);
} else {
$error = json_decode($response, true);
throw new Exception('API Error: ' . $error['error']['message']);
}
}
?>
Example of updating a meeting using Python:
import requests
import json
def update_zoom_meeting(meeting_id, new_data):
api_url = f'https://your-izitechs-domain.com/api/zoom/meetings/{meeting_id}'
headers = {
'Authorization': f'Bearer {YOUR_API_TOKEN}',
'Content-Type': 'application/json'
}
try:
response = requests.put(
api_url,
headers=headers,
data=json.dumps(new_data)
)
response.raise_for_status()
return response.json()
except requests.exceptions.HTTPError as err:
print(f'HTTP Error: {err}')
print(f'Response: {response.text}')
raise
Example of handling a Zoom webhook in Node.js:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/api/zoom/webhook', (req, res) => {
const event = req.body;
// Verify webhook signature (implementation depends on Zoom webhook security)
switch (event.event) {
case 'meeting.started':
console.log(`Meeting started: ${event.payload.object.topic}`);
// Handle meeting started event
break;
case 'meeting.ended':
console.log(`Meeting ended: ${event.payload.object.topic}`);
// Handle meeting ended event
break;
case 'recording.completed':
console.log(`Recording ready for meeting: ${event.payload.object.topic}`);
// Handle new recording
break;
default:
console.log(`Unhandled event type: ${event.event}`);
}
// Acknowledge receipt of webhook
res.status(200).send();
});
Symptoms: 401 Unauthorized responses, "Invalid token" errors
Possible causes:
Solutions:
Symptoms: Webhook events not being received or processed
Possible causes:
Solutions:
Symptoms: Unable to create meetings, error responses from API
Possible causes:
Solutions:
meeting:write
scopeIf you continue to experience issues, please utilize the following resources: