Update Recurring Video Calls (all occurrences)
Update every upcoming occurrence of a recurring group — the "edit all occurrences" action.
- Locked 30 minutes before the next occurrence. If the group's earliest upcoming occurrence starts within 30 minutes, the whole group is locked (
409 Conflict) — the replace would otherwise delete a call about to begin.
This is a replace, not an in-place edit. The group's upcoming and cancelled occurrences are deleted and the recurrence is regenerated from the payload under the same groupId. Consequences:
- Occurrence IDs change. Anything holding an individual slot ID from this group must re-read it. The
groupIdand its share link are preserved. - A call in progress is never touched. An
ongoingoccurrence is kept and the regenerated schedule skips its time window, so it is neither deleted nor duplicated.preservedOngoingCallreports whether this happened. - Completed occurrences are retained as history.
Because the whole recurrence is re-expanded, the full schedule definition is required — unlike the single-occurrence endpoint, this is not a partial update. recurringType must be daily or weekly, and endDate is mandatory.
To edit just one occurrence, use Update Video Call instead.
Authorization
bearer In: header
Path Parameters
ID of the recurring video-call group
Header Parameters
Host name of the dashboard, ex: mydomain.tagmango.com
Timezone offset (in number) example-> 330
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://api-prod-new.tagmango.com/api/v1/external/workshops/video-calls/groups/66c4964c11e7fef26751f3a6" \ -H "x-whitelabel-host: string" \ -H "x-timezone-offset: string" \ -H "Content-Type: application/json" \ -d '{ "title": "Weekly Marketing Call", "mango": "66c4964c11e7fef26751f3a7", "startDate": "2025-06-01", "fromTime": "10:00", "timezoneName": "Asia/Calcutta", "duration": 60, "recurringType": "weekly" }'{
"groupId": "66c4964c11e7fef26751f3a6",
"scheduledMeetingDates": [
"2025-06-02T04:30:00.000Z to 2025-06-02T05:30:00.000Z"
],
"replacedCount": 4,
"preservedOngoingCall": false
}{
"code": 400,
"type": "Bad Request",
"statusMessage": "BAD_REQUEST",
"errorCode": "WORKSHOP_INVALID_SCHEDULE",
"message": "The requested schedule cannot be used — duration outside 30–300 minutes, a start time in the past, `endDate` before `startDate`, a recurrence producing no occurrences, missing `endDate`/`repeatingDays` for daily/weekly recurrence, or a schedule ending after the creator's WEBINAR feature expiry.",
"result": "The requested schedule cannot be used — duration outside 30–300 minutes, a start time in the past, `endDate` before `startDate`, a recurrence producing no occurrences, missing `endDate`/`repeatingDays` for daily/weekly recurrence, or a schedule ending after the creator's WEBINAR feature expiry.",
"success": false
}{
"code": 401,
"type": "Unauthorized",
"statusMessage": "UNAUTHORIZED",
"message": "Invalid token",
"result": "Invalid token",
"success": false
}{
"code": 403,
"type": "Forbidden",
"statusMessage": "FORBIDDEN",
"errorCode": "WORKSHOP_MANGO_FORBIDDEN",
"message": "A mango referenced in `mango`, `excludeMangoes`, or `mangoToSell` does not exist or belongs to another creator. All three are validated together.",
"result": "A mango referenced in `mango`, `excludeMangoes`, or `mangoToSell` does not exist or belongs to another creator. All three are validated together.",
"success": false
}{
"code": 404,
"type": "Not Found",
"statusMessage": "NOT_FOUND",
"errorCode": "WORKSHOP_GROUP_NOT_FOUND",
"message": "No recurring group with this id belongs to this creator, or every occurrence in it has been deleted.",
"result": "No recurring group with this id belongs to this creator, or every occurrence in it has been deleted.",
"success": false
}{
"code": 409,
"type": "Conflict",
"statusMessage": "CONFLICT",
"errorCode": "WORKSHOP_OVERLAP",
"message": "The requested slot clashes with another of the creator's upcoming or ongoing TagMango-hosted calls. Custom-meeting-URL calls are exempt from this check on both sides. Use the check-availability endpoint to surface conflicts before writing.",
"result": "The requested slot clashes with another of the creator's upcoming or ongoing TagMango-hosted calls. Custom-meeting-URL calls are exempt from this check on both sides. Use the check-availability endpoint to surface conflicts before writing.",
"success": false
}{
"code": 429,
"type": "Too Many Requests",
"statusMessage": "TOO_MANY_REQUESTS",
"message": "Request limit exceeded. try after 10 seconds",
"result": "Request limit exceeded. try after 10 seconds",
"success": false
}