TagMangoTagMango Docs
Workshop

Get Workshop Video Calls

GET
/api/v1/external/workshops/video-calls

List the creator's video calls, grouped by date.

type filter:

  • upcoming (default) — calls that have not finished, including any currently in progress. Ordered soonest first.
  • completed — finished calls only. Ordered most recent first.

Cancelled calls are never returned by either filter.

meetingType filter — how the call is hosted. Omit it to return every kind.

  • webinar — TagMango-hosted Zoom webinar (500-participant).
  • meeting — TagMango-hosted Zoom meeting (300-participant). Also covers older TagMango calls saved before the webinar/meeting split existed.
  • custom — hosted on an external meeting link the creator supplied.
  • consultation — a booked 1-on-1 consultation slot.

webinar, meeting and custom return non-consultation calls only. consultation is the exact complement: it is decided purely by the call being attached to a consultation booking, and returns those slots whatever their hosting platform or Zoom type — so a consultation booked onto a TagMango meeting is returned by consultation, never by meeting. The four values therefore partition the list with no overlap.

Scope: omit user for the full creator view. Pass user to return only the calls that subscriber has access to.

Also filterable by mangoes (comma-separated) and a startDate/endDate range.

Pagination applies to individual calls, and total is the total matching call count — but the response groups the returned page by date, so a page of limit calls may come back as fewer than limit date entries.

AuthorizationBearer <token>

In: header

Query Parameters

limit?number

Number of items per page of the results

Range1 <= value
page?number

Page number of the results

Range1 <= value
startDate?string

Start date for filtering data

Formatdate-time
endDate?string

End date for filtering data

Formatdate-time
user?string

User Identifier for filtering video calls, only required for fetching calls for participant, not required for creator

mangoes?string

Comma seperated list of mangoes for filtering video calls. If not provided, all mangoes will be considered.

type?string

Which calls to return. upcoming (the default) returns calls that have not finished yet — both scheduled and currently in progress — soonest first. completed returns only finished calls, most recent first. Cancelled calls are never returned.

Default"upcoming"
Value in"upcoming" | "completed"
meetingType?string

How the call is hosted. Omit to return every kind.

  • webinar — TagMango-hosted Zoom webinar (500-participant).
  • meeting — TagMango-hosted Zoom meeting (300-participant). Also covers older TagMango calls saved before the webinar/meeting split existed.
  • custom — hosted on an external link the creator supplied.
  • consultation — a booked 1-on-1 consultation slot.

The first three return non-consultation calls only; consultation returns consultation slots regardless of how they are hosted.

Value in"webinar" | "meeting" | "custom" | "consultation"

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

Response Body

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" \  -H "x-whitelabel-host: string" \  -H "x-timezone-offset: string"
{
  "total": 10,
  "data": [
    {
      "date": "2025-01-01",
      "calls": [
        {
          "_id": "507f1f77bcf86cd799439011",
          "title": "Weekly Team Standup",
          "toTime": "2024-01-15T15:00:00.000Z",
          "fromTime": "2024-01-15T14:00:00.000Z",
          "status": "available",
          "videocallType": "onetoone",
          "ongoingCallType": "videocall",
          "platform": "tagmango",
          "meetingUrl": "https://meet.google.com/abc-defg-hij",
          "whitelabelHost": "custom.domain.com",
          "creator": {
            "_id": "6659ca9e5f2acb7abfdcd8fd",
            "name": "John Doe",
            "email": "john.doe@example.com",
            "host": "yourhost.tagmango.com",
            "userSlug": "john-doe",
            "phone": 1234567890,
            "profilePicUrl": "https://linktoprofilepic.com/pic.jpg",
            "onboarding": "creator_completed",
            "isDeactivated": false,
            "country": "India",
            "dialCode": "+91",
            "currency": "USD",
            "score": {
              "lifetime": 100,
              "month": 20,
              "week": 5
            },
            "leaderboardRank": {
              "lifetime": 1,
              "month": 2,
              "week": 3
            }
          },
          "mango": {
            "_id": "66a1390268a76f2f5c9f39a3",
            "creator": "77b2390268a76f2f5c9f39a4",
            "title": "Introduction to Coding",
            "price": 500,
            "description": "This is a comprehensive guide to coding.",
            "recurringType": "MONTHLY",
            "noOfDays": 30,
            "affiliateEnabled": true,
            "createdAt": "2024-08-11T10:20:30Z",
            "updatedAt": "2024-08-11T10:20:30Z"
          }
        }
      ]
    }
  ]
}
{
  "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": 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
}