Skip to content
Skip to main content

How to transcribe a Google Meet

Last updated:

Google Meet links look like meet.google.com/abc-defg-hij, and most of them come straight off a Workspace calendar event. If you’re building meeting intelligence on top of those events, you don’t want to ask hosts to flip on Google’s own transcription or stay on a paid Workspace tier. You point a Nylas Notetaker bot at the same meet.google.com link, and it joins, records, and transcribes the call for you.

This recipe covers the two API calls you need: one to send the bot into the meeting, and one to fetch the finished transcript and recording afterward.

To record a Google Meet, you POST the meeting’s meet.google.com URL to the invite Notetaker endpoint. The meeting_link is the only required field, and Notetaker supports all three major platforms, so the same request shape works whether the link is Meet, Teams, or Zoom. Omit join_time and the bot joins right away.

The request below turns on transcription and a video recording, and sets expected_languages so a bilingual call doesn’t get mis-detected. Each POST creates a new bot, since Nylas doesn’t de-duplicate Notetakers, so send the request once per meeting you want recorded.

The response returns the Notetaker’s id. Hold onto it, because you’ll use it to fetch media later and to match incoming webhook notifications to this specific meeting.

Once the bot leaves the meeting, Nylas processes the audio and produces the files you enabled. Call the Get Notetaker Media endpoint with the notetaker_id to retrieve them. A typical Meet recording comes back as a video/mp4 file alongside a transcript as application/json, plus summary, action_items, and thumbnail if you turned those on.

Every download URL in the response carries a ttl of 3600, meaning each link expires 3,600 seconds (60 minutes) after it’s generated. Download the files to your own storage promptly. If a link expires, just call this endpoint again to mint fresh URLs.

For details on URL expiration, retention windows, and the transcript format, see Handling Notetaker media files.

Polling the media endpoint wastes requests, since processing takes a few minutes and finishes at an unpredictable time. Instead, subscribe to the notetaker.media webhook, which fires once per file when the media is ready. Your handler then downloads each file inside the 60-minute URL window without any guesswork about timing.

For a full webhook setup, see the Notetaker webhooks recipe.

Meet links follow the meet.google.com/xxx-xxxx-xxx format, a 10-character code split into three groups. That code is what you pass as meeting_link. When a meeting is scheduled through a Workspace calendar event, the same link sits in the event’s conferencing details, so you can pull it straight from a synced calendar instead of asking users to paste it.

The bot always joins as an external, non-signed-in guest, and that’s where most Google Meet join failures come from. A few specifics to plan for:

  • Host admission. If the meeting’s host is on Google Workspace and the call is set to admit guests manually, a host has to click Admit when the bot knocks. Notetaker waits up to 10 minutes, then reports failed_entry.
  • Quick access. Workspace hosts can turn on quick access so trusted participants skip the lobby. With it off, every external joiner, including the bot, lands in the waiting room.
  • Org guest policies. Some Workspace admins restrict or block external participants entirely at the organization level. If that policy is active, the bot can’t enter no matter what your code does, so confirm the meeting allows guests before scheduling a recording.

The practical takeaway: for internal-only Meet calls, make sure a human is present to admit the bot, or ask the host to enable quick access ahead of time. For Google’s own breakdown of these controls, see Google Meet Help.