Generate a list of past meetings

Last updated: 2024-04-05Contributors
Edit this page

RingCentral Video REST API and Client SDKs are in beta

The RingCentral Video REST API and Client SDKs are currently in beta. Developers should be aware of the following:

  • Their feature sets are not reflective of the full scope currently planned.
  • Backwards compatibility is not guaranteed from one release to the next during the beta period. Changes can be introduced at any time that may impact your applications with little notice.
  • Video APIs are not currently available in our sandbox environment and developers are asked to do development in our production environment.

The RingCentral Video API makes it possible to fetch the meeting history associated with the user in the current authentication context. The meeting history contains all the meetings that user attended, and each meeting record may contain a meeting recording if one was made for the meeting. The sample code below will help you construct a call to access this meeting history.

const RC = require('@ringcentral/sdk').SDK
require('dotenv').config();

var rcsdk = new RC({
    'server':       process.env.RC_SERVER_URL,
    'clientId':     process.env.RC_CLIENT_ID,
    'clientSecret': process.env.RC_CLIENT_SECRET
});
var platform = rcsdk.platform();
platform.login({ 'jwt':  process.env.RC_JWT })

platform.on(platform.events.loginSuccess, () => {
    fetch_history()
})

async function fetch_history() {
    try {
    var resp = await platform.get('/rcvideo/v1/history/meetings')
    var jsonObj = await resp.json()
        for (var meeting of jsonObj.meetings){
            console.log("Meeting:")
            console.log("  name: " + record.displayName)
            console.log("  start time: " + record.startTime)
            console.log("  end time: " + record.endTime)
        }
    } catch (e) {
    console.log(e.message)
    }
});

Example meeting history response

The typical response to retrieve meeting histories will look something like the following:

    {
        "meetings": [
        {
            "id": "0fd2ae49-10a0-4db0-8dd1-61d340e97461!us-11-pdx10@us-11",
            "bridgeId": "sjc01-c04-ndb4461eb1fc4f6efb310088b1681",
            "shortId": "114771428",
            "startTime": "2022-01-27T00:03:34.906Z",
            "displayName": "Questions we need to discuss",
            "type": "Meeting",
            "status": "Done",
            "hostInfo":
            {
                "accountId": "37455510",
                "extensionId": "1585550021",
                "displayName": "Byrne Reese"
            },
            "duration": 2223,
            "rights": ["download", "share", "delete"],
            "participants": [
            {
                "type": "Leave",
                "id": "5f9e_6679",
                "accountId": "37555510",
                "extensionId": "1585550021",
                "displayName": "Byrne Reese"
            },
            {
                "type": "Leave",
                "id": "4b23_6680",
                "accountId": "37455510",
                "extensionId": "2105556020",
                "displayName": "Michael Throssel"
            },
            {
                "type": "InConference",
                "id": "fb79_6662",
                "accountId": "37555510",
                "extensionId": "2105555020",
                "displayName": "Becky Hensley"
            }],
            "recordings": [
            {
                "id": "554d06ea-5d44-498a-93e9-0978bfa73ecd",
                "availabilityStatus": "Alive",
                "startTime": 1643242400003,
                "mediaURL": "/rcvideo/v1/recordings/tSq3o_xxxx_j0YUA==",
                "url": "https://media.ringcentral.com/rcvideo/v1/recordings/tSq3o_xxx_j0YUA==",
                "metadata": {
                    "duration": 1638,
                    "fileSize": 66484597
                },
                "status": "Processed",
                "longSummary": "",
                "shortSummary": "The participants are looking for an opportunity \
                       in aha that is associated with an account.",
                "keywords": ["multiple deals", "potential revenue", "logic", 
                             "sales force", "opportunity", "account", "customer",
                             "stage menu", "specific status"]
            }]
        }],
        "chatUrl": "https://media.ringcentral.com/rcvideo/v1/chats/7tSq3xxx8RfkFjEw==",
        "paging": {
            "currentPageToken": "ewogICJ0xxxxxIDE1ODA5MzAxxxxIKfQ=="
        }
    }

Searching meeting history

One can search one's meeting history using one or more of the following:

  • Date range. Specify a startTime and endTime parameter expressed in Unix EPOCH time to constrain search results to a time range.
  • Keyword. Specify a text parameter to search meeting names by the provided keyword or phrase.
  • Type. Specify the type of meeting to search by. Supported values are None (default), All, My, Deleted, Shared.

Accessing the history of a single meeting

If you know the meeting ID, a single meeting can be retrieved by passing it into the Meeting History endpoint as shown below. This is a good way to poll a single meeting while you wait for a recording to be ready, or for the meeting to end.

platform.get('/rcvideo/v1/history/meetings/0fd2ae49-xxxx-7461!us-11-pdx10@us-11')
.then(function (resp) {
    console.log( resp.json() )
});

Accessing meeting recordings

When a meeting is recorded, it automatically enables AI subroutines to help summarize meeting content within the meeting history. Associated with each recording record returned by the History API is a metadata element that contains a shortSummary and keywords. These values are generated for you to help you understand the content of the meeting.

"recordings": [
{
    "id": "554d06ea-5d44-498a-93e9-0978bfa73ecd",
    "availabilityStatus": "Alive",
    "startTime": 1643242400003,
    "mediaURL": "/rcvideo/v1/recordings/7tSq3ol_xxxx_7LvUNdf7KQfgfFyX_j0YUA==",
    "url": "https://media.ringcentral.com/rcvideo/v1/recordings/7tSq3ol_xxx_j0YUA==",
    "metadata": {
        "duration": 1638,
        "fileSize": 66484597
    },
    "status": "Processed",
    "longSummary": "",
    "shortSummary": "The participants are looking for an opportunity in aha \
                     that is associated with an account.",
    "keywords": ["multiple deals", "potential revenue", "logic", "sales force",
                 "opportunity", "account", "customer", "stage menu", 
                 "specific status"]
}]

How to download meeting recordings via the API

The downloading of meetings recordings is protected by an authentication layer to protect and secure meeting recordings.

Meeting recordings reside behind RingCentral's media domain. To learn more about accessing protected media content, and other issues relating to the access of large media files, see the Media content under "Using the API".

What is RingCentral's meeting recording retention policy ?

RingCentral Video recordings are stored for 1 year from the time they are created.

They are automatically deleted at the 1 year mark. Users will receive an email notification if the Recording is deleted option is enabled their preferences.

When are multiple recording returned?

When fetching meeting histories, you will see that an array of recordings is return. Multiple recordings may appear for the following reasons:

  1. If there is an unplanned disruption to the recording, due to a problem on the backend, two files may appear.
  2. In the future we plan to implement an option to limit recording file sizes. In this scenario, recordings will automatically be partitioned into multiple files.

Of note, starting, stopping and starting recording again will NOT result in multiple files.

Most of the time recordings should contain a single mono-channel audio and video stream.

Paginating through results

When requesting a meeting history, if there are multiple pages in the result set you will see a paging element similar to:

"paging": {
    "currentPageToken": "ewogXXXICJ0IiA6I==",
    "nextPageToken": "hjdgfXXXXXX28fhjs=="
}

To fetch the next page, specify the page token using the pageToken request parameter like so:

GET /rcvideo/v1/history/meetings?pageToken=hjdgfXXXXXX28fhjs%3D%3D