TagMangoTagMango Docs
Workshop

Update Recurring Video Calls (all occurrences)

PATCH
/api/v1/external/workshops/video-calls/groups/{groupId}

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 groupId and its share link are preserved.
  • A call in progress is never touched. An ongoing occurrence is kept and the regenerated schedule skips its time window, so it is neither deleted nor duplicated. preservedOngoingCall reports 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.

AuthorizationBearer <token>

In: header

Path Parameters

groupId*string

ID of the recurring video-call group

Header Parameters

x-whitelabel-host*string

Host name of the dashboard, ex: mydomain.tagmango.com

x-timezone-offset*string

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
}