This guide shows how to programmatically retrieve recordings from Google Meet using the Google REST APIs. It focuses on post-meeting access to .mp4
files stored in Drive, and walks through everything from OAuth setup to download logic—plus key limitations you need to know before building.
If you need real-time access, transcripts, or a cross-platform solution, see our other guides on the Meet Media API (real-time) and getting transcripts from Google Meet.
How to get recordings using the Google Meet REST API
We'll walk you through how to get your recordings—after all, that's why you're here. But if you'd prefer to watch a video, feel free to skip to the end of this section.
Technically the Google Meet REST API doesn’t allow access to recordings. Because Google Meet stores artifacts (recordings and transcripts) in Google Drive, downloading recordings uses the Google Drive REST API.
Prerequisites to get recordings
Before you can access Google Meet recordings via API:
- You need a Google Workspace account on a supported plan (e.g. Business Standard, Enterprise, or Education Plus). Check at admin.google.com under
Billing -> Subscriptions
, or ask your IT team. - You need to be the meeting organizer, or have the recording explicitly shared with your account. Recordings are stored in the organizer’s Drive. OAuth access does not override Drive file permissions.
Step 1: Set up your Google Cloud Project
If you haven’t already:
- Create a new project in Google Cloud Console
- Generate OAuth 2.0 credentials by selecting
Create credentials
inAPIs & Services
(client ID + secret). Make sure to select either web app or desktop app. - Save these—You’ll need them to get access tokens later.
- Configure the OAuth consent screen which you can find in
APIs & Services
- Add test users (if needed)
Step 2: Enable required APIs
- Go to API Library, then enable:
- Google Drive API (used to fetch recordings)
- Google Meet API (required to associate the files with the meeting metadata using the file id)
Step 3: Grant OAuth 2.0 access
Add the required scopes (listed above) to your app by navigating to OAuth consent screen
->
Data Access
->
Add or remove scopes
and then add the following scopes:
https://www.googleapis.com/auth/drive.readonly (Restricted)
https://www.googleapis.com/auth/meetings.space.readonly (Sensitive)
These scopes require Google’s OAuth verification, and for restricted scopes, a 3rd-party security audit (may take 4–7 weeks).
Step 4: Host the meeting & click “Record”
Make sure someone manually clicks "Record" in the Meet UI. There’s no API for starting recordings.
Once the meeting ends and processing completes, the .mp4
file will appear in the organizer’s Drive, typically in:
My Drive -> Meet Recordings
Step 5: Find the recording file
Once the meeting has ended and the recording has been processed, it will be stored in the meeting organizer’s Google Drive—typically in a folder called Meet Recordings
.
Before you can access any of the Google endpoints you’ll need to get an access token. To get an access token navigate to the url below, replacing the CLIENT_ID_HERE
with the Client ID for your client in your Google Cloud project.
https://accounts.google.com/o/oauth2/v2/auth?client_id=[YOUR_CLIENT_ID]&redirect_uri=http://localhost&response_type=code&scope=https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/meetings.space.readonly&access_type=offline&prompt=consent
The outcome of this will look like a mistake, but it is not (see image below). Copy the code
. The code
can be found in the url after localhost
. You will use this field in your request to get an access token.
Open up a terminal window and copy the following curl request, replacing the client_id
, client_secret
, and code
with the values from your Google Cloud Client and the code you just copied:
curl -X POST https://oauth2.googleapis.com/token \
-d client_id=[YOUR_CLIENT_ID] \
-d client_secret=[YOUR_CLIENT_SECRET] \
-d code=[THE_CODE_YOU_COPIED] \
-d grant_type=authorization_code \
-d redirect_uri=http://localhost
To locate a specific file programmatically, use the Google Drive API’s files.list
endpoint. You can filter by MIME type (video/mp4
) and optionally search by part of the file name (e.g. "Meeting" or a specific date string):
curl -X GET \
"https://www.googleapis.com/drive/v3/files?q=mimeType='video/mp4'+and+name+contains+'OPTIONAL_STRING_HERE'&fields=files(id,name,createdTime)&orderBy=createdTime+desc" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Key things to know:
-
The filename typically includes the meeting code (which is the 12 character string in the url) or the meeting title.
-
Use the
orderBy=createdTime desc
param to get the most recent recording first. -
The response will include the
id
,name
, andowners
of each file found—grab the correctfile.id
to use in the next step.
//@title Example response
{
"files": [
{
"id": "1x2y3zabc456",
"name": "Team Sync - Meeting recording.mp4",
"createdTime": "2025-07-19T14:02:31.932Z",
"owners": [
{
"displayName": "Maggie Veltri",
"emailAddress": "maggie@example.com"
}
]
}
]
}
From this, copy the id
field—1x2y3zabc456
in this case—for the download request.
Although the Google Meet REST API states that you can get the list of recordings, in testing we were unable to access the list of recordings due to access issues. If you have access to these endpoints, then you can try to access a structured list of recorded meetings using the Google Meet REST API. From there you can iterate through all of the ids and download the files using the same method listed below.
Step 6: Download the file
Once you have the file ID, use the Drive API's files.get
endpoint to download the actual video content. You'll need to pass the alt=media
query param to get the raw file bytes instead of metadata:
curl \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-X GET \
"https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
--output google-meet-recording.mp4
Replace FILE_ID
with the actual ID you received in Step 5.
//@title Example
curl \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE" \
-X GET \
"https://www.googleapis.com/drive/v3/files/1x2y3zabc456?alt=media" \
--output team-sync-july19.mp4
Tips:
- If you’re downloading large recordings, consider adding --location --fail --retry 3 to handle retries. For example:
curl \
--location \
--fail \
--retry 3 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE" \
-X GET \
"https://www.googleapis.com/drive/v3/files/1x2y3zabc456?alt=media" \
--output team-sync-july19.mp4
-
The command above will download the recording into your working directory as team-sync-july19.mp4. To save the file elsewhere, change the path after the
--output
flag. -
If the access token is expired or doesn’t include the
drive.readonly
scope, the request will fail with a403
or401
. The request will retry maximally three times.
For more info on file downloads, see Google’s official docs.
Demo Video: How to get a recording using the Google REST API
The following video goes over steps 5 and 6, walking you through how to get a recording from Google Meet programmatically using the REST API.
Bonus: Accessing a recording if you weren’t the host
We wanted to test out all of the ways that a user might interact with a meeting and then try to access a recording after. You can still access the recording if:
-
The organizer shared the recording with you (e.g. via Drive link) AND
-
You have OAuth access to your own Drive since after the file has been shared it now also exists in your Drive
If the above do not apply, the API won’t let you fetch the file. We tested within our own workspace. If you are interested in building for external customers, doing your own testing with external workspaces that are on the same or higher workspace plan is a good idea.
Any meetings hosted on consumer accounts (@gmail.com
accounts) will not have record functionality and therefore no recordings can be generated/stored.
Limitations of using the Google REST API
- Restricted scopes required — 4–7 week approval process: Accessing Google Meet recordings requires both sensitive and restricted OAuth scopes, which means your app must go through Google’s OAuth verification process. This includes:
- Submitting your app for review via the Google Cloud Console
- Completing a third-party security assessment for restricted scopes (that you have to pay for)
- Waiting 4–7 weeks for approval before your app can go into production
This timeline can significantly delay your product launch or internal testing schedule.
- Post-meeting only: No access to live audio or video. The REST API only exposes meeting artifacts after the meeting has ended. If you need to access recordings in real time, or process live audio/video for things like transcription, moderation, or sentiment analysis—you’ll need to use another method such as the Google Meet Media API or a bot.
- Forgetting to hit
Record
\= no data: Google Meet does not support programmatically starting recordings via API. Someone must physically click theRecord
button during the meeting—otherwise, no recording will be created, and your API calls will return nothing. If you’re building an automated workflow or integration that assumes all meetings are recorded, this introduces a major reliability issue: human error. - Restricted to certain workspaces: If you attempt to record a call that was organized by a user without an eligible workspace, your options in
Meeting tools
will not includeRecord.
Consumer accounts (@gmail
) do not have access to record.
- Organizer-only access: Even if your app has the correct scopes and your workspace is eligible, the REST API won’t let you access a recording unless:
- You are the meeting organizer, or
- The organizer’s Google Drive has shared access with your account or service account
If the recording was not shared with you, you’ll receive a 403
error—even if you know the file ID.
- Google Meet only: The Google Meet REST API is strictly limited to Google Meet calls hosted by Google Workspace users. If you’re building a cross-platform product, this API will not help you access recordings from Microsoft Teams, Zoom, WebEx, etc.
If your product needs to support multiple platforms, use the Recall.ai API to get recordings and transcripts across providers (Zoom, Google Meet, Microsoft Teams, etc), no matter the edge case.
- Drive storage required: Recordings will fail silently if storage is full. Since Google Meet saves recordings directly to Google Drive, that Drive account must have available space. If the organizer's Drive is full the recording will not be saved so any attempt to locate the file will fail. For organizations that frequently record meetings or host long calls, Drive storage quotas can become a point of failure. Google Drive pricing varies by plan.
- Single mixed file: There aren’t separate streams per participant. Google Meet recordings are stored as a single
.mp4
file containing:- Mixed audio from all participants
- A single video recording based on speaker view regardless of the number of participants
You can’t retrieve raw participant-level streams, separate speaker audio, or isolated tracks for processing. If your product needs participant events, diarization, or multi-track audio/video, the REST API’s recording artifact alone won’t meet that need. If you need transcripts with speaker names or speaker separated audio, use Recall.ai.
-
API quotas: Google rate limits requests. The Google REST APIs enforce quotas to protect service availability:
-
- Read requests: 6,000 per minute per project; 600 per minute per user per project
- Write requests: 1,000 per minute per project; 100 per minute per user per project
- Special spaces.create: 100 per minute per project; 10 per minute per user per project
-
- 12,000 queries per minute
-
If you exceed these limits, you’ll receive HTTP 429: Too Many Requests
or 403: User rate limit exceeded
depending on the endpoint. You should implement exponential backoff and retry logic to handle temporary throttles.
- Delayed availability: Recordings take time to process. Even after a meeting ends, it may take longer than the length of the meeting before the recording is processed and available in Drive. For example, one minute meetings took \~6 minutes and 30 minute meetings took over 35 minutes. This means your app can’t reliably pull down the recording immediately after a meeting ends. You’ll need to implement polling logic or delay workflows until the file appears.
For real-time access directly using Google’s native API, see our Meet Media API guide or check out Recall.ai’s Meeting Direct Connect.
Conclusion
If you're building on top of Google Meet and need post-meeting access to recordings, the REST API is the official way to get .mp4
files programmatically—but it comes with friction: scope approvals, manual setup, and no real-time support.
If you need speed, coverage across providers, or no-maintenance media access, Recall.ai gives you post-meeting and real-time recording access with one API. If you have any questions about what the right solution is for your use case, feel free to reach out to us or try us out for free. We’re happy to help you understand all of the options available even if it means you build with something else.