B2 TheW
04/02/2025, 7:40 PMVapi Support Bot
04/02/2025, 7:41 PMgoogle_calendar_tool
, though I'd like to clarify a few details to give you more specific instructions.
For adding a Google Meet link, it appears you can set up a virtual meeting by using these parameters:
- Set "type": "virtual"
- Set "location": "virtual"
- Include "description": "Google meet call - not in person"
For attendees, I found that "attendee name" is mentioned as a necessary parameter when scheduling appointments, but I don't have the exact format for adding multiple attendees.
Could you share what you've tried so far with the google_calendar_tool
configuration? Also, are you trying to add multiple attendees or just one? This would help me provide more targeted assistance.
Sources:
- [Virtual Events with Google Meet Links](https://discord.com/channels/1211482211119796234/1211483291191083018/threads/1333753317490294836)
- [Attendee Name as a Parameter](https://discord.com/channels/1211482211119796234/1211483291191083018/threads/1336345690393149452)B2 TheW
04/02/2025, 7:44 PMMistermanu#000
04/02/2025, 10:36 PMB2 TheW
04/02/2025, 11:32 PMMistermanu#000
04/03/2025, 4:01 AMVapi
04/06/2025, 9:20 AMB2 TheW
04/07/2025, 7:36 PMShubham Bajaj
04/09/2025, 1:49 AMattendees
array in your event data. Each attendee should be an object with at least the email
property:
javascript
"attendees": [
{
"email": "attendee1@example.com",
"responseStatus": "needsAction"
},
{
"email": "attendee2@example.com",
"responseStatus": "needsAction"
}
]
The responseStatus
is required and typically set to "needsAction"
for new invitations.
## 2. Adding Google Meet Integration
To automatically generate a Google Meet link for your event, you need to:
1. Add a conferenceData
object with a createRequest
2. Include the conferenceDataVersion
parameter set to 1
Here's how to set up the conferenceData object:
javascript
"conferenceData": {
"createRequest": {
"requestId": "some-unique-id", // Generate a unique ID for each request
"conferenceSolutionKey": {
"type": "hangoutsMeet"
}
}
}
## 3. Complete Event Object Example
Here's a complete example of how your calendar event object should look with both attendees and Google Meet integration:
javascript
{
"summary": "Meeting Title",
"description": "Meeting description",
"start": {
"dateTime": "2024-05-30T10:00:00-07:00",
"timeZone": "America/Los_Angeles"
},
"end": {
"dateTime": "2024-05-30T11:00:00-07:00",
"timeZone": "America/Los_Angeles"
},
"attendees": [
{
"email": "attendee1@example.com",
"responseStatus": "needsAction"
},
{
"email": "attendee2@example.com",
"responseStatus": "needsAction"
}
],
"conferenceData": {
"createRequest": {
"requestId": "meeting-123456", // Use a unique ID for each meeting
"conferenceSolutionKey": {
"type": "hangoutsMeet"
}
}
}
}
## 4. Important Notes and Requirements
1. **conferenceDataVersion parameter**: When calling the Google Calendar API, you must include the conferenceDataVersion=1
parameter. This is crucial for the Google Meet link to be generated.
2. **Google Workspace subscription**: Creating Google Meet links programmatically typically requires an active Google Workspace subscription.
3. **Auth scope requirements**: Ensure your OAuth scope includes https://www.googleapis.com/auth/calendar
for full access or https://www.googleapis.com/auth/calendar.events
for event management only.
4. **Permissions**: The account making the API calls must have permissions to create events and conferencing data in the specified calendar.
5. **Unique requestId**: Always generate a new, unique requestId
for each request to avoid duplicates.
## 5. Implementation in Your Application
When implementing this in your application that uses the Vapi google_calendar_tool:
1. Collect the email addresses of attendees from your users
2. Generate a unique ID for the conference request
3. Include these parameters in your calendar event creation call
4. Make sure to include the conferenceDataVersion=1
parameter
After the event is created, the hangoutLink
field in the response will contain the Google Meet URL that you can share with participants.Shubham Bajaj
04/09/2025, 1:49 AMMistermanu#000
04/09/2025, 3:00 AMUnsupported calendar provider: ${integration.provider}
}, { status: 400 });
}
} catch (error) {
console.error('Unexpected error in add-event route:', error);
return NextResponse.json({
error: Failed to add event: ${String(error)}
}, { status: 500 });
}`
Then I do some authentication or token refresh if need be and pass the event info to Google's API:
const calendar = google.calendar({ version: 'v3', auth: oauth2Client });
// Add Google-specific properties
const event = {
...eventData,
conferenceData,
};
try {
// Insert the event
const response = await calendar.events.insert({
calendarId,
requestBody: event,
sendUpdates: 'all', // Send email notifications to attendees
conferenceDataVersion: conferenceData ? 1 : 0, // Enable Google Meet integration if requested
});
return NextResponse.json({
success: true,
event: response.data
});
B2 TheW
04/09/2025, 11:22 PMVapi
04/10/2025, 11:17 PMB2 TheW
04/11/2025, 6:23 PMB2 TheW
04/11/2025, 6:30 PMVapi
04/11/2025, 10:09 PMB2 TheW
04/12/2025, 8:18 PMB2 TheW
04/12/2025, 8:18 PMB2 TheW
04/13/2025, 8:32 PMVapi
04/14/2025, 6:19 AM