This document explains how to get details about the different meeting artifacts
generated by a conference using the Google Meet REST API.

An [artifact](https://developers.google.com/workspace/meet/api/guides/overview#artifact) is a file or data
generated by Google Meet in response to a
[conference](https://developers.google.com/workspace/meet/api/guides/overview#conference). This includes
video recordings and other artifacts, such as transcripts and smart notes.

To produce artifacts, participants must configure them in Meet
before the conference ends. For more information, see [Manage auto
artifacts](https://developers.google.com/workspace/meet/api/guides/meeting-spaces-configuration#auto-artifacts).

Transcripts operate independently of recordings and you don't have to record the
meeting to generate a transcript. When all participants leave the meeting, the
transcript stops automatically. For more information, see [Record a video
meeting](https://support.google.com/meet/answer/9308681) and [Use Transcripts
with Google Meet](https://support.google.com/meet/answer/12849897).

## Retrieve artifacts

If you're a meeting space owner or participant, you can call the `get` and
`list` methods on the `recordings`, `transcripts`, `transcripts.entries`, and
`smartNotes` resources to retrieve artifacts. For more information, see the
following sections.

Authenticating and authorizing with [user
credentials](https://developers.google.com/workspace/meet/api/guides/authenticate-authorize) lets
Meet apps access user data and perform operations on the
authenticated user's behalf. Authenticating with [domain-wide
delegation](https://developers.google.com/workspace/meet/api/guides/authenticate-authorize#domain-wide-delegation)
lets you authorize an application's service account to access your users' data
without requiring each user to give consent.

## Artifact retention

After a conference ends, Meet saves recordings, transcripts, and
smart notes to the meeting organizer's Google Drive. By default,
Meet artifacts are retained according to Drive
rules.

Transcript entries provided by the Meet REST API are deleted 30 days after
the conference ends.

You also can manage the retention of Meet artifacts separately
using Meet-specific retention rules in Google Vault. For more
information, see [Retain Google Meet data with
Vault](https://support.google.com/vault/answer/7682297).

## Recordings

The following sections detail how to get information about recordings in a
conference record.

Meet has access to the recording ID after the recording file is
generated. It's possible a user might delete the recording file from
Google Drive, yet the unique name is still returned in Meet.

The
[`recordings`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings)
resource includes both the
[`DriveDestination`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings#drivedestination)
and the
[`State`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings#state)
objects.

The `DriveDestination` object holds the export location in Drive
where the recording is saved as an MP4 file. To download the recording or to
play it back in a browser, use the object's
[`exportUri`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings#DriveDestination.FIELDS.export_uri)
field value. If you're familiar with the Google Drive API, the
[`file`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings#DriveDestination.FIELDS.file)
field value corresponds to the
[`id`](https://developers.google.com/workspace/drive/api/reference/rest/v3/files#File.FIELDS.id) field in the
[`files`](https://developers.google.com/workspace/drive/api/reference/rest/v3/files) resource. For more
information, see [Download and export
files](https://developers.google.com/workspace/drive/api/guides/manage-downloads).

The `State` object holds the status of the recording session. This lets you
query if the recording has started, if the recording has ended but the recording
file isn't ready, or if the recording file is generated and ready to download.

### Get details about a recording

To get details about a specific recording, use the
[`get`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings/get)
method on the
[`recordings`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings)
resource. Set the `name` path parameter using the format
`conferenceRecords/{conferenceRecord}/recordings/{recordingName}`.

If you don't know the recording name, you can [list all recording
names](https://developers.google.com/workspace/meet/api/guides/artifacts#list-recordings) using the `list` method.

The method returns an instance of a `recordings` resource.

The following code sample shows how to retrieve a specific recording:

### Java

java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/getrecording/AsyncGetRecording.java [View on GitHub](https://github.com/googleapis/google-cloud-java/blob/main/java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/getrecording/AsyncGetRecording.java)

```java
import com.google.api.core.ApiFuture;
import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
import com.google.apps.meet.v2.GetRecordingRequest;
import com.google.apps.meet.v2.Recording;
import com.google.apps.meet.v2.RecordingName;

public class AsyncGetRecording {

  public static void main(String[] args) throws Exception {
    asyncGetRecording();
  }

  public static void asyncGetRecording() throws Exception {
    // 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 (ConferenceRecordsServiceClient conferenceRecordsServiceClient =
        ConferenceRecordsServiceClient.create()) {
      GetRecordingRequest request =
          GetRecordingRequest.newBuilder()
              .setName(RecordingName.of("[CONFERENCE_RECORD]", "[RECORDING]").toString())
              .build();
      ApiFuture<Recording> future =
          conferenceRecordsServiceClient.getRecordingCallable().futureCall(request);
      // Do something.
      Recording response = future.get();
    }
  }
}
```

### Node.js

packages/google-apps-meet/samples/generated/v2/conference_records_service.get_recording.js [View on GitHub](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-apps-meet/samples/generated/v2/conference_records_service.get_recording.js)

```javascript
/**
 * 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 recording.
 */
// const name = 'abc123'

// Imports the Meet library
const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

// Instantiates a client
const meetClient = new ConferenceRecordsServiceClient();

async function callGetRecording() {
  // Construct request
  const request = {
    name,
  };

  // Run request
  const response = await meetClient.getRecording(request);
  console.log(response);
}

callGetRecording();
```

### Python

packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_get_recording_async.py [View on GitHub](https://github.com/googleapis/google-cloud-python/blob/main/packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_get_recording_async.py)

```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
from google.apps import meet_v2


async def sample_get_recording():
    # Create a client
    client = meet_v2.ConferenceRecordsServiceAsyncClient()

    # Initialize request argument(s)
    request = meet_v2.GetRecordingRequest(
        name="name_value",
    )

    # Make the request
    response = await client.get_recording(request=request)

    # Handle the response
    print(response)
```

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/CONFERENCE_RECORD_NAME/recordings/RECORDING_NAME" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the following:

- The conference record name with the name of the specific conference ID in a conference record.
- The recording name with the name of the specific recording ID in a conference record.

### List all recordings

To list details about all recordings in a conference record, use the
[`list`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings/list)
method on the
[`recordings`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings)
resource. Set the `parent` path parameter using the format
`conferenceRecords/{conferenceRecord}`.

The method returns a list of conference recordings, ordered by `startTime` in
ascending order, as an instance of a `recordings` resource. To adjust the page
size, see [Customize pagination](https://developers.google.com/workspace/meet/api/guides/artifacts#customize-pagination).

The following code sample shows how to list all recordings in a conference
record:

### Java

java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/listrecordings/AsyncListRecordings.java [View on GitHub](https://github.com/googleapis/google-cloud-java/blob/main/java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/listrecordings/AsyncListRecordings.java)

```java
import com.google.api.core.ApiFuture;
import com.google.apps.meet.v2.ConferenceRecordName;
import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
import com.google.apps.meet.v2.ListRecordingsRequest;
import com.google.apps.meet.v2.Recording;

public class AsyncListRecordings {

  public static void main(String[] args) throws Exception {
    asyncListRecordings();
  }

  public static void asyncListRecordings() throws Exception {
    // 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 (ConferenceRecordsServiceClient conferenceRecordsServiceClient =
        ConferenceRecordsServiceClient.create()) {
      ListRecordingsRequest request =
          ListRecordingsRequest.newBuilder()
              .setParent(ConferenceRecordName.of("[CONFERENCE_RECORD]").toString())
              .setPageSize(883849137)
              .setPageToken("pageToken873572522")
              .build();
      ApiFuture<Recording> future =
          conferenceRecordsServiceClient.listRecordingsPagedCallable().futureCall(request);
      // Do something.
      for (Recording element : future.get().iterateAll()) {
        // doThingsWith(element);
      }
    }
  }
}
```

### Node.js

packages/google-apps-meet/samples/generated/v2/conference_records_service.list_recordings.js [View on GitHub](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-apps-meet/samples/generated/v2/conference_records_service.list_recordings.js)

```javascript
/**
 * 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 recordings to return. The service might return fewer
 *  than this value.
 *  If unspecified, at most 10 recordings are returned.
 *  The maximum value is 100; values above 100 are coerced to 100.
 *  Maximum might change in the future.
 */
// const pageSize = 1234
/**
 *  Page token returned from previous List Call.
 */
// const pageToken = 'abc123'

// Imports the Meet library
const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

// Instantiates a client
const meetClient = new ConferenceRecordsServiceClient();

async function callListRecordings() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const iterable = meetClient.listRecordingsAsync(request);
  for await (const response of iterable) {
      console.log(response);
  }
}

callListRecordings();
```

### Python

packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_list_recordings_async.py [View on GitHub](https://github.com/googleapis/google-cloud-python/blob/main/packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_list_recordings_async.py)

```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
from google.apps import meet_v2


async def sample_list_recordings():
    # Create a client
    client = meet_v2.ConferenceRecordsServiceAsyncClient()

    # Initialize request argument(s)
    request = meet_v2.ListRecordingsRequest(
        parent="parent_value",
    )

    # Make the request
    page_result = client.list_recordings(request=request)

    # Handle the response
    async for response in page_result:
        print(response)
```

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/PARENT_NAME/recordings" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the parent name with the name of the specific conference ID in a
conference record.

## Transcripts

The following sections detail how to get information about conference
transcripts in a conference record.

Meet has access to the transcript ID once the transcript data is
generated. It's possible a user might delete the transcript file from
Drive, yet the unique name is still returned in
Meet.

The
[`transcripts`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts)
resource includes both the
[`DocsDestination`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts#docsdestination)
and the
[`State`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts#state)
objects.

The `DocsDestination` object holds the export location in Drive
where the Google Docs transcript file is saved. To fetch the content or to
browse the transcript in a browser, use the object's
[`exportUri`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts#DocsDestination.FIELDS.export_uri)
field value. If you're familiar with the Google Docs API, the
[`document`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts#DocsDestination.FIELDS.document)
field value corresponds to the
[`documentId`](https://developers.google.com/workspace/docs/api/reference/rest/v1/documents#Document.FIELDS.document_id)
in the [`documents`](https://developers.google.com/workspace/docs/api/reference/rest/v1/documents) resource.

The `State` object holds the status of the transcript session. This lets you
query if the transcript session has started, if the transcript session has ended
but the transcript file isn't ready, or if the transcript file is generated and
ready to download.

### Get details about a transcript

To get details about a specific transcript, use the
[`get`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts/get)
method on the
[`transcripts`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts)
resource. Set the `name` path parameter using the format
`conferenceRecords/{conferenceRecord}/transcripts/{transcriptName}`.

If you don't know the transcript name, you can [list all transcript
names](https://developers.google.com/workspace/meet/api/guides/artifacts#list-transcripts) using the `list` method.

The method returns an instance of a `transcripts` resource.

The following code sample shows how to retrieve a specific transcript:

### Java

java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/gettranscript/AsyncGetTranscript.java [View on GitHub](https://github.com/googleapis/google-cloud-java/blob/main/java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/gettranscript/AsyncGetTranscript.java)

```java
import com.google.api.core.ApiFuture;
import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
import com.google.apps.meet.v2.GetTranscriptRequest;
import com.google.apps.meet.v2.Transcript;
import com.google.apps.meet.v2.TranscriptName;

public class AsyncGetTranscript {

  public static void main(String[] args) throws Exception {
    asyncGetTranscript();
  }

  public static void asyncGetTranscript() throws Exception {
    // 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 (ConferenceRecordsServiceClient conferenceRecordsServiceClient =
        ConferenceRecordsServiceClient.create()) {
      GetTranscriptRequest request =
          GetTranscriptRequest.newBuilder()
              .setName(TranscriptName.of("[CONFERENCE_RECORD]", "[TRANSCRIPT]").toString())
              .build();
      ApiFuture<Transcript> future =
          conferenceRecordsServiceClient.getTranscriptCallable().futureCall(request);
      // Do something.
      Transcript response = future.get();
    }
  }
}
```

### Node.js

packages/google-apps-meet/samples/generated/v2/conference_records_service.get_transcript.js [View on GitHub](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-apps-meet/samples/generated/v2/conference_records_service.get_transcript.js)

```javascript
/**
 * 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 transcript.
 */
// const name = 'abc123'

// Imports the Meet library
const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

// Instantiates a client
const meetClient = new ConferenceRecordsServiceClient();

async function callGetTranscript() {
  // Construct request
  const request = {
    name,
  };

  // Run request
  const response = await meetClient.getTranscript(request);
  console.log(response);
}

callGetTranscript();
```

### Python

packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_get_transcript_async.py [View on GitHub](https://github.com/googleapis/google-cloud-python/blob/main/packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_get_transcript_async.py)

```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
from google.apps import meet_v2


async def sample_get_transcript():
    # Create a client
    client = meet_v2.ConferenceRecordsServiceAsyncClient()

    # Initialize request argument(s)
    request = meet_v2.GetTranscriptRequest(
        name="name_value",
    )

    # Make the request
    response = await client.get_transcript(request=request)

    # Handle the response
    print(response)
```

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/CONFERENCE_RECORD_NAME/transcripts/TRANSCRIPT_NAME" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the following:

- The conference record name with the name of the specific conference ID in a conference record.
- The transcript name with the name of the specific transcript ID in a conference record.

### List all transcripts

To list details about all transcripts in a conference record, use the
[`list`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts/list)
method on the
[`transcripts`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts)
resource. Set the `parent` path parameter using the format
`conferenceRecords/{conferenceRecord}`.

The method returns a list of conference transcripts, ordered by `startTime` in
ascending order, as an instance of a `transcripts` resource. To adjust the page
size, see [Customize pagination](https://developers.google.com/workspace/meet/api/guides/artifacts#customize-pagination).

The following code sample shows how to list all transcripts in a conference
record:

### Java

java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/listtranscripts/AsyncListTranscripts.java [View on GitHub](https://github.com/googleapis/google-cloud-java/blob/main/java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/listtranscripts/AsyncListTranscripts.java)

```java
import com.google.api.core.ApiFuture;
import com.google.apps.meet.v2.ConferenceRecordName;
import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
import com.google.apps.meet.v2.ListTranscriptsRequest;
import com.google.apps.meet.v2.Transcript;

public class AsyncListTranscripts {

  public static void main(String[] args) throws Exception {
    asyncListTranscripts();
  }

  public static void asyncListTranscripts() throws Exception {
    // 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 (ConferenceRecordsServiceClient conferenceRecordsServiceClient =
        ConferenceRecordsServiceClient.create()) {
      ListTranscriptsRequest request =
          ListTranscriptsRequest.newBuilder()
              .setParent(ConferenceRecordName.of("[CONFERENCE_RECORD]").toString())
              .setPageSize(883849137)
              .setPageToken("pageToken873572522")
              .build();
      ApiFuture<Transcript> future =
          conferenceRecordsServiceClient.listTranscriptsPagedCallable().futureCall(request);
      // Do something.
      for (Transcript element : future.get().iterateAll()) {
        // doThingsWith(element);
      }
    }
  }
}
```

### Node.js

packages/google-apps-meet/samples/generated/v2/conference_records_service.list_transcripts.js [View on GitHub](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-apps-meet/samples/generated/v2/conference_records_service.list_transcripts.js)

```javascript
/**
 * 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 transcripts to return. The service might return fewer
 *  than this value.
 *  If unspecified, at most 10 transcripts are returned.
 *  The maximum value is 100; values above 100 are coerced to 100.
 *  Maximum might change in the future.
 */
// const pageSize = 1234
/**
 *  Page token returned from previous List Call.
 */
// const pageToken = 'abc123'

// Imports the Meet library
const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

// Instantiates a client
const meetClient = new ConferenceRecordsServiceClient();

async function callListTranscripts() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const iterable = meetClient.listTranscriptsAsync(request);
  for await (const response of iterable) {
      console.log(response);
  }
}

callListTranscripts();
```

### Python

packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_list_transcripts_async.py [View on GitHub](https://github.com/googleapis/google-cloud-python/blob/main/packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_list_transcripts_async.py)

```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
from google.apps import meet_v2


async def sample_list_transcripts():
    # Create a client
    client = meet_v2.ConferenceRecordsServiceAsyncClient()

    # Initialize request argument(s)
    request = meet_v2.ListTranscriptsRequest(
        parent="parent_value",
    )

    # Make the request
    page_result = client.list_transcripts(request=request)

    # Handle the response
    async for response in page_result:
        print(response)
```

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/PARENT_NAME/transcripts" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the parent name with the name of the specific conference ID in a
conference record.

## Transcript entries

The following sections detail how to get each participant's speech as transcript
entries during a conference transcript session.

The transcript entry contains transcribed text of the participant's voice, up to
a maximum of 10,000 words. The spoken text `languageCode` (for example, `en-US`)
is also included as [IETF BCP 47 syntax](https://tools.ietf.org/html/bcp47).

Each transcript entry is connected to a `participant` name in the conference. To
retrieve participant details, see [Get details about a
participant](https://developers.google.com/workspace/meet/api/guides/participants#get-participant).

Transcript entry data is available for 30 days after the conference ends.

Note that the transcript entries returned by the Meet REST API might not
match the transcription found in the Docs transcript file. This
occurs when the transcript file is modified after generation.

### Get details about a transcript entry

To get details about a specific transcript entry, use the
[`get`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries/get)
method on the
[`transcripts.entries`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries)
resource. Set the `name` path parameter using the format
`conferenceRecords/{conferenceRecord}/transcripts/{transcriptName}/entries/{transcriptEntryName}`.

If you don't know the transcript entry name, you can [list all transcript entry
names](https://developers.google.com/workspace/meet/api/guides/artifacts#list-transcript-entries) using the `list` method.

The method returns an instance of a `transcripts.entries` resource.

The following code sample shows how to retrieve a specific transcript entry:

### Java

java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/gettranscriptentry/AsyncGetTranscriptEntry.java [View on GitHub](https://github.com/googleapis/google-cloud-java/blob/main/java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/gettranscriptentry/AsyncGetTranscriptEntry.java)

```java
import com.google.api.core.ApiFuture;
import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
import com.google.apps.meet.v2.GetTranscriptEntryRequest;
import com.google.apps.meet.v2.TranscriptEntry;
import com.google.apps.meet.v2.TranscriptEntryName;

public class AsyncGetTranscriptEntry {

  public static void main(String[] args) throws Exception {
    asyncGetTranscriptEntry();
  }

  public static void asyncGetTranscriptEntry() throws Exception {
    // 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 (ConferenceRecordsServiceClient conferenceRecordsServiceClient =
        ConferenceRecordsServiceClient.create()) {
      GetTranscriptEntryRequest request =
          GetTranscriptEntryRequest.newBuilder()
              .setName(
                  TranscriptEntryName.of("[CONFERENCE_RECORD]", "[TRANSCRIPT]", "[ENTRY]")
                      .toString())
              .build();
      ApiFuture<TranscriptEntry> future =
          conferenceRecordsServiceClient.getTranscriptEntryCallable().futureCall(request);
      // Do something.
      TranscriptEntry response = future.get();
    }
  }
}
```

### Node.js

packages/google-apps-meet/samples/generated/v2/conference_records_service.get_transcript_entry.js [View on GitHub](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-apps-meet/samples/generated/v2/conference_records_service.get_transcript_entry.js)

```javascript
/**
 * 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 `TranscriptEntry`.
 */
// const name = 'abc123'

// Imports the Meet library
const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

// Instantiates a client
const meetClient = new ConferenceRecordsServiceClient();

async function callGetTranscriptEntry() {
  // Construct request
  const request = {
    name,
  };

  // Run request
  const response = await meetClient.getTranscriptEntry(request);
  console.log(response);
}

callGetTranscriptEntry();
```

### Python

packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_get_transcript_entry_async.py [View on GitHub](https://github.com/googleapis/google-cloud-python/blob/main/packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_get_transcript_entry_async.py)

```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
from google.apps import meet_v2


async def sample_get_transcript_entry():
    # Create a client
    client = meet_v2.ConferenceRecordsServiceAsyncClient()

    # Initialize request argument(s)
    request = meet_v2.GetTranscriptEntryRequest(
        name="name_value",
    )

    # Make the request
    response = await client.get_transcript_entry(request=request)

    # Handle the response
    print(response)
```

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/CONFERENCE_RECORD_NAME/transcripts/TRANSCRIPT_NAME/entries/TRANSCRIPT_ENTRY_NAME" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the following:

- The conference record name with the name of the specific conference ID in a conference record.
- The transcript name with the name of the specific transcript ID in a conference record.
- The transcript entry name with the name of the specific transcript entry ID in a transcript.

### List all transcript entries

To list details about all transcript entries in a transcript, use the
[`list`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries/list)
method on the
[`transcripts.entries`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries)
resource. Set the `parent` path parameter using the format
`conferenceRecords/{conferenceRecord}/transcripts/{transcript}`.

The method returns a list of structured transcript entries per conference
transcript, ordered by `startTime` in ascending order, as an instance of a
`transcripts.entries` resource. To adjust the page size, see [Customize
pagination](https://developers.google.com/workspace/meet/api/guides/artifacts#customize-pagination).

The following code sample shows how to list all transcript entries in a
transcript:

### Java

java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/listtranscriptentries/AsyncListTranscriptEntries.java [View on GitHub](https://github.com/googleapis/google-cloud-java/blob/main/java-meet/samples/snippets/generated/com/google/apps/meet/v2/conferencerecordsservice/listtranscriptentries/AsyncListTranscriptEntries.java)

```java
import com.google.api.core.ApiFuture;
import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
import com.google.apps.meet.v2.ListTranscriptEntriesRequest;
import com.google.apps.meet.v2.TranscriptEntry;
import com.google.apps.meet.v2.TranscriptName;

public class AsyncListTranscriptEntries {

  public static void main(String[] args) throws Exception {
    asyncListTranscriptEntries();
  }

  public static void asyncListTranscriptEntries() throws Exception {
    // 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 (ConferenceRecordsServiceClient conferenceRecordsServiceClient =
        ConferenceRecordsServiceClient.create()) {
      ListTranscriptEntriesRequest request =
          ListTranscriptEntriesRequest.newBuilder()
              .setParent(TranscriptName.of("[CONFERENCE_RECORD]", "[TRANSCRIPT]").toString())
              .setPageSize(883849137)
              .setPageToken("pageToken873572522")
              .build();
      ApiFuture<TranscriptEntry> future =
          conferenceRecordsServiceClient.listTranscriptEntriesPagedCallable().futureCall(request);
      // Do something.
      for (TranscriptEntry element : future.get().iterateAll()) {
        // doThingsWith(element);
      }
    }
  }
}
```

### Node.js

packages/google-apps-meet/samples/generated/v2/conference_records_service.list_transcript_entries.js [View on GitHub](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-apps-meet/samples/generated/v2/conference_records_service.list_transcript_entries.js)

```javascript
/**
 * 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}/transcripts/{transcript}`
 */
// const parent = 'abc123'
/**
 *  Maximum number of entries to return. The service might return fewer than
 *  this value.
 *  If unspecified, at most 10 entries are returned.
 *  The maximum value is 100; values above 100 are coerced to 100.
 *  Maximum might change in the future.
 */
// const pageSize = 1234
/**
 *  Page token returned from previous List Call.
 */
// const pageToken = 'abc123'

// Imports the Meet library
const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

// Instantiates a client
const meetClient = new ConferenceRecordsServiceClient();

async function callListTranscriptEntries() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const iterable = meetClient.listTranscriptEntriesAsync(request);
  for await (const response of iterable) {
      console.log(response);
  }
}

callListTranscriptEntries();
```

### Python

packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_list_transcript_entries_async.py [View on GitHub](https://github.com/googleapis/google-cloud-python/blob/main/packages/google-apps-meet/samples/generated_samples/meet_v2_generated_conference_records_service_list_transcript_entries_async.py)

```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
from google.apps import meet_v2


async def sample_list_transcript_entries():
    # Create a client
    client = meet_v2.ConferenceRecordsServiceAsyncClient()

    # Initialize request argument(s)
    request = meet_v2.ListTranscriptEntriesRequest(
        parent="parent_value",
    )

    # Make the request
    page_result = client.list_transcript_entries(request=request)

    # Handle the response
    async for response in page_result:
        print(response)
```

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/CONFERENCE_RECORD_NAME/transcripts/TRANSCRIPT_NAME/entries" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the following:

- The conference record name with the name of the specific conference ID in a conference record.
- The transcript name with the name of the specific transcript ID in a conference record.

## Smart notes

The following sections detail how to get information about conference smart
notes in a conference record.

Meet has access to the smart note ID once the smart note data is
generated. It's possible a user might delete the smart notes file from
Drive, yet the unique name is still returned in
Meet.

The
[`smartNotes`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.smartNotes)
resource includes the
[`State`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.smartNotes#state)
object. This object holds the status of the smart notes session. This lets you
query if the smart notes session has started, if the smart notes session has
ended but the smart notes file isn't ready, or if the smart notes file is
generated and ready to download.

The `smartNotes` resource also includes the
[`DocsDestination`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.smartNotes#docsdestination)
object type. This object holds the export location in Drive where
the Google Docs smart notes file is saved. To fetch the content or to browse
the smart notes in a browser, use the object's
[`exportUri`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.smartNotes#DocsDestination.FIELDS.export_uri)
field value. If you're familiar with the Google Docs API, the
[`document`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.smartNotes#DocsDestination.FIELDS.document)
field value corresponds to the
[`documentId`](https://developers.google.com/workspace/docs/api/reference/rest/v1/documents#Document.FIELDS.document_id)
in the [`documents`](https://developers.google.com/workspace/docs/api/reference/rest/v1/documents) resource.

You can manage smart notes using the [`get`](https://developers.google.com/workspace/meet/api/guides/artifacts#get-smart-notes) and
[`list`](https://developers.google.com/workspace/meet/api/guides/artifacts#list-smart-notes) methods.

### Get details about smart notes

To get details about a specific smart notes file, use the
[`get`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.smartNotes/get)
method on the `smartNotes` resource. Set the `name` path parameter using the
format `conferenceRecords/{conferenceRecord}/smartNotes/{smartNote}`.

If you don't know the name of the smart note, you can [list all smart notes
files](https://developers.google.com/workspace/meet/api/guides/artifacts#list-smart-notes) using the `list` method.

The method returns an instance of a `smartNotes` resource.

The following code sample shows how to retrieve a specific smart notes file:

### Java

    import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
    import com.google.apps.meet.v2.SmartNote;

    public class GetSmartNote {
      public static void main(String[] args) throws Exception {
        try (ConferenceRecordsServiceClient client =
            ConferenceRecordsServiceClient.create()) {
          SmartNote response = client.getSmartNote(
              "conferenceRecords/CONFERENCE_RECORD_NAME/smartNotes/SMART_NOTES_NAME");
          System.out.println("Smart note name: " + response.getName());
        }
      }
    }

### Node.js

    const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

    async function getSmartNote(smartNoteName) {
      const client = new ConferenceRecordsServiceClient();
      const [response] = await client.getSmartNote({name: smartNoteName});
      console.log(`Smart note name: ${response.name}`);
      return response;
    }

### Python

    from google.apps import meet_v2

    def get_smart_note(smart_note_name):
        client = meet_v2.ConferenceRecordsServiceClient()
        response = client.get_smart_note(name=smart_note_name)
        print(f"Smart note name: {response.name}")
        return response

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/CONFERENCE_RECORD_NAME/smartNotes/SMART_NOTES_NAME" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the following:

- The conference record name with the name of the specific conference ID in a conference record.
- The smart note name with the name of the specific smart note ID in a conference record.

### List all smart notes

To list details about all smart notes files in a conference record, use the
[`list`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.smartNotes/list)
method on the `smartNotes` resource. Set the `parent` path parameter using the
format `conferenceRecords/{conferenceRecord}`.

The method returns a list of conference smart notes files, ordered by
`startTime` in ascending order, as an instance of a `smartNotes` resource. To
adjust the page size, see [Customize pagination](https://developers.google.com/workspace/meet/api/guides/artifacts#customize-pagination).

The following code sample shows how to list all smart notes files in a
conference record:

### Java

    import com.google.apps.meet.v2.ConferenceRecordsServiceClient;
    import com.google.apps.meet.v2.SmartNote;

    public class ListSmartNotes {
      public static void main(String[] args) throws Exception {
        try (ConferenceRecordsServiceClient client =
            ConferenceRecordsServiceClient.create()) {
          for (SmartNote smartNote : client
              .listSmartNotes("conferenceRecords/CONFERENCE_RECORD_NAME")
              .iterateAll()) {
            System.out.println("Smart note name: " + smartNote.getName());
          }
        }
      }
    }

### Node.js

    const {ConferenceRecordsServiceClient} = require('@google-apps/meet').v2;

    async function listSmartNotes(conferenceRecordName) {
      const client = new ConferenceRecordsServiceClient();
      const [smartNotes] =
          await client.listSmartNotes({parent: conferenceRecordName});
      smartNotes.forEach((smartNote) => {
        console.log(`Smart note name: ${smartNote.name}`);
      });
      return smartNotes;
    }

### Python

    from google.apps import meet_v2

    def list_smart_notes(conference_record_name):
        client = meet_v2.ConferenceRecordsServiceClient()
        response = client.list_smart_notes(parent=conference_record_name)
        for smart_note in response:
            print(f"Smart note name: {smart_note.name}")

### cURL

    curl -X GET \
      "https://meet.googleapis.com/v2/conferenceRecords/PARENT_NAME/smartNotes" \
      -H "Authorization: Bearer ACCESS_TOKEN"

Replace <var translate="no">ACCESS_TOKEN</var> with the access token that grants access to the API.

Replace the parent name with the name of the specific conference ID in a
conference record.

## Customize pagination

Pass the following query parameters to customize pagination of recordings,
transcripts, transcript entries, and smart notes:

- `pageSize`: The maximum number of items to return. The service might return
  fewer than this value. If unspecified, at most 10 items are returned. The
  maximum value is 100; values more than 100 are automatically changed to 100.

- `pageToken`: A page token, received from a previous list call. Provide this
  token to retrieve the subsequent page.

> [!NOTE]
> **Note:** Unlike `conferenceRecords`, `participants`, and `participantSessions` resources, you cannot filter query results for `recordings`, `transcripts`, `transcripts.entries`, and `smartNotes` resources.

## Related topics

- [Customize Meet features as an admin](https://support.google.com/a/topic/7302334)