# How to Automate Google Meet Invites using the API

- Tool: API Automations
- Difficulty: Intermediate
- Fix time: 45–90 minutes
- Compatibility: Meet REST API v2, Google Calendar API v3, google-api-python-client 2.x, @googleapis/meet npm
- Last updated: May 2026

## TL;DR

There are two distinct paths to create Google Meet links via API — most tutorials conflate them. Path 1: Meet REST API spaces.create creates an ad-hoc meeting room with NO calendar event and NO invitations. Path 2: Calendar API events.insert with conferenceDataVersion=1 creates a calendar event WITH a Meet link and sends invitations. Service accounts cannot use Meet API directly — you MUST use Domain-Wide Delegation to impersonate a real user. The spaces.create endpoint has a strict reduced write quota of 100 per minute per project and only 10 per minute per user.

## Best practices

- Choose the right path: use Calendar API events.insert with conferenceDataVersion=1 when you need calendar invitations (bookings, scheduled calls), use Meet REST API spaces.create for ad-hoc links in chat tools or dashboards
- Always pass conferenceDataVersion=1 as a URL query parameter on events.insert and events.update — omitting it on an update call will REMOVE the existing Meet link from the event
- Use UUID v4 for the conferenceData.createRequest.requestId — this provides idempotency so retrying the same request returns the same conference rather than creating a duplicate
- Store the space name (spaces/abc123) not the meeting code — meeting codes expire after ~365 days of inactivity and may be recycled
- Check conferenceData.createRequest.status.statusCode in the events.insert response — if it is 'pending', wait and re-fetch the event rather than assuming the link is ready
- For Service Account automation, always use Domain-Wide Delegation with a real Workspace user identity — Meet API explicitly rejects service accounts acting as themselves
- Always use IANA timezone names (America/New_York, Europe/London) not abbreviations (EST, GMT) in calendar events — abbreviations cause 400 errors
- Subscribe to Workspace Events API with ttl='0s' for maximum duration, and set up automated renewal when you receive the expirationReminder event (12 hours before expiry)

## Frequently asked questions

### What is the difference between Meet REST API spaces.create and Calendar API with conferenceData?

spaces.create (Meet REST API) creates a standalone meeting room — you get a meet.google.com link but NO calendar event and NO invitations are sent to attendees. Calendar events.insert with conferenceDataVersion=1 creates a calendar event that includes a Meet conference link AND sends email invitations to all attendees. Use the Calendar path for scheduled meetings with invites; use spaces.create for ad-hoc links in dashboards or chat tools.

### Why isn't my Meet link being created even though I included conferenceData in the request body?

You're missing the conferenceDataVersion=1 URL query parameter. This parameter must be passed in the URL, not in the request body. Without it, the Calendar API silently ignores your conferenceData field and creates an event without a Meet link. In Python SDK: pass conferenceDataVersion=1 as a named parameter to events().insert(). In curl: add ?conferenceDataVersion=1 to the URL.

### Can I use a Service Account to create Google Meet spaces without requiring user login?

Not directly. Service accounts acting as themselves return permission errors for the Meet API. You must use Domain-Wide Delegation: create a Service Account, enable DWD in the Workspace Admin Console, and use with_subject() (Python) or clientOptions.subject (Node.js) to impersonate a real Workspace user. The service account then acts as that user for all Meet API calls.

### How long does a Google Meet space/link last?

Meeting spaces created via spaces.create have permanent meet.google.com links — they don't expire. However, the meeting code (the abc-mnop-xyz part of the URL) can expire approximately 365 days after the last meeting was held in that space. Always store and reference the space name (spaces/{spaceId}) in your system, not the meeting code. Calendar-based Meet links are tied to the calendar event and remain valid as long as the event exists.

### How do I know when a meeting has ended to trigger follow-up actions?

Subscribe to the google.workspace.meet.conference.v2.ended event type via the Workspace Events API with Cloud Pub/Sub delivery. First create a Pub/Sub topic, grant Publisher role to meet-api-event-push@system.gserviceaccount.com, then create a subscription targeting your meeting space. You'll receive a notification via Pub/Sub when the conference ends. The notification includes the conferenceRecord name which you can use to fetch participant data and recording locations.

### Can RapidDev help integrate Google Meet into my booking or CRM workflow?

Yes. If you need automated meeting scheduling — creating Meet links when customers book, sending customized invitations, and triggering CRM updates when meetings end — RapidDev can build that complete workflow. We handle the OAuth setup, conferenceDataVersion quirks, and Workspace Events integration so your team never has to manually schedule another call.

### Why do I get a 404 error when looking up a meeting by its code?

Meeting codes can expire after approximately 365 days of inactivity and may be reassigned. If you stored a meeting code and the space hasn't been used in over a year, the code may no longer resolve to your space. Always store and use the canonical spaces/{spaceId} name from the spaces.create response, not the meetingCode. The spaceId is permanent and does not expire.

---

Source: https://www.rapidevelopers.com/api-automations/how-to-automate-google-meet-invites-using-the-api
© RapidDev — https://www.rapidevelopers.com/api-automations/how-to-automate-google-meet-invites-using-the-api
