Initialization

import { coss } from '@coss';
coss.video.init({
apiKey: process.env.COSS_KEY,
environment: 'production', // or 'sandbox'
});

Rooms

// Create a room
await coss.video.rooms.create({
name: 'team-sync-0422',
privacy: 'private',
config: {
enableChat: true,
enableRecording: false,
maxParticipants: 10,
},
});
// List rooms
await coss.video.rooms.list();
// Retrieve room details
await coss.video.rooms.retrieve('team-sync-0422');
// Update room settings
await coss.video.rooms.update('team-sync-0422', {
config: { enableRecording: true },
});
// Delete a room
await coss.video.rooms.delete('team-sync-0422');

Tokens

// Generate a join token
const token = await coss.video.tokens.create({
roomName: 'team-sync-0422',
userId: 'user_abc123',
role: 'host',
exp: Math.floor(Date.now() / 1000) + 60 * 60,
});

Participants

// List participants
await coss.video.participants.list('team-sync-0422');
// Kick a participant
await coss.video.participants.remove('team-sync-0422', 'user_abc123');
// Get participant history
await coss.video.participants.history({
roomName: 'team-sync-0422',
userId: 'user_abc123',
});

Recordings

// Start recording
await coss.video.recordings.start('team-sync-0422');
// Stop recording
await coss.video.recordings.stop('team-sync-0422');
// List past recordings
await coss.video.recordings.list();
// Retrieve a recording
await coss.video.recordings.retrieve('rec_abc123');
// Delete a recording
await coss.video.recordings.delete('rec_abc123');

Webhooks

// Webhook events
coss.video.webhooks.on('room.started', (event) => {
console.log(`Room started: ${event.data.roomName}`);
});
coss.video.webhooks.on('participant.joined', (event) => {
const { userId, roomName } = event.data;
console.log(`${userId} joined ${roomName}`);
});
// Other events:
// room.ended, participant.left, recording.started, recording.stopped

Utilities

// Validate webhook signature
const isValid = coss.video.utils.verifySignature({
payload: req.body,
signature: req.headers['coss-video-signature'],
secret: 'whsec_video_123',
});

Bonus - Meeting URL Generator

// Generate a meeting URL
const meetingUrl = coss.video.utils.generateJoinUrl({
roomName: 'team-sync-0422',
token,
});
Join the waitlistJoin the company