Stay organized with collections
Save and categorize content based on your preferences.
Google Meet Media API clients must periodically upload client statistics over
the media-stats data channel.
The entries required by the Meet Media API are a subset of the
statistics
gathered by WebRTC, which are accessible by calling the
RTCPeerConnection::getStats() method.
Client flow
All Meet Media API clients must implement the following flow.
Initial configuration
After the client opens the media-stats data channel, Meet
immediately sends a
MediaStatsConfiguration
resource update over the channel. This configuration specifies how the client
should upload stats.
[null,null,["Last updated 2025-08-28 UTC."],[],[],null,["# Upload client metrics to the Meet Media API\n\n| **Developer Preview:** Available as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. \n|\n| **To use the Meet Media API to access real-time media from a conference, the Google Cloud project, OAuth principal, and all participants in the conference must be enrolled in the Developer Preview Program.**\n\nGoogle Meet Media API clients must periodically upload client statistics over\nthe `media-stats` data channel.\n\nThe entries required by the Meet Media API are a subset of the\n[statistics](https://w3c.github.io/webrtc-pc/#mandatory-to-implement-stats)\ngathered by WebRTC, which are accessible by calling the\n`RTCPeerConnection::getStats()` method.\n\nClient flow\n-----------\n\nAll Meet Media API clients must implement the following flow.\n| **Tip:** The provided reference clients ([C++](/workspace/meet/media-api/guides/cpp), [TypeScript](/workspace/meet/media-api/guides/ts)) show how to implement this flow.\n\n### Initial configuration\n\nAfter the client opens the `media-stats` data channel, Meet\nimmediately sends a\n[`MediaStatsConfiguration`](/workspace/meet/media-api/reference/dc/media_api.mediastatsconfiguration)\nresource update over the channel. This configuration specifies how the client\nshould upload stats.\n\n| Configuration |\n|---------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|\n| [`uploadIntervalSeconds`](/workspace/meet/media-api/reference/dc/media_api.mediastatsconfiguration.uploadintervalseconds) | Specifies how frequently the Meet Media API client should upload statistics, or zero if the client shouldn't upload any. |\n| [`allowlist`](/workspace/meet/media-api/reference/dc/media_api.mediastatsconfiguration.allowlist) | Specifies which `RTCPeerConnection::getStats()` entries the client should upload. |\n\n### Stats upload\n\nWhile connected to a conference, the Meet Media API client must:\n\n1. Call the `RTCPeerConnection::getStats()` method at the interval specified by\n [`uploadIntervalSeconds`](/workspace/meet/media-api/reference/dc/media_api.mediastatsconfiguration.uploadintervalseconds).\n\n2. Filter the resulting stats object down to the fields specified by\n [`allowlist`](/workspace/meet/media-api/reference/dc/media_api.mediastatsconfiguration.allowlist).\n\n3. Upload the filtered stats by sending a [`UploadMediaStatsRequest`](/workspace/meet/media-api/reference/dc/media_api.uploadmediastatsrequest)\n across the `media-stats` data channel.\n\nRelated topics\n--------------\n\n- [Meet Media API concepts](/workspace/meet/media-api/guides/concepts)\n- [Get started with Meet Media API](/workspace/meet/media-api/guides/get-started)"]]