Get Video Call Details
Read one workshop occurrence, flattened into the same field names Update Video Call accepts — so a caller can read it, change what it needs, and send it straight back.
Mango references are resolved to {_id, title} for mango, excludeMangoes and mangoToSell.
Before editing, check two flags:
isEditable— false once the call is within 30 minutes of starting, in progress, completed, or cancelled.notEditableReasonexplains which.isScheduleLocked— true once a Zoom link has been issued. The schedule can no longer move even while other fields remain editable.
Join links are returned only while the call is ongoing. zoomMeetingLink (attendees) and zoomMeetingLinkCreator (host, starts the meeting) are withheld before the call begins and after it ends, so they cannot be circulated ahead of time or reused later. For a call on a custom platform, meetingUrl carries the link instead and is always present.
Recordings appear in recordings once Zoom has processed them — usually several files per call, one per recordingType. Each url prefers the TagMango-hosted copy; isZoomHostedUrl marks the ones still served by Zoom, whose URLs expire.
An empty recordings array has three different meanings, separated by two other fields:
- Not recorded — no
recordingReceivedAt,isRecordingDeleted: false. - Still processing — the call has ended but Zoom has not delivered the files yet; no
recordingReceivedAteither, so allow for a delay after the call before concluding it was not recorded. - Recorded, then deleted —
isRecordingDeleted: truewithrecordingDeletedAtset, andrecordingReceivedAtstill showing when it was originally captured. Retention cleanup removes the files and their entries, so nothing is left inrecordingsto inspect.
For rescheduling, send startDate and fromTime24h back as startDate and fromTime — they are the stored local values, not derived from the UTC timestamps.
If groupId is present this occurrence belongs to a recurring series; use Get Recurring Workshop Series to read the whole series.
Authorization
bearer In: header
Path Parameters
ID of the video-call occurrence
Header Parameters
Host name of the dashboard, ex: mydomain.tagmango.com
Timezone offset (in number) example-> 330
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api-prod-new.tagmango.com/api/v1/external/workshops/video-calls/66c4964c11e7fef26751f3a7" \ -H "x-whitelabel-host: string" \ -H "x-timezone-offset: string"{
"_id": "66c4964c11e7fef26751f3a7",
"title": "Weekly Marketing Call",
"description": "Discussion about Q2 campaigns",
"thumbnail": "https://cdn.example.com/thumb.jpg",
"fromTime": "2025-06-01T04:30:00.000Z",
"toTime": "2025-06-01T05:30:00.000Z",
"startDate": "2025-06-01",
"fromTime24h": "10:00",
"duration": 60,
"timezoneName": "Asia/Calcutta",
"timezone": "+05:30",
"status": "upcoming",
"isEditable": true,
"notEditableReason": "A call can only be edited up to 30 minutes before it starts",
"isScheduleLocked": false,
"platform": "tagmango",
"meetingUrl": "https://meet.google.com/abc-xyz",
"zoomMeetingType": "webinar",
"ongoingCallType": "webinar",
"zoomMeetingLink": "https://zoom.us/j/98765432101?pwd=abc123",
"zoomMeetingLinkCreator": "https://zoom.us/s/98765432101?zak=abc123",
"mango": [
{
"_id": "66a1390268a76f2f5c9f39a3",
"title": "Introduction to Coding"
}
],
"excludeMangoes": [
{
"_id": "66a1390268a76f2f5c9f39a3",
"title": "Introduction to Coding"
}
],
"mangoToSell": {
"_id": "66a1390268a76f2f5c9f39a3",
"title": "Introduction to Coding"
},
"zoomWaitingList": false,
"zoomRegistration": false,
"enableRecordingZoomCall": false,
"autoUploadRecordingsEnabled": false,
"autoUploadRecordingsConfig": [
{
"target": "course",
"courseId": "66c4964c11e7fef26751f3a7",
"courseTitle": "Advanced Marketing",
"sectionIds": [
"string"
]
}
],
"recordings": [
{
"recordingType": "shared_screen_with_speaker_view",
"url": "https://cdn.example.com/recordings/abc.mp4",
"isZoomHostedUrl": false,
"recordingStartTime": "2025-06-01T04:31:12.000Z",
"recordingEndTime": "2025-06-01T05:28:40.000Z",
"fileSize": 148372221,
"fileExtension": "MP4"
}
],
"recordingReceivedAt": "2025-06-01T06:12:00.000Z",
"isRecordingDeleted": false,
"recordingDeletedAt": "2025-09-01T00:00:00.000Z",
"callType": "recurring",
"groupId": "66c4964c11e7fef26751f3a6",
"occurrence": 2,
"totalOccurrence": 8,
"showGroupLinkForRecurringCall": false,
"participantCount": 42,
"videoCallRescheduledAt": "2025-05-28T09:00:00.000Z",
"createdAt": "2025-05-01T09:00:00.000Z"
}{
"code": 400,
"type": "Bad Request",
"statusMessage": "BAD_REQUEST",
"success": false,
"message": "Invalid request",
"result": "Invalid request"
}{
"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": "You can not access this api with a TagMango account, only available for whitelabel hosts",
"result": "You can not access this api with a TagMango account, only available for whitelabel hosts",
"success": false
}{
"code": 404,
"type": "Not Found",
"statusMessage": "NOT_FOUND",
"errorCode": "WORKSHOP_NOT_FOUND",
"message": "No video call with this id belongs to this creator. Also returned when the id is valid but owned by someone else — ownership failures are not distinguished from missing records.",
"result": "No video call with this id belongs to this creator. Also returned when the id is valid but owned by someone else — ownership failures are not distinguished from missing records.",
"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
}