# Changing a recurrence end\_date\_time

**URL:** <https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076>\
**Category:** API and Webhooks\
**Created:** [May 11, 2020, 12:49pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076 "2020-05-11T12:49:17Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![isaacly](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/isaacly/32/7504_2.png) [@isaacly](https://devforum.zoom.us/u/isaacly)\
**Post date:** [May 11, 2020, 12:49pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/1 "2020-05-11T12:49:17Z")

</div>

I’m using JWT API to create recurring meetings. Occasionally, we need to change the timing of all upcoming meetings in the recurrence.

I _think_ the easiest way to handle such a change is to split the recurrence… i.e create a new recurring meeting starting on today with the new schedule, and change the old meeting to end on today. How do I alter a recurring meeting to preserve the meetings that already happened but stop future recurrences?

I tried the following:  
PATCH /meetings/:id { recurrence: { end\_date\_time: \<today\> } }

This returns an error 401. In the UI dialog it’s not possible to change the end\_date\_time – is this just not allowed?

---

<div class="post-metadata">

**Author:** ![samly](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@samly](https://devforum.zoom.us/u/samly)\
**Post date:** [May 11, 2020, 1:05pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/2 "2020-05-11T13:05:39Z")

</div>

Not sure as to the original 401 issue - but as a workaround to the PATCH call, you could use the “[Get a Meeting](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting)” endpoint to retrieve all future occurrences (from the result’s occurrences array) and then use the Occurrence IDs in that array with the “[Delete a Meeting](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingdelete)” endpoint to delete a specific occurrence of that meeting, ie: DELETE `/meetings/{meetingID}?occurrence_id=9387493794`.

Though, via the Zoom UI I am able to change the end date (as well as manually create and delete additional instances of the same meeting).

---

<div class="post-metadata">

**Author:** ![samly](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@samly](https://devforum.zoom.us/u/samly)\
**Post date:** [May 11, 2020, 1:25pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/3 "2020-05-11T13:25:34Z")

</div>

Also - what timestamp format are you using for end\_date\_time? That may affect what you’re experiencing. It should always be a full UTC timestamp:

> `YYYY`-`MM`-`DD`T`HH`:`MM`:`SS`Z

---

<div class="post-metadata">

**Author:** ![isaacly](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/isaacly/32/7504_2.png) [@isaacly](https://devforum.zoom.us/u/isaacly)\
**Post date:** [May 11, 2020, 2:14pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/4 "2020-05-11T14:14:40Z")

</div>

Thanks for your help. Since you told me it works I kept trying, and figured out that you can’t patch a single field in recurrence. I got it to work by passing:

```
{
    "recurrence": {
    	"type": 2,
    	"weekly_days": "1,2,4",
        "end_date_time": "2020-05-13T13:38:39Z"
    }
}
```

---

<div class="post-metadata">

**Author:** ![samly](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@samly](https://devforum.zoom.us/u/samly)\
**Post date:** [May 11, 2020, 2:26pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/5 "2020-05-11T14:26:58Z")

</div>

This may not be the _best_ solution if you are ever cutting the recurrences short as of some day in the future (ie not “today”), as this may affect any other occurrence between now and then. I think ultimately, deleting only future occurrences (with the DELETE call) may be the smoothest operation.

Kind of odd though there’s no API endpoint to create individual instances in a reccurrence like you can do through the Zoom interface. I’ll submit a request for that.

---

<div class="post-metadata">

**Author:** ![isaacly](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/isaacly/32/7504_2.png) [@isaacly](https://devforum.zoom.us/u/isaacly)\
**Post date:** [May 11, 2020, 2:33pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/6 "2020-05-11T14:33:05Z")

</div>

> [@samly](#):
>
> this may affect any other occurrence between now and then.

Sorry, can you explain that again? So what I’m trying to do is stop any future recurrences of the meeting, and leave any past ones unchanged. Is my patch call going to reset past meetings? I don’t understand what you’re saying exactly.

One issue with DELETE approach is I’d need one call per occurrence and it’s heavily rate limited.

---

<div class="post-metadata">

**Author:** ![samly](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@samly](https://devforum.zoom.us/u/samly)\
**Post date:** [May 11, 2020, 2:55pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/7 "2020-05-11T14:55:55Z")

</div>

The DELETE endpoint is listed as a “Light” rate-limiting.

but, for example, imagine if you had a meeting like this:

```auto
{
    "uuid": "UUID",
    "id": "meetingID",
    "host_id": "hostID",
    "topic": "My Meeting",
    "type": 8,
    "status": "waiting",
    "timezone": "America/New_York",
    "agenda": "",
    "created_at": "2020-05-11T14:39:25Z",
    "recurrence": {
        "type": 2,
        "repeat_interval": 1,
        "weekly_days": "3,5",
        "end_date_time": "2020-06-24T03:59:00Z"
    },
    "occurrences": [
        {
            "occurrence_id": "1589290980000",
            "start_time": "2020-05-12T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1589463780000",
            "start_time": "2020-05-14T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1589895780000",
            "start_time": "2020-05-19T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1590068580000",
            "start_time": "2020-05-21T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1590500580000",
            "start_time": "2020-05-26T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1590673380000",
            "start_time": "2020-05-28T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1591105380000",
            "start_time": "2020-06-02T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1591278180000",
            "start_time": "2020-06-04T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1591710180000",
            "start_time": "2020-06-09T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1591882980000",
            "start_time": "2020-06-11T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1592314980000",
            "start_time": "2020-06-16T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1592487780000",
            "start_time": "2020-06-18T13:43:00Z",
            "duration": 60,
            "status": "available"
        },
        {
            "occurrence_id": "1592919780000",
            "start_time": "2020-06-23T13:43:00Z",
            "duration": 60,
            "status": "available"
        }
    ]
}

```

I decide I want the last meeting to be June 2 instead of June 23, because meetings are boring.

I do this:  
PATCH [https://api.zoom.us/v2/meetings/meetingID](https://api.zoom.us/v2/meetings/meetingID)

```auto
{
    "recurrence": {
        "type": 2,
        "repeat_interval": 1,
        "weekly_days": "3,5",
        "end_date_time": "2020-06-02T03:59:00Z"
    }
}

```

This has in fact… destroyed all my meeting occurrences and has broken my meeting entirely. If there were past meetings, they shouldn’t be affected though, as they are stored separately.

```auto
{
    "uuid": "UUID",
    "id": meetingID,
    "host_id": "hostID",
    "topic": "My Meeting",
    "type": 8,
    "status": "waiting",
    "timezone": "America/New_York",
    "agenda": "",
    "created_at": "2020-05-11T14:39:25Z",
    "occurrences": [],
    "recurrence": {
        "type": 2,
        "repeat_interval": 1,
        "weekly_days": "3,5",
        "end_date_time": "2020-06-02T03:59:00Z"
    }
}

```

---

<div class="post-metadata">

**Author:** ![isaacly](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/isaacly/32/7504_2.png) [@isaacly](https://devforum.zoom.us/u/isaacly)\
**Post date:** [May 11, 2020, 3:58pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/8 "2020-05-11T15:58:34Z")

</div>

> [@samly](#):
>
> The DELETE endpoint is listed as a “Light” rate-limiting.

my mistake, thanks. So this direction is very doable.

> [@samly](#):
>
> because meetings are boring

😃

> [@samly](#):
>
> This has in fact… destroyed all my meeting occurrences and has broken my meeting entirely.

But your call looks correct to me! Why did it break your meeting? When I tried PATCH on a test meeting, it seemed to work as expected. Sorry to keep badgering, I’m missing something here.

---

<div class="post-metadata">

**Author:** ![isaacly](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/isaacly/32/7504_2.png) [@isaacly](https://devforum.zoom.us/u/isaacly)\
**Post date:** [May 11, 2020, 4:07pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/9 "2020-05-11T16:07:39Z")

</div>

> [@samly](#):
>
> If there were past meetings, they shouldn’t be affected though, as they are stored separately.

I tried calling DELETE on the series, but it also deletes past meetings :-\

---

<div class="post-metadata">

**Author:** ![samly](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@samly](https://devforum.zoom.us/u/samly)\
**Post date:** [May 11, 2020, 4:25pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/10 "2020-05-11T16:25:37Z")

</div>

You’d want to call it on a specific occurrence\_id, not the whole meeting ID: **DELETE** `https://api.zoom.us/v2/meetings/yourMeetingId?occurrence_id=occurrenceId`

Where occurrenceId is the `occurrence_id` value from an object in the `occurrences` array from a **GET** `https://api.zoom.us/v2/meetings/yourMeetingId` call.

Yeah, the whole thing isn’t very intuitive. 🤷‍♂️ Maybe a Zoom employee has some insight as to how to deal with some of this.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [May 15, 2020, 7:45pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/11 "2020-05-15T19:45:07Z")

</div>

Hey @isaacly, @samly,

Have you tried updating the master meeting recurrence properties via the [Update Meeting endpoint](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingupdate)?

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![samly](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@samly](https://devforum.zoom.us/u/samly)\
**Post date:** [May 18, 2020, 6:39pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/12 "2020-05-18T18:39:26Z")

</div>

Yes, using that endpoint causes the behavior described in a comment above:

> [@Changing a recurrence end\_date\_time](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/7):
>
> The DELETE endpoint is listed as a “Light” rate-limiting. but, for example, imagine if you had a meeting like this: { "uuid": "UUID", "id": "meetingID", "host\_id": "hostID", "topic": "My Meeting", "type": 8, "status": "waiting", "timezone": "America/New\_York", "agenda": "", "created\_at": "2020-05-11T14:39:25Z", "recurrence": { "type": 2, "repeat\_interval": 1, "weekly\_days": "3,5", "end\_date\_time": "2020-06-24T03:59:00Z" …

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [May 21, 2020, 10:26pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/13 "2020-05-21T22:26:02Z")

</div>

Hey @samly,

Gotcha, when you say destroyed, what exactly happened to the future occurrences when changing the end\_date\_time?

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![samly](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@samly](https://devforum.zoom.us/u/samly)\
**Post date:** [May 22, 2020, 5:01pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/14 "2020-05-22T17:01:42Z")

</div>

The example in that linked comments shows it. The occurrences array in the response and for GET requests is empty. The Zoom UI also shows all the occurrences no longer exist.

---

<div class="post-metadata">

**Author:** ![ringwelt](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ringwelt/32/8644_2.png) [@ringwelt](https://devforum.zoom.us/u/ringwelt)\
**Post date:** [May 25, 2020, 9:24am UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/15 "2020-05-25T09:24:04Z")

</div>

I can confirm the behaviour: Calling PATCH /meetings/{meetingId} with recurrence object with end\_date\_time sometimes removes all occurrences of the meeting. The meeting does not appear anywhere on the Zoom website, even under Previous Meetings. GET /meetings/{meetingId} still returns the meeting (with empty occurrences array, even using new option show\_previous\_occurrences). It can still be updated through the webservice with new recurrence object to bring it back visible.

---

<div class="post-metadata">

**Author:** ![ringwelt](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ringwelt/32/8644_2.png) [@ringwelt](https://devforum.zoom.us/u/ringwelt)\
**Post date:** [May 26, 2020, 12:02pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/16 "2020-05-26T12:02:09Z")

</div>

One such destroyed meeting is 923-4772-8456.

---

<div class="post-metadata">

**Author:** ![ronu493](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@ronu493](https://devforum.zoom.us/u/ronu493)\
**Post date:** [May 29, 2020, 6:43pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/17 "2020-05-29T18:43:48Z")

</div>

Getting invalid occurrence in API responses.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [June 4, 2020, 4:12pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/19 "2020-06-04T16:12:44Z")

</div>

Thanks @samly, @ringwelt,

We will investigate this. (ZOOM-167084)

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [June 4, 2020, 4:13pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/20 "2020-06-04T16:13:56Z")

</div>

Hey @ronu493,

If this is a new issue, please create a new topic with additional details and steps to reproduce.

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![Gothamww](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/gothamww/32/10468_2.png) [@Gothamww](https://devforum.zoom.us/u/Gothamww)\
**Post date:** [June 24, 2020, 10:37pm UTC](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076/22 "2020-06-24T22:37:01Z")

</div>

I got the same issue - but then resolved it by re-submitting the start\_time, duration and timezone along with the new recurrence information

so… sending a patch request with just this nuked all my meetings:

```
{
 "recurrence": {
    "type": 2,
    "repeat_interval": 1,
    "weekly_days": "2",
    "end_date_time": "2020-09-15T03:59:59Z",
  }
}

```

but sending the recurrence with start\_time, duration and timezone did the right thing:

```
{
  "start_time": "2020-07-06T14:00:00Z",
  "duration": 180,
  "timezone": "America/New_York",
  "recurrence": {
    "type": 2,
    "repeat_interval": 1,
    "weekly_days": "2",
    "end_date_time": "2020-09-15T03:59:59Z",
  }
}
```

[Next page](https://devforum.zoom.us/t/changing-a-recurrence-end-date-time/17076.md?page=2)
