MegaMeeting

MegaMeeting Web Video Conferencing API v4
Add Video Conferencing to your website and apps.

Websites
Apps
Social Media
Web Projects

Video Conferencing Integration
Start empowering your websites and apps today by adding the most powerful form of real-time communication. Integrate video conferencing into your website and you will see remarkable improvement in your ability to interact with customers and solve problems.

MegaMeeting has been providing video conferencing APIs for over 15 years and has helped shape many businesses that have formed around the concept of web based video conferencing. Because it is entirely web based, integrating MegaMeeting video conferencing into a website or web application is easier than with any other video conferencing service.

The Language

MegaMeeting has a very easy-to-use video conferencing API. It is driven by GraphQL, a simple query language originally developed by Facebook in 2012 and open sourced in 2015. If you are unfamiliar with GraphQL, read more at GraphQL.org.

Usage

The MegaMeeting API allows you to create/edit/join/end meetings. If you have a large organization with many hosts, you can create/update/delete logins. You can also download/delete data such as meeting recordings and meeting usage.

See this article for a typical integration example.

Authentication

All queries/mutations require authentication, which is achieved via API key. You can generate/revoke an API key from the API section of your account settings. When making a request, send the API key as follows:

EXAMPLE:

apiToken=B834JR9F763JFKJF993JI0FJ4GH67234

Endpoint/Request URL

For the proper context and authentication to be accepted in your API request, the request URL should begin with your account’s URL.

EXAMPLE:

https://myaccount.megameeting.com/api

Methods

GraphQL is self-documenting and the best way to explore and understand the schema available is by accessing it directly via GraphQL Playground. You can download the Desktop app, or access it from your account:

https://myaccount.megameeting.com/playground

Add your endpoint URL and apiToken and you will be able to view the full schema available and test all of the API calls.

URL API

Joining the web based meeting requires visting a URL with a compatible web browser.

The URL to join the meeting should be constructed as follows:

EXAMPLE (standard meeting/webinar):

https://myaccount.megameeting.com/meeting/?id=1234567

The URL consists of 1) Your account domain 2) /meeting/ 3) query string for meeting ID.

OPTIONAL:

https://myaccount.megameeting.com/meeting/?id=1234567&name=John

Adding the name parameter allows you to include a name for the user that will appear in the meeting attendee list. If no name is provided, the user will be required to enter a name before joining the meeting.

OPTIONAL:

https://myaccount.megameeting.com/meeting/?id=1234567&name=John&go=1

Adding the go parameter allows you to bypass the guest landing page and immediately join the meeting. The name parameter is also required if using the go parameter.


Meetings with Verified Guests enabled, or Webinars with Registration enabled, cannot be joined via standard URL. The URL must contain the unique key for each individual attendee.

EXAMPLE (secured meeting/webinar):

https://myaccount.megameeting.com/meeting/?key=abcdef123456

The URL consists of 1) Your account domain 2) /meeting/ 3) query string for guest key.

OPTIONAL:

https://myaccount.megameeting.com/meeting/?key=abcdef123456&go=1

Adding the go parameter allows you to bypass the guest landing page and immediately join the meeting.

Example Requests / Responses
The following is a simple reference guide. For complete examples and all available APIs, please see the graphql playground available in the API section of your account.

meetings
Get a list of existing meetings. This is the most common API query, used for the purposes of getting a list of meetings to join, update, or delete, without needing to provide an initial search criteria or filter. If called by an Admin, returns a list of all meetings on the account. If called by a Host, returns only their meetings.

Request

                
    query {
      meetings {
        edges {
          node {
            meetId
            name
          }
        }
      }
    }
              
              

Response

                
    {
      "data": {
      "meetings": [
        {
          "edges": [
            {
              "node": {
                "name": "My First Meeting",
                "meetId": "1234567"
              }
            },
            {
              "node": {
                "name": "My Second Meeting",
                "meetId": "7654321"
              }
            }
          ]
        }
      ]
    }
    }
                
              

logins
Get a list of existing logins. Used for retrieving the details of existing users (logins) on your account. Often used for retrieving the loginId of an existing user in order to process updates via updateLogin API. Only available to Admin users.

