Get past_meetings endpoint says ended-meeting uuid does not exist or is expired, but works with a meeting ID

Hi zoom,

Here is the api in question: https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/pastmeetingdetails

I’m trying to use this api to view the details of a past meeting that has already ended (like time ended). I tested with a meeting that has multiple instances.

To retrieve a uuid I’m following the steps of a similar thread here:

  1. List meetings of a user via their email
  2. Taking a random meeting ID from step 1, pass it to past meeting instances to get a uuid of an ended meeting

Unrelated note but would be nice to get confirmed: Step 1 returns a uuid as part of each meeting object. Is that the “pre-meeting” uuid, not the post-meeting one that I am interested in?

After step 2, I now have an ended uuid from the past meetings instances endpoint. I pass that uuid to past_meetings to retrieve more detail about it.

The result is Returned Status Code: 404 with Error Message "Meeting does not exist: ta9ICtKTRW9yRvWoEh1hQ==."

Now if I give past_meetings instead a meeting ID, contrary to the api documentation, such as 99813181589 now it returns data.

So, list meetings of user gave me this data for an email in our org:

*
{
    "created_at": "2020-08-14T11:24:51Z", 
    "duration": 90, 
    "host_id": "(removed)", 
    "id": 99813181589, 
    "join_url": "(removed)", 
    "start_time": "2020-12-03T21:00:00Z", 
    "timezone": "America/New_York", 
    "topic": "", 
    "type": 8, 
    "uuid": "bvLLnaMqRqy9puEiKPq45A=="
  },

I take that meeting id 99813181589 and give it to past_meetings, even though the endpoint documentation says to give a uuid, which returns:

  "dept": "", 
  "duration": 96, 
  "end_time": "2020-12-03T22:34:00Z", 
  "host_id": "(removed)", 
  "id": 99813181589, 
  "participants_count": 52, 
  "source": "Zoom", 
  "start_time": "2020-12-03T20:58:06Z", 
  "topic": "(removed)", 
  "total_minutes": 4209, 
  "type": 8, 
  "user_email": "(removed)", 
  "user_name": "(removed)", 
  "uuid": "6qLwQxGZTrWoJ/5tkl2Dzg=="
}

A meeting ID works, but not a uuid. I am trying with a uuid from the list ended meetings endpoint The meetings have > 2 participants.

Any help is appreciated. Thank you!

May Be This Reply Can Help You Here https://marketplace.zoom.us/docs/api-reference/using-zoom-apis-results

@Jman,

Thanks for reaching out—I noticed this meeting was created a while back and I’m not immediately seeing a meeting held for the UUID you referenced.

If you retrieved this from the List User’s Meetings endpoint, this might represent a scheduled meeting, not a past meeting. In step 1, can you ensure you’re using the query parameter scheduled? Note that this will return both upcoming and past meetings for the user.

Thanks,
Will

Hi Will, thank you. I can confirm we’re using the scheduled query parameter for type. In the data returned by list meetings, how can I tell if it is an unexpired past meeting, live meeting, or upcoming scheduled meeting? I only need the past meetings currently.

I noticed this meeting was created a while back and I’m not immediately seeing a meeting held for the UUID you referenced.

Here is a snippet of data returned by list users:

{
    "created_at": "2020-08-14T11:24:51Z", 
    "host_id": "(removed)", 
    "join_url": "(removed)", 
    "scheduled_duration": 90, 
    "start_time": "2020-12-03T21:00:00Z", 
    "timezone": "America/New_York", 
    "topic": "(removed)", 
    "type": 8, 
    "zoom_meeting_number": 99813181589, 
    "zoom_meeting_uuid": "bvLLnaMqRqy9puEiKPq45A=="
  }, 

Taking the meeting number 99813181589 and listing past meeting instances, I am returned a meetings array here:

