Troubleshooting
If requests fail, run zero doctor check-connector --env-name GOOGLE_MEET_TOKEN or zero doctor check-connector --url https://meet.googleapis.com/v2/spaces --method POST
How to Use
Base URL: https://meet.googleapis.com/v2
Spaces
A Space is a virtual place where conferences are held. Only one active conference can run in a space at a time.
Create a Meeting Space
Create a new meeting space with a generated Meet link:
curl -s -X POST "https://meet.googleapis.com/v2/spaces" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" \
--header "Content-Type: application/json" \
-d '{}' | jq '{name, meetingUri, meetingCode}'
Create with custom access configuration. Write to /tmp/meet_request.json:
{
"config": {
"accessType": "TRUSTED",
"entryPointAccess": "ALL",
"attendanceReportGenerationType": "GENERATE_AUTOMATICALLY"
}
}
Then run:
curl -s -X POST "https://meet.googleapis.com/v2/spaces" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" \
--header "Content-Type: application/json" \
-d @/tmp/meet_request.json | jq '{name, meetingUri, meetingCode, config}'
Get a Meeting Space
Get details for a space by name or meeting code:
curl -s "https://meet.googleapis.com/v2/spaces/{space-name}" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '{name, meetingUri, meetingCode, config, activeConference}'
You can also use the meeting code (e.g. abc-mnop-xyz) as the space identifier:
curl -s "https://meet.googleapis.com/v2/spaces/{meeting-code}" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '{name, meetingUri, meetingCode}'
Update a Meeting Space
Patch space configuration. Write to /tmp/meet_request.json:
{
"config": {
"accessType": "OPEN"
}
}
Then run:
curl -s -X PATCH "https://meet.googleapis.com/v2/spaces/{space-name}?updateMask=config.accessType" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" \
--header "Content-Type: application/json" \
-d @/tmp/meet_request.json | jq '{name, meetingUri, config}'
Available accessType values:
OPEN— Anyone with the link can joinTRUSTED— Only trusted users (those in same org or explicitly invited)RESTRICTED— Only explicitly invited users
End an Active Conference
End the active conference in a meeting space:
curl -s -X POST "https://meet.googleapis.com/v2/spaces/{space-name}:endActiveConference" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" \
--header "Content-Type: application/json" \
-d '{}'
Conference Records
A ConferenceRecord represents a single instance of a meeting held in a space.
List Conference Records
List all past conference records (most recent first):
curl -s "https://meet.googleapis.com/v2/conferenceRecords?pageSize=20" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.conferenceRecords[]? | {name, startTime, endTime, space}'
Filter to records for a specific space:
curl -s "https://meet.googleapis.com/v2/conferenceRecords?filter=space%3D%22spaces%2F{space-name}%22&pageSize=10" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.conferenceRecords[]? | {name, startTime, endTime}'
Filter to only ongoing conferences:
curl -s "https://meet.googleapis.com/v2/conferenceRecords?filter=end_time%20IS%20NULL" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.conferenceRecords[]? | {name, startTime, space}'
Get a Conference Record
Get details for a specific conference record:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '{name, startTime, endTime, expireTime, space}'
Participants
List Participants in a Conference
List all participants in a conference record:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/participants?pageSize=100" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.participants[]? | {name, earliestStartTime, latestEndTime}'
List only active (currently connected) participants:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/participants?filter=latest_end_time%20IS%20NULL" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.participants[]? | {name, earliestStartTime}'
Get a Participant
Get details for a specific participant:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/participants/{participant-id}" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.'
List Participant Sessions
Get the individual sessions (join/leave events) for a participant:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/participants/{participant-id}/participantSessions" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.participantSessions[]? | {name, startTime, endTime}'
Recordings
List Recordings
List all recordings for a conference record:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/recordings" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.recordings[]? | {name, startTime, endTime, state}'
Get a Recording
Get details for a specific recording (includes Drive file info):
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/recordings/{recording-id}" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '{name, state, startTime, endTime, driveDestination}'
The driveDestination field contains the Google Drive file ID and export URI for downloading the recording.
Transcripts
List Transcripts
List all transcripts for a conference record:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/transcripts" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.transcripts[]? | {name, startTime, endTime, state}'
Get a Transcript
Get details for a specific transcript:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/transcripts/{transcript-id}" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '{name, state, startTime, endTime, docsDestination}'
The docsDestination field contains the Google Docs export ID and URI for the transcript document.
List Transcript Entries
List the individual spoken segments in a transcript:
curl -s "https://meet.googleapis.com/v2/conferenceRecords/{conference-record-id}/transcripts/{transcript-id}/entries?pageSize=100" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.entries[]? | {name, participant, text, startTime, endTime}'
Common Patterns
Get the Latest Meeting Record for a Space
curl -s "https://meet.googleapis.com/v2/conferenceRecords?filter=space%3D%22spaces%2F{space-name}%22&pageSize=1" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.conferenceRecords[0] | {name, startTime, endTime}'
Check if a Meeting is Currently Active
curl -s "https://meet.googleapis.com/v2/spaces/{space-name}" \
--header "Authorization: Bearer $GOOGLE_MEET_TOKEN" | jq '.activeConference'
Returns null if no active conference, or the conference record details if one is ongoing.
Guidelines
- Space naming: Spaces use the format
spaces/{space}where{space}is a server-generated ID (e.g.jQCFfuBOdN5z). You can also use the friendly meeting code (e.g.abc-mnop-xyz) as an alias. - Conference record IDs: Use the format
conferenceRecords/{conferenceRecord}as the parent path for participants, recordings, and transcripts. - Ongoing vs ended: Ongoing conferences have
endTimeunset. Use theend_time IS NULLfilter to find active meetings. - Pagination: Use
pageTokenfromnextPageTokenin responses to fetch subsequent pages. - Recordings and transcripts: These are generated asynchronously. Check the
statefield —ACTIVEmeans generating,ENDEDmeans complete. - Drive and Docs integration: Recordings link to Google Drive files; transcripts link to Google Docs. Use the Drive or Docs skill to access these artifacts.
- updateMask: When PATCHing a space, specify
updateMaskas a comma-separated list of dot-notation field paths to avoid overwriting unintended fields.
API Reference
- REST Reference: https://developers.google.com/workspace/meet/api/reference/rest/v2
- Spaces: https://developers.google.com/workspace/meet/api/reference/rest/v2/spaces
- Conference Records: https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords
- Participants: https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.participants
- Recordings: https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings
- Transcripts: https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts
- OAuth Scopes: https://developers.google.com/workspace/meet/api/reference/rest/v2/oauth-overview