Request

                
    query {
      logins {
        edges {
          node {
            userName
            loginId
            email
            fullName
            active
            roles
          }
        }
      }
    }
                
              

Response

                
    {
      "data": {
        "logins": [{
          "edges": [{
              "node": {
                "userName": "michaels",
                "loginId": "5bf55555ac033142f8457264",
                "email": "michaels@megameeting.com",
                "fullName": "Michael",
                "active": 1,
                "roles": "owner,admin,host"
              }
            },
            {
              "node": {
                "userName": "pamb",
                "loginId": "5df155555a74d80b43e32a21",
                "email": "pamb@megameeting.com",
                "fullName": "Pam",
                "active": 0,
                "roles": "admin,host"
              }
            }
          ]
        }]
      }
    }
                
              

startRemux
Starts the server-side processing in order to retrieve your recording(s). You will likely have some of this information stored in your database or you will run the recordings query to retrieve the information needed to start this process.

Request

                
    query {
      startRemux(
      input: {
        accountId: "61216bddfe32733c86597a5c"
        loginId: "5d93bc02ebf54f60016c5480"
        meetId: "8626345"
        recordingId: "59216bccfe32133c86597a6b"
      }
    ) {
      status
      message
      result
    }
    }
                
              

Response

              
    {
      "data": {
        "startRemux": {
          "status": "Completed",
          "message": "Remux request made successfully.",
          "result": null
        }
      }
    }
              
              

recordings
Get a list of existing recordings. Used for retrieving the details of recordings made by users of the accounts. Often used for retrieving the recId in order to call deleteRecording API, or retrieve the recPackage path or recPlay path in order to formulate a Download or Playback URL. If called by an Admin, returns all recordings on the account. If called by a Host, returns only their recordings.

Note: Recordings must be processed before they can be downloaded or played. You can request processing from the UI, or via startRemux query.

EXAMPLE Download URL (Account domain + recPackage):

https://myaccount.megameeting.com/getweb?recordingkey=/15/2441730/1611598120523/P2P-Recording-2441730-Tech-Meeting-01-25-2021-12-09-01.mp4

EXAMPLE Playback Full URL (Account domain + recPlay):

https://myaccount.megameeting.com/videoplayer/?key=2441730&session=1611598120523

Request

                
query {
  recordings {
    accId
    alId
    recId
    meetId
    recPackage
    recPlay
    recCreateDateTime
    remuxStatus
  }
}
                
              

Response

              
{
  "data": {
    "recordings": [
    {
      "accId": "61216bddfe32733c86597a5c",
      "alId": "5d93bc02ebf54f60016c5480",
      "recId": "59216bccfe32133c86597a6b",
      "meetId": "8626345",
      "recPackage": "61216bddfe32733c86597a5c/8626345/1612802816164/P2P-Recording-8626345-Tech-Meeting-02-08-2021-10-50-20.mp4",
      "recPlay": null,
      "recCreateDateTime": "Feb 8, 2021 10:50:20",
      "remuxStatus": "waiting"
    }
    ]
  }
}
                
              

apiTokenDetails
Get the api token of a specific user on the account. Requires the loginId of the user. Returns the api token, if it exists, for the user along with usage time stamp. Only available to Admin users.

Request

                
    query {
      apiTokenDetails(
        loginId: "5cc8525555555547431600d0"
      ) {
        domain
        apiToken
        createdAt
        lastUsed
      }
    }
                
              

Response

              
    {
      "data": {
        "apiTokenDetails": {
          "domain": "https://myaccount.megameeting.com",
          "apiToken": "IWVFBYLWG0QWY7EI55555555VKQHQ97X",
          "createdAt": "Tue Nov 26 2019 15:19:12 +0000",
          "lastUsed": "Tue Nov 26 2019 15:31:34 +0000"
        }
      }
    }
              
              

getVerifiedGuest
Retrieve the links and keys of your special attendees.

Request

                
    query {
      getVerifiedGuest(meetId: "7654321") {
        guestName
        key
        meetingLink
      }
    }
                
              