{
  "meetings": [
    {
      "start_time": "2020-09-08T19:59:37Z", 
      "uuid": "+Op+nGgKTfew3G+23gS+Ug=="
    }, 
    {
      "start_time": "2020-10-29T19:51:49Z", 
      "uuid": "/ta9ICtKTRW9yRvWoEh1hQ=="
    }, 
    {
      "start_time": "2020-10-01T19:58:53Z", 
      "uuid": "1NXLJXzCTsSSa9rCWfgi+w=="
    }, 
    {
      "start_time": "2020-09-03T19:58:30Z", 
      "uuid": "6fraUXbLTsS7Pw/Jsa3noQ=="
    }, 
    {
      "start_time": "2020-12-03T20:58:06Z", 
      "uuid": "6qLwQxGZTrWoJ/5tkl2Dzg=="
    }, 
    {
      "start_time": "2020-10-08T19:54:29Z", 
      "uuid": "APRbjweaQAa8ugDLcD6Pjw=="
    }, 
    {
      "start_time": "2020-09-01T19:57:53Z", 
      "uuid": "CcpjHtFWQ5uPVUAgdN/VIA=="
    }, 
    {
      "start_time": "2020-09-22T19:44:42Z", 
      "uuid": "GGW//LPVRESxX8tOxJVSAQ=="
    }, 
    {
      "start_time": "2020-09-29T19:59:12Z", 
      "uuid": "JV2A35kdTA6Z8Jv+ph1Tug=="
    }, 
    {
      "start_time": "2020-10-15T19:53:09Z", 
      "uuid": "SafU76XkQ/qnPxRkh6IIMw=="
    }, 
    {
      "start_time": "2020-09-24T19:43:44Z", 
      "uuid": "VMuPXMHlTXWwCjzJUFIrWw=="
    }, 
    {
      "start_time": "2020-10-06T19:58:21Z", 
      "uuid": "XPeq64DMRoiVnulH5va7Iw=="
    }, 
    {
      "start_time": "2020-10-27T19:57:14Z", 
      "uuid": "Xo6W2S8NTjW5loP9Ky2Hng=="
    }, 
    {
      "start_time": "2020-12-01T20:59:02Z", 
      "uuid": "Y9AcbkBlRWq+TwLruSucIg=="
    }, 
    {
      "start_time": "2020-11-12T20:59:30Z", 
      "uuid": "YJebtnJ6RZmMpQpCPzuJYg=="
    }, 
    {
      "start_time": "2020-09-17T19:52:59Z", 
      "uuid": "ZkBPxUMcTxWRV6YIN9zyKA=="
    }, 
    {
      "start_time": "2020-10-22T19:51:42Z", 
      "uuid": "aUhvbbctQoG2Q0JexrF+0g=="
    }, 
    {
      "start_time": "2020-08-27T19:57:09Z", 
      "uuid": "bayP6ba5TlOoNHyX3Rh7JA=="
    }, 
    {
      "start_time": "2020-11-03T21:00:07Z", 
      "uuid": "iKFVEbkSQTuKioPVyLeMeA=="
    }, 
    {
      "start_time": "2020-11-19T20:53:20Z", 
      "uuid": "ibZraIL6RoecotVHB8hK1w=="
    }, 
    {
      "start_time": "2020-09-15T19:48:40Z", 
      "uuid": "mKRx6XxBRDOyDigIb3VvfQ=="
    }, 
    {
      "start_time": "2020-11-05T20:54:16Z", 
      "uuid": "mXFVOMo/TkC0n2o0rHi+NQ=="
    }, 
    {
      "start_time": "2020-10-20T19:53:26Z", 
      "uuid": "rXcpy6D1STWZikcXYyKbtg=="
    }, 
    {
      "start_time": "2020-11-17T20:59:03Z", 
      "uuid": "uQt5HJW5RZiZnBHjXWDKOA=="
    }, 
    {
      "start_time": "2020-09-01T18:04:10Z", 
      "uuid": "vVL2ksRKR0uUAvLeMpLGIA=="
    }, 
    {
      "start_time": "2020-10-13T19:43:49Z", 
      "uuid": "wMcphREEQJCMVRFveFpIcw=="
    }, 
    {
      "start_time": "2020-11-10T20:55:53Z", 
      "uuid": "xPZUT5iwTT6IeMPtxQFECQ=="
    }
  ]
}

I take the one of the uuids above +Op+nGgKTfew3G+23gS+Ug== and try it on get past meeting. It said it does not exist. But it has to exist right, otherwise why would list past meeting instances return that uuid?

If I take the meeting ID 99813181589 and give it to past meetings, it returns:

{
  "dept": "", 
  "duration": 96, 
  "end_time": "2020-12-03T22:34:00Z", 
  "host_id": "(removed)", 
  "id": 99813181589, 
  "participants_count": 52, 
  "source": "Zoom", 
  "start_time": "2020-12-03T20:58:06Z", 
  "topic": "(removed)", 
  "total_minutes": 4209, 
  "type": 8, 
  "user_email": "(removed)", 
  "user_name": "(removed)", 
  "uuid": "6qLwQxGZTrWoJ/5tkl2Dzg=="
}

In the data above, giving the meeting ID returned a meeting instance with uuid 6qLwQxGZTrWoJ/5tkl2Dzg==. If I search that uuid in the big array of meeting instances, that uuid exists in there.

I just now picked another uuid from that array VMuPXMHlTXWwCjzJUFIrWw==, and now get past meetings returns data for that one:

{
  "dept": "", 
  "duration": 109, 
  "end_time": "2020-09-24T21:32:03Z", 
  "host_id": "(removed)", 
  "id": 99813181589, 
  "participants_count": 53, 
  "source": "Zoom", 
  "start_time": "2020-09-24T19:43:44Z", 
  "topic": "(removed)", 
  "total_minutes": 4293, 
  "type": 8, 
  "user_email": "(removed)", 
  "user_name": "(removed)", 
  "uuid": "VMuPXMHlTXWwCjzJUFIrWw=="
}

So my questions are basically:

  1. From list meetings of user, how can I tell if one is scheduled/past? I’m only interested in past.
  2. Taking a random meeting ID from list meetings of user and giving it to list past meeting instances , how come some uuids from that operation are not found when then given to get past meeting details?

Thank you!

Hi @Jman ,

I just saw your message to developersupport@zoom.us and will respond there after reading through this thread for your full request/response information so I can try to reproduce this API behavior. Thank you for this detailed breakdown of what you’re seeing/experiencing and this may require a deeper investigation I will bring up with my colleagues.

Thanks!
Gianni

Hi @Jman ,

I did a little digging with colleagues and the discrepancy comes from these being past occurrences of a recurring meeting and that the uuid changes after the meeting ends. The list ended meetings endpoint is not returning the new uuid after meeting has occurred. Given this, when you pass in the old uuid, it will say the meeting does not exist. We can definitely improve our documentation here, but please reference this comment for suggested path to getting those specific past meeting instances: Meeting ID versus UUID Confusion - #6 by tommy

Hi @gianni.zoom ,

Thank you, the problem makes sense. So it sounds like the process to get ended uuid’s is:

  1. Query meetings of user to get meeting IDs: https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetings

  2. Get meeting occurrences: Take a random meeting ID (for sake of example) from above. Pass it to https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting with show_previous_occurrences query param true

  3. Get details about occurrence: For each occurrence in occurrence array in result above, pass it again to https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting but this time with the occurrence_id query param set to the occurrence_id.

  4. UUID: Now, the result of step 3 should contain a uuid. This uuid is legit, if it’s an ended meeting it’ll be the ended meeting uuid that list ended meetings endpoint fails to return.

  5. Past meeting info: Pass step 4’s uuid to https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/pastmeetingdetails for details about this past meeting

Can you confirm?

Also lastly - could you explain a bit what start_time in https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting means exactly. Is that the time when the host joins the meeting and it has opened up (assuming it’s set to meeting starts only after host joins)? Or is it the “scheduled” start time? Does the latter apply to the duration field too, where that is just the “scheduled” duration and say not when the actual meeting ended by hitting the red “end meeting” button?

Edit: In what I’m seeing on the zoom forum lots of staff point to https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/pastmeetings to retrieve uuids for instances of recurring meetings. But what I’m hearing is that it is currently broken in some way?

Thank you!

Good point of clarification to bring up:

@tommy - do you mind chiming in on here please? What are we missing?

Thank you!

Thank you! Regarding the endpoint in question https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/pastmeetings and how some of its UUIDs is not returning the new uuid after the meeting has occurred: Does that mean this endpoint returns pre-meeting UUIDs in addition to all the post-meeting UUIDs?

If so I can just ignore the pre-meeting UUIDs since all the necessary data is still there. However if it returns just the pre-meeting UUID without the corresponding post-meeting UUID for some meetings then that gets tough.