# Sessions ## Fetch all sessions of an App `client.RealtimeKit.Sessions.GetSessions(ctx, appID, params) (*SessionGetSessionsResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions` Returns details of all sessions of an App. ### Parameters - `appID string` The app identifier tag. - `params SessionGetSessionsParams` - `AccountID param.Field[string]` Path param: The account identifier tag. - `AssociatedID param.Field[string]` Query param: ID of the meeting that sessions should be associated with - `EndTime param.Field[Time]` Query param: The end time range for which you want to retrieve the meetings. The time must be specified in ISO format. - `PageNo param.Field[float64]` Query param: The page number from which you want your page search results to be displayed. - `Participants param.Field[string]` Query param - `PerPage param.Field[float64]` Query param: Number of results per page - `Search param.Field[string]` Query param: Search string that matches sessions based on meeting title, meeting ID, and session ID - `SortBy param.Field[SessionGetSessionsParamsSortBy]` Query param - `const SessionGetSessionsParamsSortByMinutesConsumed SessionGetSessionsParamsSortBy = "minutesConsumed"` - `const SessionGetSessionsParamsSortByCreatedAt SessionGetSessionsParamsSortBy = "createdAt"` - `SortOrder param.Field[SessionGetSessionsParamsSortOrder]` Query param - `const SessionGetSessionsParamsSortOrderAsc SessionGetSessionsParamsSortOrder = "ASC"` - `const SessionGetSessionsParamsSortOrderDesc SessionGetSessionsParamsSortOrder = "DESC"` - `StartTime param.Field[Time]` Query param: The start time range for which you want to retrieve the meetings. The time must be specified in ISO format. - `Status param.Field[SessionGetSessionsParamsStatus]` Query param - `const SessionGetSessionsParamsStatusLive SessionGetSessionsParamsStatus = "LIVE"` - `const SessionGetSessionsParamsStatusEnded SessionGetSessionsParamsStatus = "ENDED"` ### Returns - `type SessionGetSessionsResponse struct{…}` - `Data SessionGetSessionsResponseData` - `Sessions []SessionGetSessionsResponseDataSession` - `ID string` ID of the session - `AssociatedID string` ID of the meeting this session is associated with. In the case of V2 meetings, it is always a UUID. In V1 meetings, it is a room name of the form `abcdef-ghijkl` - `CreatedAt string` timestamp when session created - `LiveParticipants float64` number of participants currently in the session - `MaxConcurrentParticipants float64` number of maximum participants that were in the session - `MeetingDisplayName string` Title of the meeting this session belongs to - `MinutesConsumed float64` number of minutes consumed since the session started - `OrganizationID string` App id that hosted this session - `StartedAt string` timestamp when session started - `Status SessionGetSessionsResponseDataSessionsStatus` current status of session - `const SessionGetSessionsResponseDataSessionsStatusLive SessionGetSessionsResponseDataSessionsStatus = "LIVE"` - `const SessionGetSessionsResponseDataSessionsStatusEnded SessionGetSessionsResponseDataSessionsStatus = "ENDED"` - `Type SessionGetSessionsResponseDataSessionsType` type of session - `const SessionGetSessionsResponseDataSessionsTypeMeeting SessionGetSessionsResponseDataSessionsType = "meeting"` - `const SessionGetSessionsResponseDataSessionsTypeLivestream SessionGetSessionsResponseDataSessionsType = "livestream"` - `const SessionGetSessionsResponseDataSessionsTypeParticipant SessionGetSessionsResponseDataSessionsType = "participant"` - `UpdatedAt string` timestamp when session was last updated - `BreakoutRooms []unknown` - `EndedAt string` timestamp when session ended - `Paging SessionGetSessionsResponsePaging` - `EndOffset float64` - `StartOffset float64` - `TotalCount float64` - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetSessions( context.TODO(), "app_id", realtime_kit.SessionGetSessionsParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "sessions": [ { "id": "id", "associated_id": "associated_id", "created_at": "created_at", "live_participants": 0, "max_concurrent_participants": 0, "meeting_display_name": "meeting_display_name", "minutes_consumed": 0, "organization_id": "organization_id", "started_at": "started_at", "status": "LIVE", "type": "meeting", "updated_at": "updated_at", "breakout_rooms": [ {} ], "ended_at": "ended_at" } ] }, "paging": { "end_offset": 0, "start_offset": 0, "total_count": 0 }, "success": true } ``` ## Fetch details of a session `client.RealtimeKit.Sessions.GetSessionDetails(ctx, appID, sessionID, params) (*SessionGetSessionDetailsResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}` Returns data of the given session ID including recording details. ### Parameters - `appID string` The app identifier tag. - `sessionID string` - `params SessionGetSessionDetailsParams` - `AccountID param.Field[string]` Path param: The account identifier tag. - `IncludeBreakoutRooms param.Field[bool]` Query param: List all breakout rooms ### Returns - `type SessionGetSessionDetailsResponse struct{…}` - `Data SessionGetSessionDetailsResponseData` - `ID string` ID of the session - `AssociatedID string` ID of the meeting this session is associated with. In the case of V2 meetings, it is always a UUID. In V1 meetings, it is a room name of the form `abcdef-ghijkl` - `CreatedAt string` timestamp when session created - `LiveParticipants float64` number of participants currently in the session - `MaxConcurrentParticipants float64` number of maximum participants that were in the session - `MeetingDisplayName string` Title of the meeting this session belongs to - `MinutesConsumed float64` number of minutes consumed since the session started - `OrganizationID string` App id that hosted this session - `StartedAt string` timestamp when session started - `Status SessionGetSessionDetailsResponseDataStatus` current status of session - `const SessionGetSessionDetailsResponseDataStatusLive SessionGetSessionDetailsResponseDataStatus = "LIVE"` - `const SessionGetSessionDetailsResponseDataStatusEnded SessionGetSessionDetailsResponseDataStatus = "ENDED"` - `Type SessionGetSessionDetailsResponseDataType` type of session - `const SessionGetSessionDetailsResponseDataTypeMeeting SessionGetSessionDetailsResponseDataType = "meeting"` - `const SessionGetSessionDetailsResponseDataTypeLivestream SessionGetSessionDetailsResponseDataType = "livestream"` - `const SessionGetSessionDetailsResponseDataTypeParticipant SessionGetSessionDetailsResponseDataType = "participant"` - `UpdatedAt string` timestamp when session was last updated - `BreakoutRooms []unknown` - `EndedAt string` timestamp when session ended - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetSessionDetails( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGetSessionDetailsParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "id": "id", "associated_id": "associated_id", "created_at": "created_at", "live_participants": 0, "max_concurrent_participants": 0, "meeting_display_name": "meeting_display_name", "minutes_consumed": 0, "organization_id": "organization_id", "started_at": "started_at", "status": "LIVE", "type": "meeting", "updated_at": "updated_at", "breakout_rooms": [ {} ], "ended_at": "ended_at" }, "success": true } ``` ## Fetch participants list of a session `client.RealtimeKit.Sessions.GetSessionParticipants(ctx, appID, sessionID, params) (*SessionGetSessionParticipantsResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/participants` Returns a list of participants for the given session ID. ### Parameters - `appID string` The app identifier tag. - `sessionID string` - `params SessionGetSessionParticipantsParams` - `AccountID param.Field[string]` Path param: The account identifier tag. - `IncludePeerEvents param.Field[bool]` Query param: if true, response includes all the peer events of participants. - `PageNo param.Field[float64]` Query param: The page number from which you want your page search results to be displayed. - `PerPage param.Field[float64]` Query param: Number of results per page - `Search param.Field[string]` Query param: The search query string. You can search using participant ID, custom participant ID, or display name. - `SortBy param.Field[SessionGetSessionParticipantsParamsSortBy]` Query param - `const SessionGetSessionParticipantsParamsSortByJoinedAt SessionGetSessionParticipantsParamsSortBy = "joinedAt"` - `const SessionGetSessionParticipantsParamsSortByDuration SessionGetSessionParticipantsParamsSortBy = "duration"` - `SortOrder param.Field[SessionGetSessionParticipantsParamsSortOrder]` Query param - `const SessionGetSessionParticipantsParamsSortOrderAsc SessionGetSessionParticipantsParamsSortOrder = "ASC"` - `const SessionGetSessionParticipantsParamsSortOrderDesc SessionGetSessionParticipantsParamsSortOrder = "DESC"` - `View param.Field[SessionGetSessionParticipantsParamsView]` Query param: In breakout room sessions, the view parameter can be set to `raw` for session specific duration for participants or `consolidated` to accumulate breakout room durations. - `const SessionGetSessionParticipantsParamsViewRaw SessionGetSessionParticipantsParamsView = "raw"` - `const SessionGetSessionParticipantsParamsViewConsolidated SessionGetSessionParticipantsParamsView = "consolidated"` ### Returns - `type SessionGetSessionParticipantsResponse struct{…}` - `Data SessionGetSessionParticipantsResponseData` - `Participants []SessionGetSessionParticipantsResponseDataParticipant` - `ID string` Participant ID. This maps to the corresponding peerId. - `CreatedAt string` timestamp when this participant was created. - `CustomParticipantID string` ID passed by client to create this participant. - `DisplayName string` Display name of participant when joining the session. - `Duration float64` number of minutes for which the participant was in the session. - `JoinedAt string` timestamp at which participant joined the session. - `LeftAt string` timestamp at which participant left the session. - `PeerEvents []SessionGetSessionParticipantsResponseDataParticipantsPeerEvent` Connection lifecycle events for the participant's peer. Only included when `include_peer_events` is true. - `ID string` ID of the peer event. - `CreatedAt string` Timestamp when this peer event was created. - `EventName SessionGetSessionParticipantsResponseDataParticipantsPeerEventsEventName` Name of the peer event. - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsEventNamePeerCreated SessionGetSessionParticipantsResponseDataParticipantsPeerEventsEventName = "PEER_CREATED"` - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsEventNamePeerJoining SessionGetSessionParticipantsResponseDataParticipantsPeerEventsEventName = "PEER_JOINING"` - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsEventNamePeerLeaving SessionGetSessionParticipantsResponseDataParticipantsPeerEventsEventName = "PEER_LEAVING"` - `MinutesConsumed float64` Minutes consumed attributed to this event. - `ParticipantID string` ID of the participant this event belongs to. - `PeerID string` Peer ID this event belongs to. - `PresetViewType SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewType` View type of the preset associated with the peer. - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewTypeGroupCall SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewType = "GROUP_CALL"` - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewTypeWebinar SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewType = "WEBINAR"` - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewTypeAudioRoom SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewType = "AUDIO_ROOM"` - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewTypeLivestream SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewType = "LIVESTREAM"` - `const SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewTypeChat SessionGetSessionParticipantsResponseDataParticipantsPeerEventsPresetViewType = "CHAT"` - `SessionID string` ID of the session this event belongs to. - `SocketSessionID string` ID of the socket session associated with this event. - `UpdatedAt string` Timestamp when this peer event was last updated. - `PresetName string` Name of the preset associated with the participant. - `UpdatedAt string` timestamp when this participant's data was last updated. - `UserID string` User id for this participant. - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetSessionParticipants( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGetSessionParticipantsParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "paging": { "end_offset": 2, "start_offset": 1, "total_count": 123 }, "participants": [ { "created_at": "2023-02-01T10:51:08.039Z", "custom_participant_id": "83qi0i", "display_name": "Mark", "duration": 5.8097, "id": "005f4e0c-4d08-4d4e-a391-a76be75cd296", "joined_at": "2023-02-01T10:51:08.030Z", "left_at": "2023-02-01T10:56:56.612Z", "preset_name": "webinar_participant", "updated_at": "2023-02-01T10:56:56.618Z", "user_id": "0a08343d-a9dc-45f0-9feb-6a64afcc4f81" }, { "created_at": "2023-02-01T10:50:36.853Z", "custom_participant_id": "3uggr", "display_name": "Henry", "duration": 6.9263, "id": "51fdf95f-d893-471a-922b-7db7adb14453", "joined_at": "2023-02-01T10:50:36.846Z\"", "left_at": "2023-02-01T10:57:32.424Z", "preset_name": "webinar_participant", "updated_at": "2023-02-01T10:57:32.431Z", "user_id": "85e7f0fd-7c16-45e9-9d68-f17ef007c4eb" } ] }, "success": true } ``` ## Fetch details of a participant `client.RealtimeKit.Sessions.GetSessionParticipantDetails(ctx, appID, sessionID, participantID, params) (*SessionGetSessionParticipantDetailsResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/participants/{participant_id}` Returns details of the given participant ID along with call statistics for the given session ID. ### Parameters - `appID string` The app identifier tag. - `sessionID string` - `participantID string` - `params SessionGetSessionParticipantDetailsParams` - `AccountID param.Field[string]` Path param: The account identifier tag. - `IncludePeerEvents param.Field[bool]` Query param: if true, response includes all the peer events of participant. ### Returns - `type SessionGetSessionParticipantDetailsResponse struct{…}` - `Data SessionGetSessionParticipantDetailsResponseData` - `Participant SessionGetSessionParticipantDetailsResponseDataParticipant` - `ID string` Participant ID. This maps to the corresponding peerId. - `CreatedAt string` timestamp when this participant was created. - `CustomParticipantID string` ID passed by client to create this participant. - `DisplayName string` Display name of participant when joining the session. - `Duration float64` number of minutes for which the participant was in the session. - `JoinedAt string` timestamp at which participant joined the session. - `LeftAt string` timestamp at which participant left the session. - `PeerEvents []SessionGetSessionParticipantDetailsResponseDataParticipantPeerEvent` Connection lifecycle events for the participant's peer. Only included when `include_peer_events` is true. - `ID string` ID of the peer event. - `CreatedAt string` Timestamp when this peer event was created. - `EventName SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsEventName` Name of the peer event. - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsEventNamePeerCreated SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsEventName = "PEER_CREATED"` - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsEventNamePeerJoining SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsEventName = "PEER_JOINING"` - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsEventNamePeerLeaving SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsEventName = "PEER_LEAVING"` - `MinutesConsumed float64` Minutes consumed attributed to this event. - `ParticipantID string` ID of the participant this event belongs to. - `PeerID string` Peer ID this event belongs to. - `PresetViewType SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewType` View type of the preset associated with the peer. - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewTypeGroupCall SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewType = "GROUP_CALL"` - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewTypeWebinar SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewType = "WEBINAR"` - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewTypeAudioRoom SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewType = "AUDIO_ROOM"` - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewTypeLivestream SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewType = "LIVESTREAM"` - `const SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewTypeChat SessionGetSessionParticipantDetailsResponseDataParticipantPeerEventsPresetViewType = "CHAT"` - `SessionID string` ID of the session this event belongs to. - `SocketSessionID string` ID of the socket session associated with this event. - `UpdatedAt string` Timestamp when this peer event was last updated. - `PresetName string` Name of the preset associated with the participant. - `UpdatedAt string` timestamp when this participant's data was last updated. - `UserID string` User id for this participant. - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetSessionParticipantDetails( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGetSessionParticipantDetailsParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "participant": { "id": "id", "created_at": "created_at", "custom_participant_id": "custom_participant_id", "display_name": "display_name", "duration": 0, "joined_at": "joined_at", "left_at": "left_at", "peer_events": [ { "id": "id", "created_at": "created_at", "event_name": "PEER_CREATED", "minutes_consumed": 0, "participant_id": "participant_id", "peer_id": "peer_id", "preset_view_type": "GROUP_CALL", "session_id": "session_id", "socket_session_id": "socket_session_id", "updated_at": "updated_at" } ], "preset_name": "preset_name", "updated_at": "updated_at", "user_id": "user_id" } }, "success": true } ``` ## Fetch all chat messages of a session `client.RealtimeKit.Sessions.GetSessionChat(ctx, appID, sessionID, query) (*SessionGetSessionChatResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/chat` Returns a URL to download all chat messages of the session ID in CSV format. ### Parameters - `appID string` The app identifier tag. - `sessionID string` - `query SessionGetSessionChatParams` - `AccountID param.Field[string]` The account identifier tag. ### Returns - `type SessionGetSessionChatResponse struct{…}` - `Data SessionGetSessionChatResponseData` - `ChatDownloadURL string` URL where the chat logs can be downloaded - `ChatDownloadURLExpiry string` Time when the download URL will expire - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetSessionChat( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGetSessionChatParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "chat_download_url": "chat_download_url", "chat_download_url_expiry": "chat_download_url_expiry" }, "success": true } ``` ## Fetch the complete transcript for a session `client.RealtimeKit.Sessions.GetSessionTranscripts(ctx, appID, sessionID, params) (*SessionGetSessionTranscriptsResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/transcript` Returns a URL to download the transcript for the session ID in CSV format. ### Parameters - `appID string` The app identifier tag. - `sessionID string` - `params SessionGetSessionTranscriptsParams` - `AccountID param.Field[string]` Path param: The account identifier tag. - `Format param.Field[SessionGetSessionTranscriptsParamsFormat]` Query param: Transcript file format to fetch. - `const SessionGetSessionTranscriptsParamsFormatSrt SessionGetSessionTranscriptsParamsFormat = "SRT"` - `const SessionGetSessionTranscriptsParamsFormatVtt SessionGetSessionTranscriptsParamsFormat = "VTT"` - `const SessionGetSessionTranscriptsParamsFormatJson SessionGetSessionTranscriptsParamsFormat = "JSON"` - `const SessionGetSessionTranscriptsParamsFormatCsv SessionGetSessionTranscriptsParamsFormat = "CSV"` ### Returns - `type SessionGetSessionTranscriptsResponse struct{…}` - `Data SessionGetSessionTranscriptsResponseData` - `SessionID string` - `TranscriptDownloadURL string` URL where the transcript can be downloaded - `TranscriptDownloadURLExpiry string` Time when the download URL will expire - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetSessionTranscripts( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGetSessionTranscriptsParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "sessionId": "sessionId", "transcript_download_url": "transcript_download_url", "transcript_download_url_expiry": "transcript_download_url_expiry" }, "success": true } ``` ## Fetch summary of transcripts for a session `client.RealtimeKit.Sessions.GetSessionSummary(ctx, appID, sessionID, query) (*SessionGetSessionSummaryResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/summary` Returns a Summary URL to download the Summary of Transcripts for the session ID as plain text. ### Parameters - `appID string` The app identifier tag. - `sessionID string` - `query SessionGetSessionSummaryParams` - `AccountID param.Field[string]` The account identifier tag. ### Returns - `type SessionGetSessionSummaryResponse struct{…}` - `Data SessionGetSessionSummaryResponseData` - `SessionID string` - `SummaryDownloadURL string` URL where the summary of transcripts can be downloaded - `SummaryDownloadURLExpiry string` Time of Expiry before when you need to download the csv file. - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetSessionSummary( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGetSessionSummaryParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "sessionId": "sessionId", "summaryDownloadUrl": "summaryDownloadUrl", "summaryDownloadUrlExpiry": "summaryDownloadUrlExpiry" }, "success": true } ``` ## Generate summary of Transcripts for the session `client.RealtimeKit.Sessions.GenerateSummaryOfTranscripts(ctx, appID, sessionID, body) (*SessionGenerateSummaryOfTranscriptsResponse, error)` **post** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/summary` Trigger Summary generation of Transcripts for the session ID. ### Parameters - `appID string` The app identifier tag. - `sessionID string` - `body SessionGenerateSummaryOfTranscriptsParams` - `AccountID param.Field[string]` The account identifier tag. ### Returns - `type SessionGenerateSummaryOfTranscriptsResponse struct{…}` - `Data SessionGenerateSummaryOfTranscriptsResponseData` - `SessionID string` - `Status string` - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GenerateSummaryOfTranscripts( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGenerateSummaryOfTranscriptsParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "session_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "status": "status" }, "success": true } ``` ## Fetch details of peer `client.RealtimeKit.Sessions.GetParticipantDataFromPeerID(ctx, appID, peerID, params) (*SessionGetParticipantDataFromPeerIDResponse, error)` **get** `/accounts/{account_id}/realtime/kit/{app_id}/sessions/peer-report/{peer_id}` Returns participant details for the given peer ID along with call statistics. ### Parameters - `appID string` The app identifier tag. - `peerID string` - `params SessionGetParticipantDataFromPeerIDParams` - `AccountID param.Field[string]` Path param: The account identifier tag. - `Filters param.Field[SessionGetParticipantDataFromPeerIDParamsFilters]` Query param: Filter to apply to the peer report. - `const SessionGetParticipantDataFromPeerIDParamsFiltersDeviceInfo SessionGetParticipantDataFromPeerIDParamsFilters = "device_info"` - `const SessionGetParticipantDataFromPeerIDParamsFiltersIPInformation SessionGetParticipantDataFromPeerIDParamsFilters = "ip_information"` - `const SessionGetParticipantDataFromPeerIDParamsFiltersPrecallNetworkInformation SessionGetParticipantDataFromPeerIDParamsFilters = "precall_network_information"` - `const SessionGetParticipantDataFromPeerIDParamsFiltersEvents SessionGetParticipantDataFromPeerIDParamsFilters = "events"` - `const SessionGetParticipantDataFromPeerIDParamsFiltersQualityStats SessionGetParticipantDataFromPeerIDParamsFilters = "quality_stats"` - `IncludePeerEvents param.Field[bool]` Query param: if true, response includes all the peer events of participant. ### Returns - `type SessionGetParticipantDataFromPeerIDResponse struct{…}` - `Data SessionGetParticipantDataFromPeerIDResponseData` - `Participant SessionGetParticipantDataFromPeerIDResponseDataParticipant` - `ID string` ID of the participant. - `CreatedAt string` timestamp when this participant was created. - `CustomParticipantID string` ID passed by client to create this participant. - `DisplayName string` Display name of participant when joining the session. - `Duration float64` number of minutes for which the participant was in the session. - `JoinedAt string` timestamp at which participant joined the session. - `LeftAt string` timestamp at which participant left the session. - `PeerEvents []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEvent` Connection lifecycle events for the participant's peer. - `ID string` ID of the peer event. - `CreatedAt string` Timestamp when this peer event was created. - `EventName SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsEventName` Name of the peer event. - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsEventNamePeerCreated SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsEventName = "PEER_CREATED"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsEventNamePeerJoining SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsEventName = "PEER_JOINING"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsEventNamePeerLeaving SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsEventName = "PEER_LEAVING"` - `MinutesConsumed float64` Minutes consumed attributed to this event. - `ParticipantID string` ID of the participant this event belongs to. - `PeerID string` Peer ID this event belongs to. - `PresetViewType SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewType` View type of the preset associated with the peer. - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewTypeGroupCall SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewType = "GROUP_CALL"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewTypeWebinar SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewType = "WEBINAR"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewTypeAudioRoom SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewType = "AUDIO_ROOM"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewTypeLivestream SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewType = "LIVESTREAM"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewTypeChat SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerEventsPresetViewType = "CHAT"` - `SessionID string` ID of the session this event belongs to. - `SocketSessionID string` ID of the socket session associated with this event. - `UpdatedAt string` Timestamp when this peer event was last updated. - `PeerReport SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReport` Peer call statistics report. - `Metadata SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadata` Connection and device metadata for the participant. - `AudioDevicesUpdates []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataAudioDevicesUpdate` - `Added []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataAudioDevicesUpdatesAdded` Devices that became available. - `DeviceID string` ID of the device. - `Kind string` Kind of device, for example audioinput or videoinput. - `Label string` Human-readable label of the device. - `Removed []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataAudioDevicesUpdatesRemoved` Devices that became unavailable. - `DeviceID string` ID of the device. - `Kind string` Kind of device, for example audioinput or videoinput. - `Label string` Human-readable label of the device. - `Timestamp string` Timestamp of the device update. - `BrowserMetadata SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataBrowserMetadata` - `Browser string` - `BrowserVersion string` - `Engine string` - `UserAgent string` - `WebglSupport bool` - `CandidatePairs SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataCandidatePairs` - `ConsumingTransport []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataCandidatePairsConsumingTransport` - `AvailableIncomingBitrate float64` - `AvailableOutgoingBitrate float64` - `BytesDiscardedOnSend float64` - `BytesReceived float64` - `BytesSent float64` - `CurrentRoundTripTime float64` - `LastPacketReceivedTimestamp float64` Epoch milliseconds when the last packet was received. - `LastPacketSentTimestamp float64` Epoch milliseconds when the last packet was sent. - `LocalCandidateAddress string` - `LocalCandidateID string` - `LocalCandidateNetworkType string` - `LocalCandidatePort float64` - `LocalCandidateProtocol string` - `LocalCandidateRelatedAddress string` - `LocalCandidateRelatedPort float64` - `LocalCandidateType string` - `LocalCandidateURL string` - `Nominated bool` - `PacketsDiscardedOnSend float64` - `PacketsReceived float64` - `PacketsSent float64` - `RemoteCandidateAddress string` - `RemoteCandidateID string` - `RemoteCandidatePort float64` - `RemoteCandidateProtocol string` - `RemoteCandidateType string` - `RemoteCandidateURL string` - `TotalRoundTripTime float64` - `ProducingTransport []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataCandidatePairsProducingTransport` - `AvailableIncomingBitrate float64` - `AvailableOutgoingBitrate float64` - `BytesDiscardedOnSend float64` - `BytesReceived float64` - `BytesSent float64` - `CurrentRoundTripTime float64` - `LastPacketReceivedTimestamp float64` Epoch milliseconds when the last packet was received. - `LastPacketSentTimestamp float64` Epoch milliseconds when the last packet was sent. - `LocalCandidateAddress string` - `LocalCandidateID string` - `LocalCandidateNetworkType string` - `LocalCandidatePort float64` - `LocalCandidateProtocol string` - `LocalCandidateRelatedAddress string` - `LocalCandidateRelatedPort float64` - `LocalCandidateType string` - `LocalCandidateURL string` - `Nominated bool` - `PacketsDiscardedOnSend float64` - `PacketsReceived float64` - `PacketsSent float64` - `RemoteCandidateAddress string` - `RemoteCandidateID string` - `RemoteCandidatePort float64` - `RemoteCandidateProtocol string` - `RemoteCandidateType string` - `RemoteCandidateURL string` - `TotalRoundTripTime float64` - `DeviceInfo SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataDeviceInfo` - `CPUs float64` - `IsMobile bool` - `OS string` - `OSVersion string` - `Events []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataEvent` - `Metadata map[string, SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataEventsMetadataUnion]` Event-specific metadata. Keys vary per event; values are primitive scalars (string, number, boolean, or null). - `UnionString` - `UnionFloat` - `UnionBool` - `Name string` Name of the event. - `Timestamp string` Timestamp when the event occurred. - `IPInformation SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataIPInformation` - `ASN SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataIPInformationASN` - `ASN string` - `Domain string` - `Name string` - `Route string` - `Type string` - `City string` - `Country string` - `IPV4 string` - `Org string` - `Region string` - `Timezone string` - `NativeMetadata SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataNativeMetadata` - `AudioEncoder string` - `VideoEncoder string` - `PcMetadata []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataPcMetadata` - `EffectiveNetworkType string` - `ReflexiveConnectivity bool` - `RelayConnectivity bool` - `Sdp []string` - `Timestamp string` - `TURNConnectivity bool` - `RoomViewType string` - `SDKName string` - `SDKType string` - `SDKVersion string` - `SelectedDeviceUpdates []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataSelectedDeviceUpdate` - `Device SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataSelectedDeviceUpdatesDevice` A media device (camera, microphone, or speaker). - `DeviceID string` ID of the device. - `Kind string` Kind of device, for example audioinput or videoinput. - `Label string` Human-readable label of the device. - `Timestamp string` - `SpeakerDevicesUpdates []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataSpeakerDevicesUpdate` - `Added []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataSpeakerDevicesUpdatesAdded` Devices that became available. - `DeviceID string` ID of the device. - `Kind string` Kind of device, for example audioinput or videoinput. - `Label string` Human-readable label of the device. - `Removed []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataSpeakerDevicesUpdatesRemoved` Devices that became unavailable. - `DeviceID string` ID of the device. - `Kind string` Kind of device, for example audioinput or videoinput. - `Label string` Human-readable label of the device. - `Timestamp string` Timestamp of the device update. - `VideoDevicesUpdates []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataVideoDevicesUpdate` - `Added []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataVideoDevicesUpdatesAdded` Devices that became available. - `DeviceID string` ID of the device. - `Kind string` Kind of device, for example audioinput or videoinput. - `Label string` Human-readable label of the device. - `Removed []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportMetadataVideoDevicesUpdatesRemoved` Devices that became unavailable. - `DeviceID string` ID of the device. - `Kind string` Kind of device, for example audioinput or videoinput. - `Label string` Human-readable label of the device. - `Timestamp string` Timestamp of the device update. - `Quality SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQuality` Media quality statistics for the participant. - `AudioConsumer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioConsumer` - `BytesReceived float64` - `ConcealmentEvents float64` - `ConsumerID string` - `Jitter float64` - `JitterBufferDelay float64` - `JitterBufferEmittedCount float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsReceived float64` - `PeerID string` - `ProducerID string` - `Ssrc float64` - `Timestamp string` - `AudioConsumerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioConsumerCumulative` Aggregated inbound (consumer) audio statistics for the session. - `JitterBufferDelay SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioConsumerCumulativeJitterBufferDelay` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioConsumerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioConsumerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `AudioProducer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioProducer` - `BytesSent float64` - `Jitter float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsSent float64` - `ProducerID string` - `RTT float64` - `Ssrc float64` - `Timestamp string` - `AudioProducerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioProducerCumulative` Aggregated outbound (producer) audio statistics for the session. - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioProducerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioProducerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `RTT SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityAudioProducerCumulativeRTT` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `ScreenshareAudioConsumer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioConsumer` - `BytesReceived float64` - `ConcealmentEvents float64` - `ConsumerID string` - `Jitter float64` - `JitterBufferDelay float64` - `JitterBufferEmittedCount float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsReceived float64` - `PeerID string` - `ProducerID string` - `Ssrc float64` - `Timestamp string` - `ScreenshareAudioConsumerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioConsumerCumulative` Aggregated inbound (consumer) audio statistics for the session. - `JitterBufferDelay SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioConsumerCumulativeJitterBufferDelay` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioConsumerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioConsumerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `ScreenshareAudioProducer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioProducer` - `BytesSent float64` - `Jitter float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsSent float64` - `ProducerID string` - `RTT float64` - `Ssrc float64` - `Timestamp string` - `ScreenshareAudioProducerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioProducerCumulative` Aggregated outbound (producer) audio statistics for the session. - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioProducerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioProducerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `RTT SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareAudioProducerCumulativeRTT` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `ScreenshareVideoConsumer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumer` - `BytesReceived float64` - `ConsumerID string` - `FirCount float64` - `FrameHeight float64` - `FrameWidth float64` - `FramesDecoded float64` - `FramesDropped float64` - `FramesPerSecond float64` - `Jitter float64` - `JitterBufferDelay float64` - `JitterBufferEmittedCount float64` - `KeyFramesDecoded float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsReceived float64` - `PeerID string` - `ProducerID string` - `Ssrc float64` - `Timestamp string` - `ScreenshareVideoConsumerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumerCumulative` Aggregated inbound (consumer) video statistics for the session. - `FramePerSecond SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumerCumulativeFramePerSecond` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `FrameWidth SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumerCumulativeFrameWidth` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `Issues SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumerCumulativeIssues` - `LagFraction float64` - `NoVideoFraction float64` - `PoorResolutionFraction float64` - `JitterBufferDelay SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumerCumulativeJitterBufferDelay` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `KeyFramesDecodedFraction float64` - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoConsumerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `ScreenshareVideoProducer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducer` - `BytesSent float64` - `FirCount float64` - `FrameHeight float64` - `FrameWidth float64` - `FramesEncoded float64` - `FramesPerSecond float64` - `Jitter float64` - `KeyFramesEncoded float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsSent float64` - `PliCount float64` - `ProducerID string` - `QualityLimitationDurations SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationDurations` - `Bandwidth float64` - `CPU float64` - `None float64` - `Other float64` - `QualityLimitationReason SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReason` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReasonCPU SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReason = "cpu"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReasonBandwidth SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReason = "bandwidth"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReasonNone SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReason = "none"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReasonOther SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerQualityLimitationReason = "other"` - `QualityLimitationResolutionChanges float64` - `RTT float64` - `Ssrc float64` - `Timestamp string` - `ScreenshareVideoProducerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerCumulative` Aggregated outbound (producer) video statistics for the session. - `FramePerSecond SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerCumulativeFramePerSecond` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `FrameWidth SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerCumulativeFrameWidth` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `HighNegativeFeedbackFraction float64` - `Issues SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerCumulativeIssues` - `BandwidthQualityLimitationFraction float64` - `CPUQualityLimitationFraction float64` - `NoVideoFraction float64` - `PoorResolutionFraction float64` - `QualityLimitationFraction float64` - `KeyFramesEncodedFraction float64` - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `RTT SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityScreenshareVideoProducerCumulativeRTT` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `VideoConsumer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumer` - `BytesReceived float64` - `ConsumerID string` - `FirCount float64` - `FrameHeight float64` - `FrameWidth float64` - `FramesDecoded float64` - `FramesDropped float64` - `FramesPerSecond float64` - `Jitter float64` - `JitterBufferDelay float64` - `JitterBufferEmittedCount float64` - `KeyFramesDecoded float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsReceived float64` - `PeerID string` - `ProducerID string` - `Ssrc float64` - `Timestamp string` - `VideoConsumerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumerCumulative` Aggregated inbound (consumer) video statistics for the session. - `FramePerSecond SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumerCumulativeFramePerSecond` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `FrameWidth SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumerCumulativeFrameWidth` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `Issues SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumerCumulativeIssues` - `LagFraction float64` - `NoVideoFraction float64` - `PoorResolutionFraction float64` - `JitterBufferDelay SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumerCumulativeJitterBufferDelay` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `KeyFramesDecodedFraction float64` - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoConsumerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `VideoProducer []SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducer` - `BytesSent float64` - `FirCount float64` - `FrameHeight float64` - `FrameWidth float64` - `FramesEncoded float64` - `FramesPerSecond float64` - `Jitter float64` - `KeyFramesEncoded float64` - `Mid string` - `MosQuality float64` - `PacketsLost float64` - `PacketsSent float64` - `PliCount float64` - `ProducerID string` - `QualityLimitationDurations SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationDurations` - `Bandwidth float64` - `CPU float64` - `None float64` - `Other float64` - `QualityLimitationReason SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReason` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReasonCPU SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReason = "cpu"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReasonBandwidth SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReason = "bandwidth"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReasonNone SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReason = "none"` - `const SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReasonOther SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerQualityLimitationReason = "other"` - `QualityLimitationResolutionChanges float64` - `RTT float64` - `Ssrc float64` - `Timestamp string` - `VideoProducerCumulative SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerCumulative` Aggregated outbound (producer) video statistics for the session. - `FramePerSecond SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerCumulativeFramePerSecond` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `FrameWidth SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerCumulativeFrameWidth` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `HighNegativeFeedbackFraction float64` - `Issues SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerCumulativeIssues` - `BandwidthQualityLimitationFraction float64` - `CPUQualityLimitationFraction float64` - `NoVideoFraction float64` - `PoorResolutionFraction float64` - `QualityLimitationFraction float64` - `KeyFramesEncodedFraction float64` - `PacketLoss SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerCumulativePacketLoss` Cumulative packet loss distribution. - `Number10OrGreaterEventFraction float64` - `Number25OrGreaterEventFraction float64` - `Number5OrGreaterEventFraction float64` - `Number50OrGreaterEventFraction float64` - `Avg float64` - `QualityMos SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerCumulativeQualityMos` Distribution summary with average and percentiles. - `Avg float64` - `P50 float64` - `P75 float64` - `P90 float64` - `RTT SessionGetParticipantDataFromPeerIDResponseDataParticipantPeerReportQualityVideoProducerCumulativeRTT` Cumulative latency distribution (milliseconds-based thresholds). - `Number100msOrGreaterEventFraction float64` - `Number250msOrGreaterEventFraction float64` - `Number500msOrGreaterEventFraction float64` - `Avg float64` - `Role string` Name of the preset associated with the participant. - `SessionID string` - `UpdatedAt string` timestamp when this participant's data was last updated. - `UserID string` User id for this participant. - `Success bool` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.RealtimeKit.Sessions.GetParticipantDataFromPeerID( context.TODO(), "app_id", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", realtime_kit.SessionGetParticipantDataFromPeerIDParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` #### Response ```json { "data": { "participant": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "created_at": "created_at", "custom_participant_id": "custom_participant_id", "display_name": "display_name", "duration": 0, "joined_at": "joined_at", "left_at": "left_at", "peer_events": [ { "id": "id", "created_at": "created_at", "event_name": "PEER_CREATED", "minutes_consumed": 0, "participant_id": "participant_id", "peer_id": "peer_id", "preset_view_type": "GROUP_CALL", "session_id": "session_id", "socket_session_id": "socket_session_id", "updated_at": "updated_at" } ], "peer_report": { "metadata": { "audio_devices_updates": [ { "added": [ { "device_id": "device_id", "kind": "kind", "label": "label" } ], "removed": [ { "device_id": "device_id", "kind": "kind", "label": "label" } ], "timestamp": "timestamp" } ], "browser_metadata": { "browser": "browser", "browser_version": "browser_version", "engine": "engine", "user_agent": "user_agent", "webgl_support": true }, "candidate_pairs": { "consuming_transport": [ { "available_incoming_bitrate": 0, "available_outgoing_bitrate": 0, "bytes_discarded_on_send": 0, "bytes_received": 0, "bytes_sent": 0, "current_round_trip_time": 0, "last_packet_received_timestamp": 0, "last_packet_sent_timestamp": 0, "local_candidate_address": "local_candidate_address", "local_candidate_id": "local_candidate_id", "local_candidate_network_type": "local_candidate_network_type", "local_candidate_port": 0, "local_candidate_protocol": "local_candidate_protocol", "local_candidate_related_address": "local_candidate_related_address", "local_candidate_related_port": 0, "local_candidate_type": "local_candidate_type", "local_candidate_url": "local_candidate_url", "nominated": true, "packets_discarded_on_send": 0, "packets_received": 0, "packets_sent": 0, "remote_candidate_address": "remote_candidate_address", "remote_candidate_id": "remote_candidate_id", "remote_candidate_port": 0, "remote_candidate_protocol": "remote_candidate_protocol", "remote_candidate_type": "remote_candidate_type", "remote_candidate_url": "remote_candidate_url", "total_round_trip_time": 0 } ], "producing_transport": [ { "available_incoming_bitrate": 0, "available_outgoing_bitrate": 0, "bytes_discarded_on_send": 0, "bytes_received": 0, "bytes_sent": 0, "current_round_trip_time": 0, "last_packet_received_timestamp": 0, "last_packet_sent_timestamp": 0, "local_candidate_address": "local_candidate_address", "local_candidate_id": "local_candidate_id", "local_candidate_network_type": "local_candidate_network_type", "local_candidate_port": 0, "local_candidate_protocol": "local_candidate_protocol", "local_candidate_related_address": "local_candidate_related_address", "local_candidate_related_port": 0, "local_candidate_type": "local_candidate_type", "local_candidate_url": "local_candidate_url", "nominated": true, "packets_discarded_on_send": 0, "packets_received": 0, "packets_sent": 0, "remote_candidate_address": "remote_candidate_address", "remote_candidate_id": "remote_candidate_id", "remote_candidate_port": 0, "remote_candidate_protocol": "remote_candidate_protocol", "remote_candidate_type": "remote_candidate_type", "remote_candidate_url": "remote_candidate_url", "total_round_trip_time": 0 } ] }, "device_info": { "cpus": 0, "is_mobile": true, "os": "os", "os_version": "os_version" }, "events": [ { "metadata": { "foo": "string" }, "name": "name", "timestamp": "timestamp" } ], "ip_information": { "asn": { "asn": "asn", "domain": "domain", "name": "name", "route": "route", "type": "type" }, "city": "city", "country": "country", "ipv4": "ipv4", "org": "org", "region": "region", "timezone": "timezone" }, "native_metadata": { "audio_encoder": "audio_encoder", "video_encoder": "video_encoder" }, "pc_metadata": [ { "effective_network_type": "effective_network_type", "reflexive_connectivity": true, "relay_connectivity": true, "sdp": [ "string" ], "timestamp": "timestamp", "turn_connectivity": true } ], "room_view_type": "room_view_type", "sdk_name": "sdk_name", "sdk_type": "sdk_type", "sdk_version": "sdk_version", "selected_device_updates": [ { "device": { "device_id": "device_id", "kind": "kind", "label": "label" }, "timestamp": "timestamp" } ], "speaker_devices_updates": [ { "added": [ { "device_id": "device_id", "kind": "kind", "label": "label" } ], "removed": [ { "device_id": "device_id", "kind": "kind", "label": "label" } ], "timestamp": "timestamp" } ], "video_devices_updates": [ { "added": [ { "device_id": "device_id", "kind": "kind", "label": "label" } ], "removed": [ { "device_id": "device_id", "kind": "kind", "label": "label" } ], "timestamp": "timestamp" } ] }, "quality": { "audio_consumer": [ { "bytes_received": 0, "concealment_events": 0, "consumer_id": "consumer_id", "jitter": 0, "jitter_buffer_delay": 0, "jitter_buffer_emitted_count": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_received": 0, "peer_id": "peer_id", "producer_id": "producer_id", "ssrc": 0, "timestamp": "timestamp" } ], "audio_consumer_cumulative": { "jitter_buffer_delay": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 }, "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 } }, "audio_producer": [ { "bytes_sent": 0, "jitter": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_sent": 0, "producer_id": "producer_id", "rtt": 0, "ssrc": 0, "timestamp": "timestamp" } ], "audio_producer_cumulative": { "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "rtt": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 } }, "screenshare_audio_consumer": [ { "bytes_received": 0, "concealment_events": 0, "consumer_id": "consumer_id", "jitter": 0, "jitter_buffer_delay": 0, "jitter_buffer_emitted_count": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_received": 0, "peer_id": "peer_id", "producer_id": "producer_id", "ssrc": 0, "timestamp": "timestamp" } ], "screenshare_audio_consumer_cumulative": { "jitter_buffer_delay": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 }, "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 } }, "screenshare_audio_producer": [ { "bytes_sent": 0, "jitter": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_sent": 0, "producer_id": "producer_id", "rtt": 0, "ssrc": 0, "timestamp": "timestamp" } ], "screenshare_audio_producer_cumulative": { "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "rtt": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 } }, "screenshare_video_consumer": [ { "bytes_received": 0, "consumer_id": "consumer_id", "fir_count": 0, "frame_height": 0, "frame_width": 0, "frames_decoded": 0, "frames_dropped": 0, "frames_per_second": 0, "jitter": 0, "jitter_buffer_delay": 0, "jitter_buffer_emitted_count": 0, "key_frames_decoded": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_received": 0, "peer_id": "peer_id", "producer_id": "producer_id", "ssrc": 0, "timestamp": "timestamp" } ], "screenshare_video_consumer_cumulative": { "frame_per_second": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "frame_width": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "issues": { "lag_fraction": 0, "no_video_fraction": 0, "poor_resolution_fraction": 0 }, "jitter_buffer_delay": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 }, "key_frames_decoded_fraction": 0, "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 } }, "screenshare_video_producer": [ { "bytes_sent": 0, "fir_count": 0, "frame_height": 0, "frame_width": 0, "frames_encoded": 0, "frames_per_second": 0, "jitter": 0, "key_frames_encoded": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_sent": 0, "pli_count": 0, "producer_id": "producer_id", "quality_limitation_durations": { "bandwidth": 0, "cpu": 0, "none": 0, "other": 0 }, "quality_limitation_reason": "cpu", "quality_limitation_resolution_changes": 0, "rtt": 0, "ssrc": 0, "timestamp": "timestamp" } ], "screenshare_video_producer_cumulative": { "frame_per_second": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "frame_width": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "high_negative_feedback_fraction": 0, "issues": { "bandwidth_quality_limitation_fraction": 0, "cpu_quality_limitation_fraction": 0, "no_video_fraction": 0, "poor_resolution_fraction": 0, "quality_limitation_fraction": 0 }, "key_frames_encoded_fraction": 0, "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "rtt": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 } }, "video_consumer": [ { "bytes_received": 0, "consumer_id": "consumer_id", "fir_count": 0, "frame_height": 0, "frame_width": 0, "frames_decoded": 0, "frames_dropped": 0, "frames_per_second": 0, "jitter": 0, "jitter_buffer_delay": 0, "jitter_buffer_emitted_count": 0, "key_frames_decoded": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_received": 0, "peer_id": "peer_id", "producer_id": "producer_id", "ssrc": 0, "timestamp": "timestamp" } ], "video_consumer_cumulative": { "frame_per_second": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "frame_width": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "issues": { "lag_fraction": 0, "no_video_fraction": 0, "poor_resolution_fraction": 0 }, "jitter_buffer_delay": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 }, "key_frames_decoded_fraction": 0, "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 } }, "video_producer": [ { "bytes_sent": 0, "fir_count": 0, "frame_height": 0, "frame_width": 0, "frames_encoded": 0, "frames_per_second": 0, "jitter": 0, "key_frames_encoded": 0, "mid": "mid", "mos_quality": 0, "packets_lost": 0, "packets_sent": 0, "pli_count": 0, "producer_id": "producer_id", "quality_limitation_durations": { "bandwidth": 0, "cpu": 0, "none": 0, "other": 0 }, "quality_limitation_reason": "cpu", "quality_limitation_resolution_changes": 0, "rtt": 0, "ssrc": 0, "timestamp": "timestamp" } ], "video_producer_cumulative": { "frame_per_second": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "frame_width": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "high_negative_feedback_fraction": 0, "issues": { "bandwidth_quality_limitation_fraction": 0, "cpu_quality_limitation_fraction": 0, "no_video_fraction": 0, "poor_resolution_fraction": 0, "quality_limitation_fraction": 0 }, "key_frames_encoded_fraction": 0, "packet_loss": { "10_or_greater_event_fraction": 0, "25_or_greater_event_fraction": 0, "5_or_greater_event_fraction": 0, "50_or_greater_event_fraction": 0, "avg": 0 }, "quality_mos": { "avg": 0, "p50": 0, "p75": 0, "p90": 0 }, "rtt": { "100ms_or_greater_event_fraction": 0, "250ms_or_greater_event_fraction": 0, "500ms_or_greater_event_fraction": 0, "avg": 0 } } } }, "role": "role", "session_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "updated_at": "updated_at", "user_id": "user_id" } }, "success": true } ```