Response

              
    {
      "data": {
        "getVerifiedGuest": [
          {
            "guestName": "John Doe",
            "key": "abcdef123456",
            "meetingLink": "https://myaccount.megameeting.com/meeting/?key=abcdef123456"
          }
        ]
      }
    }
              
              

createMeeting
Create a new meeting. The most common API mutation. Creating a new meeting room with a unique ID is most often used for creating separate, private meetings and providing the unqiue ID to the participants.

Video Conference
For video meetings 2 - 50 people.

                
    mutation {
      createMeeting(
      input: {
        meetingName: "My Video Meeting"
        scheduledDateTime: "Fri Feb 12 2021 10:00:00 -0600"
        scheduledTimeZone: "CST/UTC-06:00"
        endDateTime: "Fri Feb 12 2021 11:30:00 -0600"
      }
      ) {
        message
        result
        status
      }
    }
                
              

Response
-

              
    {
      "data": {
        "createMeeting": {
          "message": "createMeeting() succeeded. New Meet_ID:1234567",
          "result": "1234567",
          "status": "completed"
        }
      }
    }
              
              

Webinar w/ Registration
For 1-to-many broadcasts.

                
    mutation {
      createMeeting(input: {
        meetingName: "API Webinar Test",
        scheduledDateTime: "Tue Nov 24 2020 12:30:00 -0600",
        scheduledTimeZone: "CST/UTC-06:00",
        endDateTime: "Tue Nov 24 2020 14:00:00 -0600"
        enableRegistration: true,
        disableVideo: true,
        disableAudio: true,
        disableScreen: true,
        disableFileUpload: true,
        disableWebVideoPlayer: true,
        enableRestrictedUserList: true,
        enableRestrictedChat: true,
        enableChimes: false,
      }) {
        message result status
      }
    }
                
              

Response
-

              
    {
      "data": {
        "createMeeting": {
          "message": "createMeeting() succeeded. New Meet_ID:7654321",
          "result": "7654321",
          "status": "completed"
        }
      }
    }
              
              

updateMeeting
Update an existing meeting. Changes to the meeting may not immediately effect an active meeting session. Changes will be applied to new users/sessions of the meeting. Example: Change meeting name.

