Add polls, Q&A, and reactions to any V100 meeting with a few API calls.
// npm install v100-sdk
import { V100 } from 'v100-sdk';
const v100 = new V100('YOUR_API_KEY');
// Create a meeting with interactive features enabled
const meeting = await v100.meetings.create({
name: 'Product All-Hands',
interactive: {
polls: true,
qa: true,
handRaise: true,
reactions: true,
anonymous: true // Allow anonymous poll votes
}
});
// Launch a multiple choice poll
const poll = await v100.polls.create(meeting.id, {
type: 'multiple_choice',
question: 'Which feature should we prioritize for Q3?',
options: [
'Mobile app redesign',
'API v2 launch',
'Enterprise SSO',
'Performance optimization'
],
multiSelect: false,
timerSeconds: 60, // Auto-close after 60s
showResultsLive: true // Show results as votes arrive
});
// Launch a word cloud poll
const wordCloud = await v100.polls.create(meeting.id, {
type: 'word_cloud',
question: 'Describe our product in one word',
maxWords: 3,
timerSeconds: 45
});
// Enable Q&A with upvoting
const qa = await v100.qa.enable(meeting.id, {
moderation: true, // Moderator approves before visible
upvoting: true,
sortBy: 'upvotes', // 'upvotes' | 'time' | 'status'
anonymous: true
});
// Listen for real-time events
v100.on('poll.vote', (event) => {
console.log(`Vote on ${event.pollId}: ${event.optionIndex}`);
});
v100.on('qa.question', (event) => {
console.log(`New Q: ${event.text} (${event.upvotes} upvotes)`);
});
// Export all interaction data after meeting
const exportData = await v100.meetings.exportInteractions(meeting.id, {
format: 'json', // 'json' | 'csv'
include: ['polls', 'qa', 'reactions', 'handRaises']
});