# API to get an AI companion generated Transcript

**URL:** <https://devforum.zoom.us/t/api-to-get-an-ai-companion-generated-transcript/142661>\
**Category:** API and Webhooks\
**Tags:** api\
**Created:** [March 30, 2026, 11:28pm UTC](https://devforum.zoom.us/t/api-to-get-an-ai-companion-generated-transcript/142661 "2026-03-30T23:28:03Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![zzza](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/zzza/32/74149_2.png) [@zzza](https://devforum.zoom.us/u/zzza)\
**Post date:** [March 30, 2026, 11:28pm UTC](https://devforum.zoom.us/t/api-to-get-an-ai-companion-generated-transcript/142661/1 "2026-03-30T23:28:03Z")

</div>

### **API Endpoint(s) and/or Zoom API Event(s)**

- POST postmeeting.aic\_transcript\_completed
- GET v2/meetings/_{meetingId}_/transcript

\*\*  
Description\*\*  
\*Need some help with getting transcripts generated by AI companion via API.

This webhook is sending the transcription ready event:\* postmeeting.aic\_transcript\_completed. According to the docs, the file\_id is a transcript file but the life of me, I haven’t been able to work out how to download it.

I have tried using {meetingId} and {meetingUUID} to request for the transcript via the endoint below but the response in both cases says the no meeting found. I suspect its due to AI companion generated transcript, so there’s no recording object

GET v2/meetings/_{meetingId}_/transcript

A steer on this would be super helpful. Thanks.

---

<div class="post-metadata">

**Author:** ![amanda-recallai](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/amanda-recallai/32/44747_2.png) [@amanda-recallai](https://devforum.zoom.us/u/amanda-recallai)\
**Post date:** [March 31, 2026, 11:25pm UTC](https://devforum.zoom.us/t/api-to-get-an-ai-companion-generated-transcript/142661/2 "2026-03-31T23:25:10Z")

</div>

The path that appears to work now is [GET /meetings/{meetingId}/transcript](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/), but for AI Companion transcripts you should pass the **past meeting instance UUID** , not the scheduled meeting ID and not the scheduled UUID from the normal meeting lookup. Zoom still does not spell that distinction out clearly, but it matches the current endpoint behavior discussed on the forum.

The safest flow is to get the occurrence UUID from [GET /past\_meetings/{meetingId}/instances](https://developers.zoom.us/blog/meeting-api-querying-tips-part1/), then call the transcript endpoint with that value after the meeting has ended. If the UUID contains `/` or starts with `/`, [double-encode the meeting UUID](https://developers.zoom.us/docs/api/using-zoom-apis/). Also make sure [Allow meeting hosts to retain and access meeting transcripts](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0076632) is enabled, because Zoom ties retained Meeting Summary and AI Companion transcript access to that setting.

One check that usually resolves the “meeting not found” response is to compare the UUID from your normal meeting lookup with the past-instance UUID and retry with the latter. I also would not build around the webhook `file_id` alone right now, because Zoom does not show a documented download flow from that value for AI Companion transcripts.

If you need a fallback for capturing meeting transcripts, Recall’s [Meeting Bot API](https://www.recall.ai/product/meeting-bot-api?utm_source=zoom&utm_medium=forum_answer) is an alternative.
