Work with participants
Stay organized with collections
Save and categorize content based on your preferences.
This guide explains how to get details about participants who attended a past conference or who are in an active conference, along with their session info, using the Google Meet REST API.
A participant is a person joined to a
call or that uses Companion
mode, watching as a viewer, or
a room device connected to a call. There's one
participants
resource for each person.
A participant session is a
unique session ID created for each participant-device pair that joins a call.
There's one
participantSessions
resource for each session. If the participant joins the same call multiple times
from the same participant-device pair, they're each assigned unique session IDs.
If you're a meeting space owner or participant, you can call the get()
and
list()
methods on both the participants
and the participantSessions
resources to retrieve participant records.
Authenticating and authorizing with user credentials lets Google Meet apps access user data and perform operations on the authenticated user's behalf. Authenticating with domain-wide delegation lets you authorize an application's service account to access your users' data without requiring each user to give consent.
Participants
The following sections detail how to get information about participants in a conference record.
The participants
resource unions with the user
field. A user
can be only one of the following
objects:
A
signedinUser
is either:An individual joining from a personal computer, a mobile device, or through Companion mode.
A robot account used by conference room devices.
An
anonymousUser
is an unidentified user who's not signed in to a Google Account.A
phoneUser
is a user dialing in from a phone where the user's identity is unknown because they haven't signed in with a Google Account.
Note that while all three objects return a displayName
, signedinUser
also
returns a unique user
ID that's interoperable with the Admin SDK API and the
People API. Format: users/{user}
. For more information on using the user
ID with the People API, see Retrieve participant details with the
People API.
Get details about a participant
To get details about a specific participant, use the
get()
method
on the
participants
resource with the name
path parameter. If you don't know the participant name,
you can list all participant names using the list()
method.
The method returns a participant data as an instance of a participants
resource.
The following code sample shows how to retrieve a specific participant:
Java
importcom.google.api.core.ApiFuture; importcom.google.apps.meet.v2.ConferenceRecordsServiceClient; importcom.google.apps.meet.v2.GetParticipantRequest; importcom.google.apps.meet.v2.Participant; importcom.google.apps.meet.v2.ParticipantName; publicclass AsyncGetParticipant{ publicstaticvoidmain(String[]args)throwsException{ asyncGetParticipant(); } publicstaticvoidasyncGetParticipant()throwsException{ // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. // - It may require specifying regional endpoints when creating the service client as shown in // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library try(ConferenceRecordsServiceClientconferenceRecordsServiceClient= ConferenceRecordsServiceClient.create()){ GetParticipantRequestrequest= GetParticipantRequest.newBuilder() .setName(ParticipantName.of("[CONFERENCE_RECORD]","[PARTICIPANT]").toString()) .build(); ApiFuture<Participant>future= conferenceRecordsServiceClient.getParticipantCallable().futureCall(request); // Do something. Participantresponse=future.get(); } } }
Node.js
/** * This snippet has been automatically generated and should be regarded as a code template only. * It will require modifications to work. * It may require correct/in-range values for request initialization. * TODO(developer): Uncomment these variables before running the sample. */ /** * Required. Resource name of the participant. */ // const name = 'abc123' // Imports the Meet library const{ConferenceRecordsServiceClient}=require('@google-apps/meet').v2; // Instantiates a client constmeetClient=newConferenceRecordsServiceClient(); asyncfunctioncallGetParticipant(){ // Construct request constrequest={ name, }; // Run request constresponse=awaitmeetClient.getParticipant(request); console.log(response); } callGetParticipant();
Python
# This snippet has been automatically generated and should be regarded as a # code template only. # It will require modifications to work: # - It may require correct/in-range values for request initialization. # - It may require specifying regional endpoints when creating the service # client as shown in: # https://googleapis.dev/python/google-api-core/latest/client_options.html fromgoogle.appsimport meet_v2 async defsample_get_participant(): # Create a client client = meet_v2.ConferenceRecordsServiceAsyncClient() # Initialize request argument(s) request = meet_v2.GetParticipantRequest( name="name_value", ) # Make the request response = await client.get_participant(request=request) # Handle the response print(response)
Replace the participant name with the name of the specific participant ID in a conference record.
List all participants
To list details about all participants in a conference record, use the
list()
method on the
participants
resource with the parent
path parameter. Format:
conferenceRecords/{conferenceRecord}
.
The method returns a list of conference participants, ordered by
earliestStartTime
in descending order, as an instance of a participants
resource. To adjust the page size and filter the query results, see Customize
pagination or filter the participants list.
The following code sample shows how to list all participants in a conference record:
Java
importcom.google.api.core.ApiFuture; importcom.google.apps.meet.v2.ConferenceRecordName; importcom.google.apps.meet.v2.ConferenceRecordsServiceClient; importcom.google.apps.meet.v2.ListParticipantsRequest; importcom.google.apps.meet.v2.Participant; publicclass AsyncListParticipants{ publicstaticvoidmain(String[]args)throwsException{ asyncListParticipants(); } publicstaticvoidasyncListParticipants()throwsException{ // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. // - It may require specifying regional endpoints when creating the service client as shown in // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library try(ConferenceRecordsServiceClientconferenceRecordsServiceClient= ConferenceRecordsServiceClient.create()){ ListParticipantsRequestrequest= ListParticipantsRequest.newBuilder() .setParent(ConferenceRecordName.of("[CONFERENCE_RECORD]").toString()) .setPageSize(883849137) .setPageToken("pageToken873572522") .setFilter("filter-1274492040") .build(); ApiFuture<Participant>future= conferenceRecordsServiceClient.listParticipantsPagedCallable().futureCall(request); // Do something. for(Participantelement:future.get().iterateAll()){ // doThingsWith(element); } } } }
Node.js
/** * This snippet has been automatically generated and should be regarded as a code template only. * It will require modifications to work. * It may require correct/in-range values for request initialization. * TODO(developer): Uncomment these variables before running the sample. */ /** * Required. Format: `conferenceRecords/{conference_record}` */ // const parent = 'abc123' /** * Maximum number of participants to return. The service might return fewer * than this value. * If unspecified, at most 100 participants are returned. * The maximum value is 250; values above 250 are coerced to 250. * Maximum might change in the future. */ // const pageSize = 1234 /** * Page token returned from previous List Call. */ // const pageToken = 'abc123' /** * Optional. User specified filtering condition in EBNF * format (https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). * The following are the filterable fields: * * `earliest_start_time` * * `latest_end_time` * For example, `latest_end_time IS NULL` returns active participants in * the conference. */ // const filter = 'abc123' // Imports the Meet library const{ConferenceRecordsServiceClient}=require('@google-apps/meet').v2; // Instantiates a client constmeetClient=newConferenceRecordsServiceClient(); asyncfunctioncallListParticipants(){ // Construct request constrequest={ parent, }; // Run request constiterable=meetClient.listParticipantsAsync(request); forawait(constresponseofiterable){ console.log(response); } } callListParticipants();
Python
# This snippet has been automatically generated and should be regarded as a # code template only. # It will require modifications to work: # - It may require correct/in-range values for request initialization. # - It may require specifying regional endpoints when creating the service # client as shown in: # https://googleapis.dev/python/google-api-core/latest/client_options.html fromgoogle.appsimport meet_v2 async defsample_list_participants(): # Create a client client = meet_v2.ConferenceRecordsServiceAsyncClient() # Initialize request argument(s) request = meet_v2.ListParticipantsRequest( parent="parent_value", ) # Make the request page_result = client.list_participants(request=request) # Handle the response async for response in page_result: print(response)
Replace the parent value with the name of the conference record.
Customize pagination or filter the participants list
Pass the following query parameters to customize pagination of, or filter, participants:
pageSize
: The maximum number of participants to return. The service might return fewer than this value. If unspecified, at most 100 participants are returned. The maximum value is 250; values more than 250 are automatically changed to 250.pageToken
: A page token, received from a previous list call. Provide this token to retrieve the subsequent page.filter
: Optional. A query filter to retrieve specific items in theparticipants
resource results.You can use the
earliestStartTime
orlatestEndTime
fields to filter for users who joined before or left after a certain time. Both fields use the Timestamp format in RFC 3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits:{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z
. For example:earliestStartTime < 2023年10月01日T15:01:23Z
latestEndTime < 2023年10月01日T15:01:23Z
To list all active participants in an existing conference, use
latestEndTime IS NULL
.
Retrieve participant details with the People API
To retrieve details about a participant, use the
get()
method on the
people
resource in the People API.
Extract the ID of the person from the
participant
resource using the trailing component of the path. For example, if theparticipant
resource value isconferenceRecords/abc-123/participants/12345
the ID for the People API is12345
.Include the
READ_SOURCE_TYPE_PROFILE
,READ_SOURCE_TYPE_CONTACT
, andREAD_SOURCE_TYPE_OTHER_CONTACT
ReadSourceType
. This makes sure both internal users to a Google Workspace organization and external contacts are included in the response.
The following code sample shows how to search both organization profiles and contacts for a person:
cURL
curl \
'https://people.googleapis.com/v1/people/PERSON_ID?personFields=names%2CemailAddresses&sources=READ_SOURCE_TYPE_OTHER_CONTACT&sources=READ_SOURCE_TYPE_PROFILE&sources=READ_SOURCE_TYPE_CONTACT' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--compressed
Replace the following:
- PERSON_ID: the ID of the person to find.
- ACCESS_TOKEN: the access token that grants access to multiple APIs.
Participant sessions
The following sections detail how to get information about participant sessions of a participant in a conference record.
Get details about a participant session
To get details about a specific participant session, use the
get()
method on the
participantSessions
resource with the name
path parameter. If you don't know the participant
session name, you can list all participant sessions of a
participant using the list()
method.
The method returns a participant name as an instance of a participantSessions
resource.
The following code sample shows how to retrieve a specific participant session:
Java
importcom.google.api.core.ApiFuture; importcom.google.apps.meet.v2.ConferenceRecordsServiceClient; importcom.google.apps.meet.v2.GetParticipantSessionRequest; importcom.google.apps.meet.v2.ParticipantSession; importcom.google.apps.meet.v2.ParticipantSessionName; publicclass AsyncGetParticipantSession{ publicstaticvoidmain(String[]args)throwsException{ asyncGetParticipantSession(); } publicstaticvoidasyncGetParticipantSession()throwsException{ // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. // - It may require specifying regional endpoints when creating the service client as shown in // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library try(ConferenceRecordsServiceClientconferenceRecordsServiceClient= ConferenceRecordsServiceClient.create()){ GetParticipantSessionRequestrequest= GetParticipantSessionRequest.newBuilder() .setName( ParticipantSessionName.of( "[CONFERENCE_RECORD]","[PARTICIPANT]","[PARTICIPANT_SESSION]") .toString()) .build(); ApiFuture<ParticipantSession>future= conferenceRecordsServiceClient.getParticipantSessionCallable().futureCall(request); // Do something. ParticipantSessionresponse=future.get(); } } }
Node.js
/** * This snippet has been automatically generated and should be regarded as a code template only. * It will require modifications to work. * It may require correct/in-range values for request initialization. * TODO(developer): Uncomment these variables before running the sample. */ /** * Required. Resource name of the participant. */ // const name = 'abc123' // Imports the Meet library const{ConferenceRecordsServiceClient}=require('@google-apps/meet').v2; // Instantiates a client constmeetClient=newConferenceRecordsServiceClient(); asyncfunctioncallGetParticipantSession(){ // Construct request constrequest={ name, }; // Run request constresponse=awaitmeetClient.getParticipantSession(request); console.log(response); } callGetParticipantSession();
Python
# This snippet has been automatically generated and should be regarded as a # code template only. # It will require modifications to work: # - It may require correct/in-range values for request initialization. # - It may require specifying regional endpoints when creating the service # client as shown in: # https://googleapis.dev/python/google-api-core/latest/client_options.html fromgoogle.appsimport meet_v2 async defsample_get_participant_session(): # Create a client client = meet_v2.ConferenceRecordsServiceAsyncClient() # Initialize request argument(s) request = meet_v2.GetParticipantSessionRequest( name="name_value", ) # Make the request response = await client.get_participant_session(request=request) # Handle the response print(response)
Replace the participant name with the name of the specific participant session ID in a participant session.
List all participant sessions
To list details about all participant sessions of a participant in a conference
record, use the
list()
method on the
participantSessions
resource with the parent
path parameter. Format:
conferenceRecords/{conferenceRecord}/participants/{participant}
.
The method returns a list of participant sessions, ordered by startTime
in
descending order, as an instance of a participantSession
resource. To adjust
the page size and filter the query results, see Customize pagination or filter
the participant sessions list.
The following code sample shows how to list all participant sessions in a conference record:
Java
importcom.google.api.core.ApiFuture; importcom.google.apps.meet.v2.ConferenceRecordsServiceClient; importcom.google.apps.meet.v2.ListParticipantSessionsRequest; importcom.google.apps.meet.v2.ParticipantName; importcom.google.apps.meet.v2.ParticipantSession; publicclass AsyncListParticipantSessions{ publicstaticvoidmain(String[]args)throwsException{ asyncListParticipantSessions(); } publicstaticvoidasyncListParticipantSessions()throwsException{ // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. // - It may require specifying regional endpoints when creating the service client as shown in // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library try(ConferenceRecordsServiceClientconferenceRecordsServiceClient= ConferenceRecordsServiceClient.create()){ ListParticipantSessionsRequestrequest= ListParticipantSessionsRequest.newBuilder() .setParent(ParticipantName.of("[CONFERENCE_RECORD]","[PARTICIPANT]").toString()) .setPageSize(883849137) .setPageToken("pageToken873572522") .setFilter("filter-1274492040") .build(); ApiFuture<ParticipantSession>future= conferenceRecordsServiceClient.listParticipantSessionsPagedCallable().futureCall(request); // Do something. for(ParticipantSessionelement:future.get().iterateAll()){ // doThingsWith(element); } } } }
Node.js
// Copyright 2025 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // ** This file is automatically generated by gapic-generator-typescript. ** // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** 'use strict'; functionmain(parent){ /** * This snippet has been automatically generated and should be regarded as a code template only. * It will require modifications to work. * It may require correct/in-range values for request initialization. * TODO(developer): Uncomment these variables before running the sample. */ /** * Required. Format: * `conferenceRecords/{conference_record}/participants/{participant}` */ // const parent = 'abc123' /** * Optional. Maximum number of participant sessions to return. The service * might return fewer than this value. If unspecified, at most 100 * participants are returned. The maximum value is 250; values above 250 are * coerced to 250. Maximum might change in the future. */ // const pageSize = 1234 /** * Optional. Page token returned from previous List Call. */ // const pageToken = 'abc123' /** * Optional. User specified filtering condition in EBNF * format (https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). * The following are the filterable fields: * * `start_time` * * `end_time` * For example, `end_time IS NULL` returns active participant sessions in * the conference record. */ // const filter = 'abc123' // Imports the Meet library const{ConferenceRecordsServiceClient}=require('@google-apps/meet').v2; // Instantiates a client constmeetClient=newConferenceRecordsServiceClient(); asyncfunctioncallListParticipantSessions(){ // Construct request constrequest={ parent, }; // Run request constiterable=meetClient.listParticipantSessionsAsync(request); forawait(constresponseofiterable){ console.log(response); } } callListParticipantSessions(); } process.on('unhandledRejection',err=>{ console.error(err.message); process.exitCode=1; }); main(...process.argv.slice(2));
Python
# This snippet has been automatically generated and should be regarded as a # code template only. # It will require modifications to work: # - It may require correct/in-range values for request initialization. # - It may require specifying regional endpoints when creating the service # client as shown in: # https://googleapis.dev/python/google-api-core/latest/client_options.html fromgoogle.appsimport meet_v2 async defsample_list_participant_sessions(): # Create a client client = meet_v2.ConferenceRecordsServiceAsyncClient() # Initialize request argument(s) request = meet_v2.ListParticipantSessionsRequest( parent="parent_value", ) # Make the request page_result = client.list_participant_sessions(request=request) # Handle the response async for response in page_result: print(response)
Replace the parent value with the name of the participant sessions of a participant in a conference record.
Customize pagination or filter the participant sessions list
Pass the following optional query parameters to customize pagination of, or filter, participant sessions:
pageSize
: The maximum number of participant sessions to return. The service might return fewer than this value. If unspecified, at most 100 participant sessions are returned. The maximum value is 250; values more than 250 are automatically changed to 250.pageToken
: A page token, received from a previous list call. Provide this token to retrieve the subsequent page.filter
: Optional. A query filter to retrieve specific items in theparticipants
resource results.You can use the
startTime
orendTime
fields to filter for users who joined before or left after a certain time. Both fields use the Timestamp format in RFC 3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits:{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z
. For example:startTime < 2023年10月01日T15:01:23Z
endTime < 2023年10月01日T15:01:23Z
To list all active participant sessions in the conference record, use
endTime IS NULL
.