API Sequence to get Transcripts for a Meeting when the User has a PMI

I want to compose an API sequence that will get transcripts for users with PMIs. When I create a meeting with the API, I get returned –
“id”:88269798014
“pmi”:“7771279430”

And I store both.

The request …/meetings/7771279430/recordings using the PMI will get a recording but from what I understand it provides just the latest one. I want the one for the instance of the meeting 88269798014. As maybe there was a more recent meeting.

But there seems to be a gap in the API. The meeting Id will not work. This URL fails …/meetings/88269798014/recordings I need to get a URL based on the uuid of the instance of the meeting. But there doesn’t appear to be a way to look that up directly from the Id 88269798014.

I can get the info from the meeting I scheduled with the Meeting Id I stored …/meetings/88269798014 but that returns different uuid than the one the transcript is filed under.
{“uuid”:“mnEnGp99TIShAi8CWWP6rw==”,“id”:88269798014,“host_id”:“lE11Mlt4SAiHCMskZ1JYKg” …

I can get a list of past meetings from the PMI with …/past_meetings/7771279430/instances

The returns a huge list and contains only uuid and start times. Just a portion is shown…

{“meetings”:[…,{“uuid”:“VzmTOA5+SwqzgZ9rBY8zOA==”,“start_time”:“2025-09-22T13:45:34Z”},{“uuid”:“W1H3Q7JgRYGcMnvWwPWK0A==”,“start_time”:“2026-04-09T13:44:48Z”},{“uuid”:“W4ZtKng0SOeWFXn0ye5NmQ==”,“start_time”:“2026-05-12T13:46:30Z”},{“uuid”:“Wa6qhlBsSf6YWihj0SKQmQ==”,“start_time”:“2025-11-17T14:46:36Z”},{“uuid”:“X+kVR/LzR9yQmToS+LeF6g==”,“start_time”:“2026-06-12T18:16:39Z”},{“uuid”:“X1TYZAupTECHBVmeBKf4lg==”,“start_time”:“2025-10-16T13:44:02Z”},{“uuid”:“XNgoi/GrQRqUiWTu5qNHnw==”,“start_time”:“2025-11-25T14:45:33Z”},{“uuid”:“Xaj439T+QJ20QgVjCX5pYA==”,“start_time”:“2026-03-30T13:44:35Z”},{“uuid”:“Xz0fwjCsRvuKUPBchtGCVQ==”,“start_time”:“2026-05-07T13:45:21Z”},{“uuid”:“YDTU4hiZQp2BTKWtGA98Hw==”,“start_time”:“2026-04-27T13:45:06Z”},…]}

It is the X+kVR/LzR9yQmToS+LeF6g== value that I need to complete the sequence of calls to get the transcripts for the meeting. But I only can be correlated by actual start time, not be the Id that was returned when I created the Meeting (or the UUID that can be fetched for it).

I really don’t want to write a sequence that heuristically matches start time to the schedule start of the meeting as sometimes meetings started early or late.

I just think there should be a way when I create an meeting via the API and store the values returned to directly get the transcripts for that meeting when PMI is in use. Is it really a gap in the API or am I missing something?

I’d treat this as a PMI correlation gap rather than something obvious you’re missing. Zoom’s List past meeting instances response gives the ended instance UUID and start time, and each meeting instance gets a new UUID. It does not document a field that ties that instance UUID back to the scheduled meeting ID returned when the meeting was created with PMI.

For a pull-only flow, the cleanest supported sequence is: list instances for the PMI, select the instance UUID, double-encode it when needed, then call Get a meeting transcript and download from download_url only when can_download is true. That still leaves the matching step on your side, so I’d avoid PMI for meetings where you need deterministic per-scheduled-meeting correlation.

For new work, subscribe to recording.transcript_completed. That payload includes the recorded meeting instance UUID and recording files, so you can store the UUID at transcript completion time instead of reconstructing it later from PMI history. One check: log the webhook object.id and object.uuid for a PMI meeting and verify object.uuid is the UUID that succeeds with the transcript endpoint.

For a path that avoids PMI and UUID correlation edge cases, Recall.ai’s Meeting Bot API can record and transcribe Zoom meetings directly.