Required:
meetId

                
mutation{
  updateMeeting(input:{
    meetId:"1234567"
    meetName: "My New Name"
  })
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "updateMeeting": {
      "message": "Meeting updated",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

endMeeting
Disable an existing meeting. This functions as "delete" for all intents and purposes. The meeting will no longer appear in any lists except for Reports, and cannot be joined or edited.

Required:
meetId

                
mutation{
  endMeeting(meetId:"1234567"){
    message
    result
    status
  }
}
                
              

Response
-

              
{
  "data": {
    "endMeeting": {
      "message": "Meeting ended",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

addVerifiedGuest
Add special attendees to your meetings who receive a unique link for maximum security and individualized permissions that override meeting defaults. Add the Moderator permission to add an additional host to your meeting. This API is often used in conjunction with "secure meetings" (requireVerification), such as doctors meeting with patients or attorneys meeting with clients. Be sure to run the getVerifiedGuest query to retrieve each user's link.

Add Special Attendees

                
mutation {
  addVerifiedGuest(
    input: {
      meetId: "7654321"
      guestName: "John Doe"
      email: "johndoe@domain.com"
      permissions: [
        webcam
        microphone
        screenSharing
        chat
        fileUpload
        fileDownload
        webVideoPlayer
      ]
    }
  ) {
    message
    result
    status
  }
}
                
              

Response

              
{
  "data": {
    "addVerifiedGuest": {
      "message": "Records added successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

updateVerifiedGuest
Update any existing special attendee. Mostly used to change name or permissions.

Required:
meetId, key

                
mutation{
  updateVerifiedGuest(
  	key: "abcdef123456"
  	meetId: "1234567"
  	permissions: [
    	webcam
    	microphone
  	]
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "updateVerifiedGuest": {
      "message": "Record updated successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

removeVerifiedGuest
Remove any existing special attendee. This will delete and invalidate their key, preventing any further access to the meeting.

Required:
meetId, key

                
mutation{
  removeVerifiedGuest(
    key: "abcdef123456"
    meetId: "1234567"
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "removeVerifiedGuest": {
      "message": "Removed successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

createLogin
ADMIN ONLY
Add a login to your account. Requires admin token, and an available license that has been purchased. There 3 options for handling password/authentication for a login:
Set a password during createLogin (Not Recommended).
Do not set a password, instead call userInvitation API to send the user an activation link to set their own password (Recommended).
Do not set a password, and use the login API from your own application as a single-sign on solution.
IMPORTANT: In most cases, you should only assign the host role to a login of your account. The admin role should be reserved for the account owner/management. Admin users have access to the data of other hosts such meetings and recordings.

Required:
email

                
mutation{
  createLogin(
    input:{
      email:"user@example.com"
      fullName:"Example User"
      roles:{
        host:true
      }
      phoneNumber:"444-444-4444"
    }
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "createLogin": {
      "message": "Login Created successfully!",
      "result": "602c8096f5403b091960f85f",
      "status": "completed"
    }
  }
}
              
              

updateLogin
ADMIN ONLY
Update a login to your account. Requires admin token. Update login is rarely used as most users will update their own details (such as name, phone number, password, etc.) from the user interface. If you must update a user via API, provide the loginId of the user and the value to be changed.

Required:
loginId

                
mutation{
  updateLogin(
    input:{
      loginId:"602c8096f5403b091960f85f"
      fullName:"Example User"
    }
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "updateLogin": {
      "message": "Details updated successfully!",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

deleteLogin
ADMIN ONLY
Deletes a login from your account and makes their license available to be reassigned. This is permanent and cannot be undone.

Required:
loginId

                
mutation{
  deleteLogin(
    loginId:"602c8096f5403b091960f85f"
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "deleteLogin": {
      "message": "Login deleted successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

createAPIToken
ADMIN ONLY
Creates an API token for a user on your account. Requires admin token. This is a way for an admin to generate an API token on behalf of another user, as an alternative to the user interface. In most cases this is not necessary, as the admin can perform most functions (such as createMeeting) on behalf of a user by providing their loginId in the API. But if necessary, you can use the API token of the actual user for a scoped integration.

Required:
loginId

                
mutation{
  createAPIToken(
    loginId:"5de976394005813985e4325f"
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "createAPIToken": {
      "message": "API token created successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

revokeAPIToken
ADMIN ONLY
Revokes the API token of a user. Requires admin token. Cannot be undone.

Required:
loginId

                
mutation{
  revokeAPIToken(
    loginId:"5de976394005813985e4325f"
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "revokeAPIToken": {
      "message": "API token revoked successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

userInvitation
ADMIN ONLY
Send an activation link to a newly-created login on your account. Used after createLogin. The user will receive an email with a 1-time-use activation link. After following the link, the user will be prompted to set their password, and then will be logged in to their account.

Required:
loginId

                
mutation{
  userInvitation(
    email:"user@example.com"
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "userInvitation": {
      "message": "Email sent successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

login
ADMIN ONLY
Create a 1-time-user login token for a user of your account. This can be implemented as a form of single-sign on in your application. By calling login, you receive a complete URL + token in the response that a user can consume. When the user navigates to the URL they are instantly authenticated and logged in to their account. Also accepts Meeting ID and Join Name arguments to bring a host directly into a meeting.

Required:
loginId

                
mutation{
  login(
    loginId:"5de976394005813985e4325f",
    meetId: "1234567",
    joinName:"Jane Doe"
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "login": {
      "message": "success",
      "result": "https://myaccount.megameeting.com/?token=token&u=user&meetId=1234567&joinName=Jane%20Doe",
      "status": "200"
    }
  }
}
              
              

deleteRecording
Delete a recording. This is permanent and cannot be undone.

Required:
recId, accId

                
mutation{
  deleteRecording(
    recId:"1234567890"
    accId:"1234567890"
  )
{
  message
  result
  status
}}
                
              

Response
-

              
{
  "data": {
    "deleteRecording": {
      "message": "Recording removed successfully",
      "result": "1",
      "status": "completed"
    }
  }
}
              
              

Try it FREE for 14 Days!
Try our meeting and webinar platform for 14 days, completely free!

Start My Free Trial