# Zoom Meeting API Returns Incorrect Dates

**URL:** <https://devforum.zoom.us/t/zoom-meeting-api-returns-incorrect-dates/116887>\
**Category:** API and Webhooks\
**Tags:** recording, api\
**Created:** [September 4, 2024, 7:43am UTC](https://devforum.zoom.us/t/zoom-meeting-api-returns-incorrect-dates/116887 "2024-09-04T07:43:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![steve3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/steve3/32/63034_2.png) [@steve3](https://devforum.zoom.us/u/steve3)\
**Post date:** [September 4, 2024, 7:43am UTC](https://devforum.zoom.us/t/zoom-meeting-api-returns-incorrect-dates/116887/1 "2024-09-04T07:43:21Z")

</div>

I trying to get all the zoom recordings to download, but for some reason the response is coming back with dates I didn’t set.

I’m wondering if Zoom is only returning a subset of what I’m requesting, perhaps due to paging?

Here is my request url:

from=2022-01-01&to=2022-12-31

as you can see I’m essentially requesting all of 2022, but here is what I back in my json request:

from: “2022-11-30”  
from: “2022-11-30”  
page\_count: 1  
page\_size: 300  
total\_records: 14  
next\_page\_token: “”

Here’s an example of my C# code:

> public async Task\<List\> GetZoomRecordingsAsync(string accessToken)  
> {  
> using (var client = new HttpClient())  
> {  
> try  
> {  
> client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(“Bearer”, accessToken);  
> var zoomRecordingSearchDateFrom = dateTimePickerZoomFrom.Value.ToString(“yyyy-MM-dd”);  
> var zoomRecordingSearchDateTo = dateTimePickerZoomTo.Value.ToString(“yyyy-MM-dd”);  
> var recordings = new List();  
> string nextPageToken = “”;
> 
> ```
> do
> {
> var requestUrl = $"recordings?from={zoomRecordingSearchDateFrom}&to={zoomRecordingSearchDateTo}&page_size=300&next_page_token={nextPageToken}";
> Log($"Request URL: {requestUrl}");
> 
> var response = await client.GetAsync(requestUrl);
> var content = await response.Content.ReadAsStringAsync();
> 
> if (!response.IsSuccessStatusCode)
> {
> throw new Exception($"Error fetching recordings: {response.StatusCode} - {content}");
> }
> 
> var jsonResponse = JObject.Parse(content);
> var meetingsArray = (JArray)jsonResponse["meetings"];
> recordings.AddRange(meetingsArray.Select(Recording.ParseRecording).Where(r => r != null));
> 
> // Get next_page_token
> nextPageToken = jsonResponse["next_page_token"]?.ToString();
> 
> } while (!string.IsNullOrEmpty(nextPageToken));
> 
> return recordings;
> }
> catch (Exception ex)
> {
> Log($"Exception caught: {ex.Message}");
> throw;
> }
> }
> 
> ```

"  
Thanks for the help and let me know if you have any questions!

Steve

---

<div class="post-metadata">

**Author:** ![michael.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael.zoom/32/37213_2.png) [@michael.zoom](https://devforum.zoom.us/u/michael.zoom)\
**Post date:** [September 6, 2024, 3:53am UTC](https://devforum.zoom.us/t/zoom-meeting-api-returns-incorrect-dates/116887/2 "2024-09-06T03:53:23Z")

</div>

Hey @steve3, welcome, thanks for posting 👋

These can only be requested in periods of one month. You’ll just need to loop through & handle responses for each month. From the [List all recordings](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingsList) docs:

> The start date in ‘yyyy-mm-dd’ UTC format for the date range where you would like to retrieve recordings. The maximum range can be a month. If no value is provided for this field, the default will be current date.
> 
> For example, if you make the API request on June 30, 2020, without providing the `from` and `to` parameters, by default the value of ‘from’ field will be `2020-06-30` and the value of the ‘to’ field will be `2020-07-01`.
> 
> **Note** : The `trash` files cannot be filtered by date range and thus, the `from` and `to` fields should not be used for trash files.
> 
> Examples: 2020-06-30

What about this -

```csharp
public async Task<List<Recording>> GetZoomRecordingsAsync(string accessToken)
{
    using (var client = new HttpClient())
    {
        try
        {
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            
            // Set the 'from' date to the first day of the current month
            var zoomRecordingSearchDateFrom = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy-MM-dd");
            
            // Set the 'to' date to the first day of the next month
            var zoomRecordingSearchDateTo = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(1).ToString("yyyy-MM-dd");
            
            var recordings = new List<Recording>();
            string nextPageToken = "";

            do
            {
                var requestUrl = $"recordings?from={zoomRecordingSearchDateFrom}&to={zoomRecordingSearchDateTo}&page_size=300&next_page_token={nextPageToken}";
                Log($"Request URL: {requestUrl}");

                var response = await client.GetAsync(requestUrl);
                var content = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception($"Error fetching recordings: {response.StatusCode} - {content}");
                }

                var jsonResponse = JObject.Parse(content);
                var meetingsArray = (JArray)jsonResponse["meetings"];
                recordings.AddRange(meetingsArray.Select(Recording.ParseRecording).Where(r => r != null));

                // Get next_page_token
                nextPageToken = jsonResponse["next_page_token"]?.ToString();

            } while (!string.IsNullOrEmpty(nextPageToken));

            return recordings;
        }
        catch (Exception ex)
        {
            Log($"Exception caught: {ex.Message}");
            throw;
        }
    }
}

```

---

<div class="post-metadata">

**Author:** ![steve3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/steve3/32/63034_2.png) [@steve3](https://devforum.zoom.us/u/steve3)\
**Post date:** [September 6, 2024, 5:48am UTC](https://devforum.zoom.us/t/zoom-meeting-api-returns-incorrect-dates/116887/3 "2024-09-06T05:48:22Z")

</div>

Thanks @michael.zoom ,

One problem is that next\_page\_token: “” is blank

All the other data is there and the search string was for an entire year.

Why is that?

---

<div class="post-metadata">

**Author:** ![michael.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael.zoom/32/37213_2.png) [@michael.zoom](https://devforum.zoom.us/u/michael.zoom)\
**Post date:** [September 6, 2024, 1:33pm UTC](https://devforum.zoom.us/t/zoom-meeting-api-returns-incorrect-dates/116887/4 "2024-09-06T13:33:20Z")

</div>

@steve3 , are the total records greater than the page size, but the next\_page\_token is still blank?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [September 10, 2025, 5:09am UTC](https://devforum.zoom.us/t/zoom-meeting-api-returns-incorrect-dates/116887/5 "2025-09-10T05:09:29Z")

</div>

Closed on September 10, 2025, 5:09am UTC

This topic was automatically closed 368 days after the last reply. New replies are no longer allowed.
