Skip to content
Start here

Realtime Kit

Realtime KitApps

Fetch all apps
client.realtimeKit.apps.get(AppGetParams { account_id, page_no, per_page, 2 more } params, RequestOptionsoptions?): AppGetResponse { data, paging, success }
GET/accounts/{account_id}/realtime/kit/apps
Create App
client.realtimeKit.apps.post(AppPostParams { account_id, name } params, RequestOptionsoptions?): AppPostResponse { data, success }
POST/accounts/{account_id}/realtime/kit/apps
ModelsExpand Collapse
AppGetResponse { data, paging, success }
data?: Array<Data>
id?: string
formatuuid
created_at?: string
formatdate-time
name?: string
paging?: Paging { end_offset, start_offset, total_count }
end_offset?: number
start_offset?: number
total_count?: number
success?: boolean
AppPostResponse { data, success }
data?: Data { app }
app?: App { id, created_at, name }
id?: string
formatuuid
created_at?: string
formatdate-time
name?: string
success?: boolean

Realtime KitMeetings

Fetch all meetings for an App
client.realtimeKit.meetings.get(stringappID, MeetingGetParams { account_id, end_time, page_no, 4 more } params, RequestOptionsoptions?): MeetingGetResponse { data, paging, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/meetings
Create a meeting
client.realtimeKit.meetings.create(stringappID, MeetingCreateParams { account_id, ai_config, live_stream_on_start, 7 more } params, RequestOptionsoptions?): MeetingCreateResponse { success, data }
POST/accounts/{account_id}/realtime/kit/{app_id}/meetings
Fetch a meeting for an App
client.realtimeKit.meetings.getMeetingByID(stringmeetingID, MeetingGetMeetingByIDParams { account_id, app_id, name } params, RequestOptionsoptions?): MeetingGetMeetingByIDResponse { success, data }
GET/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}
Update a meeting
client.realtimeKit.meetings.updateMeetingByID(stringmeetingID, MeetingUpdateMeetingByIDParams { account_id, app_id, ai_config, 9 more } params, RequestOptionsoptions?): MeetingUpdateMeetingByIDResponse { success, data }
PATCH/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}
Replace a meeting
client.realtimeKit.meetings.replaceMeetingByID(stringmeetingID, MeetingReplaceMeetingByIDParams { account_id, app_id, ai_config, 8 more } params, RequestOptionsoptions?): MeetingReplaceMeetingByIDResponse { success, data }
PUT/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}
Fetch all participants of a meeting
client.realtimeKit.meetings.getMeetingParticipants(stringmeetingID, MeetingGetMeetingParticipantsParams { account_id, app_id, page_no, per_page } params, RequestOptionsoptions?): MeetingGetMeetingParticipantsResponse { data, paging, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants
Add a participant
client.realtimeKit.meetings.addParticipant(stringmeetingID, MeetingAddParticipantParams { account_id, app_id, custom_participant_id, 3 more } params, RequestOptionsoptions?): MeetingAddParticipantResponse { success, data }
POST/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants
Fetch a participant's detail
client.realtimeKit.meetings.getMeetingParticipant(stringparticipantID, MeetingGetMeetingParticipantParams { account_id, app_id, meeting_id } params, RequestOptionsoptions?): MeetingGetMeetingParticipantResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}
Edit a participant's detail
client.realtimeKit.meetings.editParticipant(stringparticipantID, MeetingEditParticipantParams { account_id, app_id, meeting_id, 3 more } params, RequestOptionsoptions?): MeetingEditParticipantResponse { success, data }
PATCH/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}
Delete a participant
client.realtimeKit.meetings.deleteMeetingParticipant(stringparticipantID, MeetingDeleteMeetingParticipantParams { account_id, app_id, meeting_id } params, RequestOptionsoptions?): MeetingDeleteMeetingParticipantResponse { success, data }
DELETE/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}
Refresh participant's authentication token
client.realtimeKit.meetings.refreshParticipantToken(stringparticipantID, MeetingRefreshParticipantTokenParams { account_id, app_id, meeting_id } params, RequestOptionsoptions?): MeetingRefreshParticipantTokenResponse { data, success }
POST/accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}/token
ModelsExpand Collapse
MeetingGetResponse { data, paging, success }
data: Array<Data>
id: string

ID of the meeting.

formatuuid
created_at: string

Timestamp the object was created at. The time is returned in ISO format.

formatdate-time
updated_at: string

Timestamp the object was updated at. The time is returned in ISO format.

formatdate-time
live_stream_on_start?: boolean

Specifies if the meeting should start getting livestreamed on start.

persist_chat?: boolean

Specifies if Chat within a meeting should persist for a week.

record_on_start?: boolean

Specifies if the meeting should start getting recorded as soon as someone joins the meeting.

recording_config?: RecordingConfig { audio_config, file_name_prefix, live_streaming_config, 4 more }

Recording Configurations to be used for this meeting. This level of configs takes higher preference over App level configs on the RealtimeKit developer portal.

audio_config?: AudioConfig { channel, codec, export_file }

Object containing configuration regarding the audio that is being recorded.

channel?: "mono" | "stereo"

Audio signal pathway within an audio file that carries a specific sound source.

One of the following:
"mono"
"stereo"
codec?: "MP3" | "AAC"

Codec using which the recording will be encoded. If VP8/VP9 is selected for videoConfig, changing audioConfig is not allowed. In this case, the codec in the audioConfig is automatically set to vorbis.

One of the following:
"MP3"
"AAC"
export_file?: boolean

Controls whether to export audio file seperately

file_name_prefix?: string

Adds a prefix to the beginning of the file name of the recording.

live_streaming_config?: LiveStreamingConfig { rtmp_url }
rtmp_url?: string

RTMP URL to stream to

formaturi
max_seconds?: number

Specifies the maximum duration for recording in seconds, ranging from a minimum of 60 seconds to a maximum of 24 hours.

maximum86400
minimum60
realtimekit_bucket_config?: RealtimekitBucketConfig { enabled }
enabled: boolean

Controls whether recordings are uploaded to RealtimeKit’s bucket. If set to false, download_url, audio_download_url, download_url_expiry won’t be generated for a recording.

storage_config?: StorageConfig | null
type: "aws" | "azure" | "digitalocean" | 2 more

Type of storage media.

One of the following:
"aws"
"azure"
"digitalocean"
"gcs"
"sftp"
access_key?: string

Access key of the storage medium. Access key is not required for the gcs storage media type.

Note that this field is not readable by clients, only writeable.

auth_method?: "KEY" | "PASSWORD"

Authentication method used for “sftp” type storage medium

One of the following:
"KEY"
"PASSWORD"
bucket?: string

Name of the storage medium’s bucket.

host?: string

SSH destination server host for SFTP type storage medium

password?: string

SSH destination server password for SFTP type storage medium when auth_method is “PASSWORD”. If auth_method is “KEY”, this specifies the password for the ssh private key.

path?: string

Path relative to the bucket root at which the recording will be placed.

port?: number

SSH destination server port for SFTP type storage medium

private_key?: string

Private key used to login to destination SSH server for SFTP type storage medium, when auth_method used is “KEY”

region?: string

Region of the storage medium.

secret?: string

Secret key of the storage medium. Similar to access_key, it is only writeable by clients, not readable.

username?: string

SSH destination server username for SFTP type storage medium

video_config?: VideoConfig { codec, export_file, height, 2 more }
codec?: "H264" | "VP8"

Codec using which the recording will be encoded.

One of the following:
"H264"
"VP8"
export_file?: boolean

Controls whether to export video file seperately

height?: number

Height of the recording video in pixels

maximum1920
minimum1
watermark?: Watermark { position, size, url }

Watermark to be added to the recording

position?: "left top" | "right top" | "left bottom" | "right bottom"

Position of the watermark

One of the following:
"left top"
"right top"
"left bottom"
"right bottom"
size?: Size { height, width }

Size of the watermark

height?: number

Height of the watermark in px

minimum1
width?: number

Width of the watermark in px

minimum1
url?: string

URL of the watermark image

formaturi
width?: number

Width of the recording video in pixels

maximum1920
minimum1
session_keep_alive_time_in_secs?: number

Time in seconds, for which a session remains active, after the last participant has left the meeting.

maximum600
minimum60
status?: "ACTIVE" | "INACTIVE"

Whether the meeting is ACTIVE or INACTIVE. Users will not be able to join an INACTIVE meeting.

One of the following:
"ACTIVE"
"INACTIVE"
summarize_on_end?: boolean

Automatically generate summary of meetings using transcripts. Requires Transcriptions to be enabled, and can be retrieved via Webhooks or summary API.

title?: string

Title of the meeting.

transcribe_on_end?: boolean

Automatically generate transcripts when the meeting ends.

paging: Paging { end_offset, start_offset, total_count }
end_offset: number
start_offset: number
total_count: number
minimum0
success: boolean
MeetingCreateResponse { success, data }
success: boolean

Success status of the operation

data?: Data { id, created_at, updated_at, 10 more }

Data returned by the operation

id: string

ID of the meeting.

formatuuid
created_at: string

Timestamp the object was created at. The time is returned in ISO format.

formatdate-time
updated_at: string

Timestamp the object was updated at. The time is returned in ISO format.

formatdate-time
ai_config?: AIConfig { summarization, transcription }

The AI Config allows you to customize the behavior of meeting transcriptions and summaries

summarization?: Summarization { summary_type, text_format, word_limit }

Summary Config

summary_type?: "general" | "team_meeting" | "sales_call" | 6 more

Defines the style of the summary, such as general, team meeting, or sales call.

One of the following:
"general"
"team_meeting"
"sales_call"
"client_check_in"
"interview"
"daily_standup"
"one_on_one_meeting"
"lecture"
"code_review"
text_format?: "plain_text" | "markdown"

Determines the text format of the summary, such as plain text or markdown.

One of the following:
"plain_text"
"markdown"
word_limit?: number

Sets the maximum number of words in the meeting summary.

maximum1000
minimum150
transcription?: Transcription { keywords, language, profanity_filter }

Transcription Configurations

keywords?: Array<string>

Adds specific terms to improve accurate detection during transcription.

language?: "en-US" | "en-IN" | "de" | 7 more

Specifies the language code for transcription to ensure accurate results.

One of the following:
"en-US"
"en-IN"
"de"
"hi"
"sv"
"ru"
"pl"
"el"
"fr"
"nl"
profanity_filter?: boolean

Control the inclusion of offensive language in transcriptions.

live_stream_on_start?: boolean

Specifies if the meeting should start getting livestreamed on start.

persist_chat?: boolean

Specifies if Chat within a meeting should persist for a week.

record_on_start?: boolean

Specifies if the meeting should start getting recorded as soon as someone joins the meeting.

recording_config?: RecordingConfig { audio_config, file_name_prefix, live_streaming_config, 4 more }

Recording Configurations to be used for this meeting. This level of configs takes higher preference over App level configs on the RealtimeKit developer portal.

audio_config?: AudioConfig { channel, codec, export_file }

Object containing configuration regarding the audio that is being recorded.

channel?: "mono" | "stereo"

Audio signal pathway within an audio file that carries a specific sound source.

One of the following:
"mono"
"stereo"
codec?: "MP3" | "AAC"

Codec using which the recording will be encoded. If VP8/VP9 is selected for videoConfig, changing audioConfig is not allowed. In this case, the codec in the audioConfig is automatically set to vorbis.

One of the following:
"MP3"
"AAC"
export_file?: boolean

Controls whether to export audio file seperately

file_name_prefix?: string

Adds a prefix to the beginning of the file name of the recording.

live_streaming_config?: LiveStreamingConfig { rtmp_url }
rtmp_url?: string

RTMP URL to stream to

formaturi
max_seconds?: number

Specifies the maximum duration for recording in seconds, ranging from a minimum of 60 seconds to a maximum of 24 hours.

maximum86400
minimum60
realtimekit_bucket_config?: RealtimekitBucketConfig { enabled }
enabled: boolean

Controls whether recordings are uploaded to RealtimeKit’s bucket. If set to false, download_url, audio_download_url, download_url_expiry won’t be generated for a recording.

storage_config?: StorageConfig | null
type: "aws" | "azure" | "digitalocean" | 2 more

Type of storage media.

One of the following:
"aws"
"azure"
"digitalocean"
"gcs"
"sftp"
access_key?: string

Access key of the storage medium. Access key is not required for the gcs storage media type.

Note that this field is not readable by clients, only writeable.

auth_method?: "KEY" | "PASSWORD"

Authentication method used for “sftp” type storage medium

One of the following:
"KEY"
"PASSWORD"
bucket?: string

Name of the storage medium’s bucket.

host?: string

SSH destination server host for SFTP type storage medium

password?: string

SSH destination server password for SFTP type storage medium when auth_method is “PASSWORD”. If auth_method is “KEY”, this specifies the password for the ssh private key.

path?: string

Path relative to the bucket root at which the recording will be placed.

port?: number

SSH destination server port for SFTP type storage medium

private_key?: string

Private key used to login to destination SSH server for SFTP type storage medium, when auth_method used is “KEY”

region?: string

Region of the storage medium.

secret?: string

Secret key of the storage medium. Similar to access_key, it is only writeable by clients, not readable.

username?: string

SSH destination server username for SFTP type storage medium

video_config?: VideoConfig { codec, export_file, height, 2 more }
codec?: "H264" | "VP8"

Codec using which the recording will be encoded.

One of the following:
"H264"
"VP8"
export_file?: boolean

Controls whether to export video file seperately

height?: number

Height of the recording video in pixels

maximum1920
minimum1
watermark?: Watermark { position, size, url }

Watermark to be added to the recording

position?: "left top" | "right top" | "left bottom" | "right bottom"

Position of the watermark

One of the following:
"left top"
"right top"
"left bottom"
"right bottom"
size?: Size { height, width }

Size of the watermark

height?: number

Height of the watermark in px

minimum1
width?: number

Width of the watermark in px

minimum1
url?: string

URL of the watermark image

formaturi
width?: number

Width of the recording video in pixels

maximum1920
minimum1
session_keep_alive_time_in_secs?: number

Time in seconds, for which a session remains active, after the last participant has left the meeting.

maximum600
minimum60
status?: "ACTIVE" | "INACTIVE"

Whether the meeting is ACTIVE or INACTIVE. Users will not be able to join an INACTIVE meeting.

One of the following:
"ACTIVE"
"INACTIVE"
summarize_on_end?: boolean

Automatically generate summary of meetings using transcripts. Requires Transcriptions to be enabled, and can be retrieved via Webhooks or summary API.

title?: string

Title of the meeting.

transcribe_on_end?: boolean

Automatically generate transcripts when the meeting ends.

MeetingGetMeetingByIDResponse { success, data }
success: boolean

Success status of the operation

data?: Data { id, created_at, updated_at, 10 more }

Data returned by the operation

id: string

ID of the meeting.

formatuuid
created_at: string

Timestamp the object was created at. The time is returned in ISO format.

formatdate-time
updated_at: string

Timestamp the object was updated at. The time is returned in ISO format.

formatdate-time
ai_config?: AIConfig { summarization, transcription }

The AI Config allows you to customize the behavior of meeting transcriptions and summaries

summarization?: Summarization { summary_type, text_format, word_limit }

Summary Config

summary_type?: "general" | "team_meeting" | "sales_call" | 6 more

Defines the style of the summary, such as general, team meeting, or sales call.

One of the following:
"general"
"team_meeting"
"sales_call"
"client_check_in"
"interview"
"daily_standup"
"one_on_one_meeting"
"lecture"
"code_review"
text_format?: "plain_text" | "markdown"

Determines the text format of the summary, such as plain text or markdown.

One of the following:
"plain_text"
"markdown"
word_limit?: number

Sets the maximum number of words in the meeting summary.

maximum1000
minimum150
transcription?: Transcription { keywords, language, profanity_filter }

Transcription Configurations

keywords?: Array<string>

Adds specific terms to improve accurate detection during transcription.

language?: "en-US" | "en-IN" | "de" | 7 more

Specifies the language code for transcription to ensure accurate results.

One of the following:
"en-US"
"en-IN"
"de"
"hi"
"sv"
"ru"
"pl"
"el"
"fr"
"nl"
profanity_filter?: boolean

Control the inclusion of offensive language in transcriptions.

live_stream_on_start?: boolean

Specifies if the meeting should start getting livestreamed on start.

persist_chat?: boolean

Specifies if Chat within a meeting should persist for a week.

record_on_start?: boolean

Specifies if the meeting should start getting recorded as soon as someone joins the meeting.

recording_config?: RecordingConfig { audio_config, file_name_prefix, live_streaming_config, 4 more }

Recording Configurations to be used for this meeting. This level of configs takes higher preference over App level configs on the RealtimeKit developer portal.

audio_config?: AudioConfig { channel, codec, export_file }

Object containing configuration regarding the audio that is being recorded.

channel?: "mono" | "stereo"

Audio signal pathway within an audio file that carries a specific sound source.

One of the following:
"mono"
"stereo"
codec?: "MP3" | "AAC"

Codec using which the recording will be encoded. If VP8/VP9 is selected for videoConfig, changing audioConfig is not allowed. In this case, the codec in the audioConfig is automatically set to vorbis.

One of the following:
"MP3"
"AAC"
export_file?: boolean

Controls whether to export audio file seperately

file_name_prefix?: string

Adds a prefix to the beginning of the file name of the recording.

live_streaming_config?: LiveStreamingConfig { rtmp_url }
rtmp_url?: string

RTMP URL to stream to

formaturi
max_seconds?: number

Specifies the maximum duration for recording in seconds, ranging from a minimum of 60 seconds to a maximum of 24 hours.

maximum86400
minimum60
realtimekit_bucket_config?: RealtimekitBucketConfig { enabled }
enabled: boolean

Controls whether recordings are uploaded to RealtimeKit’s bucket. If set to false, download_url, audio_download_url, download_url_expiry won’t be generated for a recording.

storage_config?: StorageConfig | null
type: "aws" | "azure" | "digitalocean" | 2 more

Type of storage media.

One of the following:
"aws"
"azure"
"digitalocean"
"gcs"
"sftp"
access_key?: string

Access key of the storage medium. Access key is not required for the gcs storage media type.

Note that this field is not readable by clients, only writeable.

auth_method?: "KEY" | "PASSWORD"

Authentication method used for “sftp” type storage medium

One of the following:
"KEY"
"PASSWORD"
bucket?: string

Name of the storage medium’s bucket.

host?: string

SSH destination server host for SFTP type storage medium

password?: string

SSH destination server password for SFTP type storage medium when auth_method is “PASSWORD”. If auth_method is “KEY”, this specifies the password for the ssh private key.

path?: string

Path relative to the bucket root at which the recording will be placed.

port?: number

SSH destination server port for SFTP type storage medium

private_key?: string

Private key used to login to destination SSH server for SFTP type storage medium, when auth_method used is “KEY”

region?: string

Region of the storage medium.

secret?: string

Secret key of the storage medium. Similar to access_key, it is only writeable by clients, not readable.

username?: string

SSH destination server username for SFTP type storage medium

video_config?: VideoConfig { codec, export_file, height, 2 more }
codec?: "H264" | "VP8"

Codec using which the recording will be encoded.

One of the following:
"H264"
"VP8"
export_file?: boolean

Controls whether to export video file seperately

height?: number

Height of the recording video in pixels

maximum1920
minimum1
watermark?: Watermark { position, size, url }

Watermark to be added to the recording

position?: "left top" | "right top" | "left bottom" | "right bottom"

Position of the watermark

One of the following:
"left top"
"right top"
"left bottom"
"right bottom"
size?: Size { height, width }

Size of the watermark

height?: number

Height of the watermark in px

minimum1
width?: number

Width of the watermark in px

minimum1
url?: string

URL of the watermark image

formaturi
width?: number

Width of the recording video in pixels

maximum1920
minimum1
session_keep_alive_time_in_secs?: number

Time in seconds, for which a session remains active, after the last participant has left the meeting.

maximum600
minimum60
status?: "ACTIVE" | "INACTIVE"

Whether the meeting is ACTIVE or INACTIVE. Users will not be able to join an INACTIVE meeting.

One of the following:
"ACTIVE"
"INACTIVE"
summarize_on_end?: boolean

Automatically generate summary of meetings using transcripts. Requires Transcriptions to be enabled, and can be retrieved via Webhooks or summary API.

title?: string

Title of the meeting.

transcribe_on_end?: boolean

Automatically generate transcripts when the meeting ends.

MeetingUpdateMeetingByIDResponse { success, data }
success: boolean

Success status of the operation

data?: Data { id, created_at, updated_at, 10 more }

Data returned by the operation

id: string

ID of the meeting.

formatuuid
created_at: string

Timestamp the object was created at. The time is returned in ISO format.

formatdate-time
updated_at: string

Timestamp the object was updated at. The time is returned in ISO format.

formatdate-time
ai_config?: AIConfig { summarization, transcription }

The AI Config allows you to customize the behavior of meeting transcriptions and summaries

summarization?: Summarization { summary_type, text_format, word_limit }

Summary Config

summary_type?: "general" | "team_meeting" | "sales_call" | 6 more

Defines the style of the summary, such as general, team meeting, or sales call.

One of the following:
"general"
"team_meeting"
"sales_call"
"client_check_in"
"interview"
"daily_standup"
"one_on_one_meeting"
"lecture"
"code_review"
text_format?: "plain_text" | "markdown"

Determines the text format of the summary, such as plain text or markdown.

One of the following:
"plain_text"
"markdown"
word_limit?: number

Sets the maximum number of words in the meeting summary.

maximum1000
minimum150
transcription?: Transcription { keywords, language, profanity_filter }

Transcription Configurations

keywords?: Array<string>

Adds specific terms to improve accurate detection during transcription.

language?: "en-US" | "en-IN" | "de" | 7 more

Specifies the language code for transcription to ensure accurate results.

One of the following:
"en-US"
"en-IN"
"de"
"hi"
"sv"
"ru"
"pl"
"el"
"fr"
"nl"
profanity_filter?: boolean

Control the inclusion of offensive language in transcriptions.

live_stream_on_start?: boolean

Specifies if the meeting should start getting livestreamed on start.

persist_chat?: boolean

Specifies if Chat within a meeting should persist for a week.

record_on_start?: boolean

Specifies if the meeting should start getting recorded as soon as someone joins the meeting.

recording_config?: RecordingConfig { audio_config, file_name_prefix, live_streaming_config, 4 more }

Recording Configurations to be used for this meeting. This level of configs takes higher preference over App level configs on the RealtimeKit developer portal.

audio_config?: AudioConfig { channel, codec, export_file }

Object containing configuration regarding the audio that is being recorded.

channel?: "mono" | "stereo"

Audio signal pathway within an audio file that carries a specific sound source.

One of the following:
"mono"
"stereo"
codec?: "MP3" | "AAC"

Codec using which the recording will be encoded. If VP8/VP9 is selected for videoConfig, changing audioConfig is not allowed. In this case, the codec in the audioConfig is automatically set to vorbis.

One of the following:
"MP3"
"AAC"
export_file?: boolean

Controls whether to export audio file seperately

file_name_prefix?: string

Adds a prefix to the beginning of the file name of the recording.

live_streaming_config?: LiveStreamingConfig { rtmp_url }
rtmp_url?: string

RTMP URL to stream to

formaturi
max_seconds?: number

Specifies the maximum duration for recording in seconds, ranging from a minimum of 60 seconds to a maximum of 24 hours.

maximum86400
minimum60
realtimekit_bucket_config?: RealtimekitBucketConfig { enabled }
enabled: boolean

Controls whether recordings are uploaded to RealtimeKit’s bucket. If set to false, download_url, audio_download_url, download_url_expiry won’t be generated for a recording.

storage_config?: StorageConfig | null
type: "aws" | "azure" | "digitalocean" | 2 more

Type of storage media.

One of the following:
"aws"
"azure"
"digitalocean"
"gcs"
"sftp"
access_key?: string

Access key of the storage medium. Access key is not required for the gcs storage media type.

Note that this field is not readable by clients, only writeable.

auth_method?: "KEY" | "PASSWORD"

Authentication method used for “sftp” type storage medium

One of the following:
"KEY"
"PASSWORD"
bucket?: string

Name of the storage medium’s bucket.

host?: string

SSH destination server host for SFTP type storage medium

password?: string

SSH destination server password for SFTP type storage medium when auth_method is “PASSWORD”. If auth_method is “KEY”, this specifies the password for the ssh private key.

path?: string

Path relative to the bucket root at which the recording will be placed.

port?: number

SSH destination server port for SFTP type storage medium

private_key?: string

Private key used to login to destination SSH server for SFTP type storage medium, when auth_method used is “KEY”

region?: string

Region of the storage medium.

secret?: string

Secret key of the storage medium. Similar to access_key, it is only writeable by clients, not readable.

username?: string

SSH destination server username for SFTP type storage medium

video_config?: VideoConfig { codec, export_file, height, 2 more }
codec?: "H264" | "VP8"

Codec using which the recording will be encoded.

One of the following:
"H264"
"VP8"
export_file?: boolean

Controls whether to export video file seperately

height?: number

Height of the recording video in pixels

maximum1920
minimum1
watermark?: Watermark { position, size, url }

Watermark to be added to the recording

position?: "left top" | "right top" | "left bottom" | "right bottom"

Position of the watermark

One of the following:
"left top"
"right top"
"left bottom"
"right bottom"
size?: Size { height, width }

Size of the watermark

height?: number

Height of the watermark in px

minimum1
width?: number

Width of the watermark in px

minimum1
url?: string

URL of the watermark image

formaturi
width?: number

Width of the recording video in pixels

maximum1920
minimum1
session_keep_alive_time_in_secs?: number

Time in seconds, for which a session remains active, after the last participant has left the meeting.

maximum600
minimum60
status?: "ACTIVE" | "INACTIVE"

Whether the meeting is ACTIVE or INACTIVE. Users will not be able to join an INACTIVE meeting.

One of the following:
"ACTIVE"
"INACTIVE"
summarize_on_end?: boolean

Automatically generate summary of meetings using transcripts. Requires Transcriptions to be enabled, and can be retrieved via Webhooks or summary API.

title?: string

Title of the meeting.

transcribe_on_end?: boolean

Automatically generate transcripts when the meeting ends.

MeetingReplaceMeetingByIDResponse { success, data }
success: boolean

Success status of the operation

data?: Data { id, created_at, updated_at, 10 more }

Data returned by the operation

id: string

ID of the meeting.

formatuuid
created_at: string

Timestamp the object was created at. The time is returned in ISO format.

formatdate-time
updated_at: string

Timestamp the object was updated at. The time is returned in ISO format.

formatdate-time
ai_config?: AIConfig { summarization, transcription }

The AI Config allows you to customize the behavior of meeting transcriptions and summaries

summarization?: Summarization { summary_type, text_format, word_limit }

Summary Config

summary_type?: "general" | "team_meeting" | "sales_call" | 6 more

Defines the style of the summary, such as general, team meeting, or sales call.

One of the following:
"general"
"team_meeting"
"sales_call"
"client_check_in"
"interview"
"daily_standup"
"one_on_one_meeting"
"lecture"
"code_review"
text_format?: "plain_text" | "markdown"

Determines the text format of the summary, such as plain text or markdown.

One of the following:
"plain_text"
"markdown"
word_limit?: number

Sets the maximum number of words in the meeting summary.

maximum1000
minimum150
transcription?: Transcription { keywords, language, profanity_filter }

Transcription Configurations

keywords?: Array<string>

Adds specific terms to improve accurate detection during transcription.

language?: "en-US" | "en-IN" | "de" | 7 more

Specifies the language code for transcription to ensure accurate results.

One of the following:
"en-US"
"en-IN"
"de"
"hi"
"sv"
"ru"
"pl"
"el"
"fr"
"nl"
profanity_filter?: boolean

Control the inclusion of offensive language in transcriptions.

live_stream_on_start?: boolean

Specifies if the meeting should start getting livestreamed on start.

persist_chat?: boolean

Specifies if Chat within a meeting should persist for a week.

record_on_start?: boolean

Specifies if the meeting should start getting recorded as soon as someone joins the meeting.

recording_config?: RecordingConfig { audio_config, file_name_prefix, live_streaming_config, 4 more }

Recording Configurations to be used for this meeting. This level of configs takes higher preference over App level configs on the RealtimeKit developer portal.

audio_config?: AudioConfig { channel, codec, export_file }

Object containing configuration regarding the audio that is being recorded.

channel?: "mono" | "stereo"

Audio signal pathway within an audio file that carries a specific sound source.

One of the following:
"mono"
"stereo"
codec?: "MP3" | "AAC"

Codec using which the recording will be encoded. If VP8/VP9 is selected for videoConfig, changing audioConfig is not allowed. In this case, the codec in the audioConfig is automatically set to vorbis.

One of the following:
"MP3"
"AAC"
export_file?: boolean

Controls whether to export audio file seperately

file_name_prefix?: string

Adds a prefix to the beginning of the file name of the recording.

live_streaming_config?: LiveStreamingConfig { rtmp_url }
rtmp_url?: string

RTMP URL to stream to

formaturi
max_seconds?: number

Specifies the maximum duration for recording in seconds, ranging from a minimum of 60 seconds to a maximum of 24 hours.

maximum86400
minimum60
realtimekit_bucket_config?: RealtimekitBucketConfig { enabled }
enabled: boolean

Controls whether recordings are uploaded to RealtimeKit’s bucket. If set to false, download_url, audio_download_url, download_url_expiry won’t be generated for a recording.

storage_config?: StorageConfig | null
type: "aws" | "azure" | "digitalocean" | 2 more

Type of storage media.

One of the following:
"aws"
"azure"
"digitalocean"
"gcs"
"sftp"
access_key?: string

Access key of the storage medium. Access key is not required for the gcs storage media type.

Note that this field is not readable by clients, only writeable.

auth_method?: "KEY" | "PASSWORD"

Authentication method used for “sftp” type storage medium

One of the following:
"KEY"
"PASSWORD"
bucket?: string

Name of the storage medium’s bucket.

host?: string

SSH destination server host for SFTP type storage medium

password?: string

SSH destination server password for SFTP type storage medium when auth_method is “PASSWORD”. If auth_method is “KEY”, this specifies the password for the ssh private key.

path?: string

Path relative to the bucket root at which the recording will be placed.

port?: number

SSH destination server port for SFTP type storage medium

private_key?: string

Private key used to login to destination SSH server for SFTP type storage medium, when auth_method used is “KEY”

region?: string

Region of the storage medium.

secret?: string

Secret key of the storage medium. Similar to access_key, it is only writeable by clients, not readable.

username?: string

SSH destination server username for SFTP type storage medium

video_config?: VideoConfig { codec, export_file, height, 2 more }
codec?: "H264" | "VP8"

Codec using which the recording will be encoded.

One of the following:
"H264"
"VP8"
export_file?: boolean

Controls whether to export video file seperately

height?: number

Height of the recording video in pixels

maximum1920
minimum1
watermark?: Watermark { position, size, url }

Watermark to be added to the recording

position?: "left top" | "right top" | "left bottom" | "right bottom"

Position of the watermark

One of the following:
"left top"
"right top"
"left bottom"
"right bottom"
size?: Size { height, width }

Size of the watermark

height?: number

Height of the watermark in px

minimum1
width?: number

Width of the watermark in px

minimum1
url?: string

URL of the watermark image

formaturi
width?: number

Width of the recording video in pixels

maximum1920
minimum1
session_keep_alive_time_in_secs?: number

Time in seconds, for which a session remains active, after the last participant has left the meeting.

maximum600
minimum60
status?: "ACTIVE" | "INACTIVE"

Whether the meeting is ACTIVE or INACTIVE. Users will not be able to join an INACTIVE meeting.

One of the following:
"ACTIVE"
"INACTIVE"
summarize_on_end?: boolean

Automatically generate summary of meetings using transcripts. Requires Transcriptions to be enabled, and can be retrieved via Webhooks or summary API.

title?: string

Title of the meeting.

transcribe_on_end?: boolean

Automatically generate transcripts when the meeting ends.

MeetingGetMeetingParticipantsResponse { data, paging, success }
data: Array<Data>
id: string

ID of the participant.

formatuuid
created_at: string

When this object was created. The time is returned in ISO format.

formatdate-time
custom_participant_id: string

A unique participant ID generated by the client.

preset_name: string

Preset applied to the participant.

updated_at: string

When this object was updated. The time is returned in ISO format.

formatdate-time
name?: string | null

Name of the participant.

picture?: string | null

URL to a picture of the participant.

formaturi
paging: Paging { end_offset, start_offset, total_count }
end_offset: number
start_offset: number
total_count: number
minimum0
success: boolean
MeetingAddParticipantResponse { success, data }
success: boolean

Success status of the operation

data?: Data { id, token, created_at, 5 more }

Represents a participant.

id: string

ID of the participant.

formatuuid
token: string

The participant’s auth token that can be used for joining a meeting from the client side.

created_at: string

When this object was created. The time is returned in ISO format.

formatdate-time
custom_participant_id: string

A unique participant ID generated by the client.

preset_name: string

Preset applied to the participant.

updated_at: string

When this object was updated. The time is returned in ISO format.

formatdate-time
name?: string | null

Name of the participant.

picture?: string | null

URL to a picture of the participant.

formaturi
MeetingGetMeetingParticipantResponse { data, success }
data: Data { id, created_at, custom_participant_id, 4 more }

Data returned by the operation

id: string

ID of the participant.

formatuuid
created_at: string

When this object was created. The time is returned in ISO format.

formatdate-time
custom_participant_id: string

A unique participant ID generated by the client.

preset_name: string

Preset applied to the participant.

updated_at: string

When this object was updated. The time is returned in ISO format.

formatdate-time
name?: string | null

Name of the participant.

picture?: string | null

URL to a picture of the participant.

formaturi
success: boolean

Success status of the operation

MeetingEditParticipantResponse { success, data }
success: boolean

Success status of the operation

data?: Data { id, token, created_at, 5 more }

Represents a participant.

id: string

ID of the participant.

formatuuid
token: string

The participant’s auth token that can be used for joining a meeting from the client side.

created_at: string

When this object was created. The time is returned in ISO format.

formatdate-time
custom_participant_id: string

A unique participant ID generated by the client.

preset_name: string

Preset applied to the participant.

updated_at: string

When this object was updated. The time is returned in ISO format.

formatdate-time
name?: string | null

Name of the participant.

picture?: string | null

URL to a picture of the participant.

formaturi
MeetingDeleteMeetingParticipantResponse { success, data }
success: boolean

Success status of the operation

data?: Data { created_at, custom_participant_id, preset_id, updated_at }

Data returned by the operation

created_at: string

Timestamp this object was created at. The time is returned in ISO format.

formatdate-time
custom_participant_id: string

A unique participant ID generated by the client.

preset_id: string

ID of the preset applied to this participant.

formatuuid
updated_at: string

Timestamp this object was updated at. The time is returned in ISO format.

formatdate-time
MeetingRefreshParticipantTokenResponse { data, success }
data: Data { token }

Data returned by the operation

token: string

Regenerated participant’s authentication token.

success: boolean

Success status of the operation

Realtime KitPresets

Fetch all presets
client.realtimeKit.presets.get(stringappID, PresetGetParams { account_id, page_no, per_page, search } params, RequestOptionsoptions?): PresetGetResponse { data, paging, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/presets
Create a preset
client.realtimeKit.presets.create(stringappID, PresetCreateParams { account_id, config, name, 2 more } params, RequestOptionsoptions?): PresetCreateResponse { data, success }
POST/accounts/{account_id}/realtime/kit/{app_id}/presets
Fetch details of a preset
client.realtimeKit.presets.getPresetByID(stringpresetID, PresetGetPresetByIDParams { account_id, app_id } params, RequestOptionsoptions?): PresetGetPresetByIDResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/presets/{preset_id}
Delete a preset
client.realtimeKit.presets.delete(stringpresetID, PresetDeleteParams { account_id, app_id } params, RequestOptionsoptions?): PresetDeleteResponse { data, success }
DELETE/accounts/{account_id}/realtime/kit/{app_id}/presets/{preset_id}
Update a preset
client.realtimeKit.presets.update(stringpresetID, PresetUpdateParams { account_id, app_id, config, 3 more } params, RequestOptionsoptions?): PresetUpdateResponse { data, success }
PATCH/accounts/{account_id}/realtime/kit/{app_id}/presets/{preset_id}
ModelsExpand Collapse
PresetGetResponse { data, paging, success }
data: Array<Data>
id?: string

ID of the preset

formatuuid
created_at?: string

Timestamp this preset was created at

formatdate-time
name?: string

Name of the preset

updated_at?: string

Timestamp this preset was last updated

formatdate-time
paging: Paging { end_offset, start_offset, total_count }
end_offset: number
start_offset: number
total_count: number
minimum0
success: boolean
PresetCreateResponse { data, success }
data: Data { id, config, created_at, 4 more }

Data returned by the operation

id: string

ID of the preset

formatuuid
config: Config { max_screenshare_count, max_video_streams, media, 2 more }
max_screenshare_count: number

Maximum number of screen shares that can be active at a given time

max_video_streams: MaxVideoStreams { desktop, mobile }

Maximum number of streams that are visible on a device

desktop: number

Maximum number of video streams visible on desktop devices

mobile: number

Maximum number of streams visible on mobile devices

media: Media { screenshare, video, audio }

Media configuration options. eg: Video quality

screenshare: Screenshare { frame_rate, quality }

Configuration options for participant screen shares

frame_rate: number

Frame rate of screen share

quality: "hd" | "vga" | "qvga" | 2 more

Quality of screen share

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
video: Video { frame_rate, quality, simulcast }

Configuration options for participant videos

frame_rate: number

Frame rate of participants’ video

maximum30
quality: "hd" | "vga" | "qvga" | 2 more

Video quality of participants

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
simulcast?: boolean

Enable simulcast for participant videos.

audio?: Audio { enable_high_bitrate, enable_stereo }

Control options for Audio quality.

enable_high_bitrate?: boolean

Enable High Quality Audio for your meetings

enable_stereo?: boolean

Enable Stereo for your meetings

view_type: "GROUP_CALL" | "WEBINAR" | "AUDIO_ROOM" | "LIVESTREAM"

Type of the meeting

One of the following:
"GROUP_CALL"
"WEBINAR"
"AUDIO_ROOM"
"LIVESTREAM"
livestream_viewer_qualities?: Array<number> | null

Livestream viewer quality levels.

created_at: string

Timestamp this preset was created at

formatdate-time
name: string

Name of the preset

permissions: Permissions { accept_waiting_requests, can_accept_production_requests, can_change_participant_permissions, 23 more }
accept_waiting_requests: boolean

Whether this participant can accept waiting requests

can_accept_production_requests: boolean
can_change_participant_permissions: boolean
can_edit_display_name: boolean
can_livestream: boolean
can_record: boolean
can_spotlight: boolean
chat: Chat { private, public }
private: Private { can_receive, can_send, files, text }
can_receive: boolean
can_send: boolean
files: boolean
text: boolean
public: Public { can_send, files, text }
can_send: boolean

Can send messages in general

files: boolean

Can send file messages

text: boolean

Can send text messages

connected_meetings: ConnectedMeetings { can_alter_connected_meetings, can_switch_connected_meetings, can_switch_to_parent_meeting }
can_alter_connected_meetings: boolean
can_switch_connected_meetings: boolean
can_switch_to_parent_meeting: boolean
disable_participant_audio: boolean
disable_participant_screensharing: boolean
disable_participant_video: boolean
hidden_participant: boolean

Whether this participant is visible to others or not

kick_participant: boolean
media: Media { audio, screenshare, video }

Media permissions

audio: Audio { can_produce }

Audio permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce audio

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
screenshare: Screenshare { can_produce }

Screenshare permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce screen share video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
video: Video { can_produce }

Video permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
pin_participant: boolean
plugins: Plugins { can_close, can_edit_config, can_start, config }

Plugin permissions

can_close: boolean

Can close plugins that are already open

can_edit_config: boolean

Can edit plugin config

can_start: boolean

Can start plugins

config: Record<string, Config>

Plugin configuration keyed by plugin UUID.

access_control?: "FULL_ACCESS" | "VIEW_ONLY"
One of the following:
"FULL_ACCESS"
"VIEW_ONLY"
handles_view_only?: boolean
polls: Polls { can_create, can_view, can_vote }

Poll permissions

can_create: boolean

Can create polls

can_view: boolean

Can view polls

can_vote: boolean

Can vote on polls

recorder_type: "RECORDER" | "LIVESTREAMER" | "NONE"

Type of the recording peer

One of the following:
"RECORDER"
"LIVESTREAMER"
"NONE"
show_participant_list: boolean
waiting_room_type: "SKIP" | "ON_PRIVILEGED_USER_ENTRY" | "SKIP_ON_ACCEPT"

Waiting room type

One of the following:
"SKIP"
"ON_PRIVILEGED_USER_ENTRY"
"SKIP_ON_ACCEPT"
accept_stage_requests?: boolean
is_recorder?: boolean
stage_access?: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"
One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
stage_enabled?: boolean
transcription_enabled?: boolean
ui: UI { design_tokens }
design_tokens: DesignTokens { border_radius, border_width, colors, 5 more }
border_radius: "sharp" | "rounded" | "extra-rounded" | "circular"
One of the following:
"sharp"
"rounded"
"extra-rounded"
"circular"
border_width: "none" | "thin" | "fat"
One of the following:
"none"
"thin"
"fat"
colors: Colors { background, brand, danger, 5 more }
background: Background { 1000, 600, 700, 2 more }
"1000": string
"600": string
"700": string
"800": string
"900": string
brand: Brand { 300, 400, 500, 2 more }
"300": string
"400": string
"500": string
"600": string
"700": string
danger: string
success: string
text: string
text_on_brand: string
video_bg: string
warning: string
spacing_base: number
minimum1
theme: "darkest" | "dark" | "light"
One of the following:
"darkest"
"dark"
"light"
font_family?: string
google_font?: string
updated_at: string

Timestamp this preset was last updated

formatdate-time
success: boolean

Success status of the operation

PresetGetPresetByIDResponse { data, success }
data: Data { id, config, created_at, 4 more }

Data returned by the operation

id: string

ID of the preset

formatuuid
config: Config { max_screenshare_count, max_video_streams, media, 2 more }
max_screenshare_count: number

Maximum number of screen shares that can be active at a given time

max_video_streams: MaxVideoStreams { desktop, mobile }

Maximum number of streams that are visible on a device

desktop: number

Maximum number of video streams visible on desktop devices

mobile: number

Maximum number of streams visible on mobile devices

media: Media { screenshare, video, audio }

Media configuration options. eg: Video quality

screenshare: Screenshare { frame_rate, quality }

Configuration options for participant screen shares

frame_rate: number

Frame rate of screen share

quality: "hd" | "vga" | "qvga" | 2 more

Quality of screen share

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
video: Video { frame_rate, quality, simulcast }

Configuration options for participant videos

frame_rate: number

Frame rate of participants’ video

maximum30
quality: "hd" | "vga" | "qvga" | 2 more

Video quality of participants

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
simulcast?: boolean

Enable simulcast for participant videos.

audio?: Audio { enable_high_bitrate, enable_stereo }

Control options for Audio quality.

enable_high_bitrate?: boolean

Enable High Quality Audio for your meetings

enable_stereo?: boolean

Enable Stereo for your meetings

view_type: "GROUP_CALL" | "WEBINAR" | "AUDIO_ROOM" | "LIVESTREAM"

Type of the meeting

One of the following:
"GROUP_CALL"
"WEBINAR"
"AUDIO_ROOM"
"LIVESTREAM"
livestream_viewer_qualities?: Array<number> | null

Livestream viewer quality levels.

created_at: string

Timestamp this preset was created at

formatdate-time
name: string

Name of the preset

permissions: Permissions { accept_waiting_requests, can_accept_production_requests, can_change_participant_permissions, 23 more }
accept_waiting_requests: boolean

Whether this participant can accept waiting requests

can_accept_production_requests: boolean
can_change_participant_permissions: boolean
can_edit_display_name: boolean
can_livestream: boolean
can_record: boolean
can_spotlight: boolean
chat: Chat { private, public }
private: Private { can_receive, can_send, files, text }
can_receive: boolean
can_send: boolean
files: boolean
text: boolean
public: Public { can_send, files, text }
can_send: boolean

Can send messages in general

files: boolean

Can send file messages

text: boolean

Can send text messages

connected_meetings: ConnectedMeetings { can_alter_connected_meetings, can_switch_connected_meetings, can_switch_to_parent_meeting }
can_alter_connected_meetings: boolean
can_switch_connected_meetings: boolean
can_switch_to_parent_meeting: boolean
disable_participant_audio: boolean
disable_participant_screensharing: boolean
disable_participant_video: boolean
hidden_participant: boolean

Whether this participant is visible to others or not

kick_participant: boolean
media: Media { audio, screenshare, video }

Media permissions

audio: Audio { can_produce }

Audio permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce audio

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
screenshare: Screenshare { can_produce }

Screenshare permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce screen share video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
video: Video { can_produce }

Video permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
pin_participant: boolean
plugins: Plugins { can_close, can_edit_config, can_start, config }

Plugin permissions

can_close: boolean

Can close plugins that are already open

can_edit_config: boolean

Can edit plugin config

can_start: boolean

Can start plugins

config: Record<string, Config>

Plugin configuration keyed by plugin UUID.

access_control?: "FULL_ACCESS" | "VIEW_ONLY"
One of the following:
"FULL_ACCESS"
"VIEW_ONLY"
handles_view_only?: boolean
polls: Polls { can_create, can_view, can_vote }

Poll permissions

can_create: boolean

Can create polls

can_view: boolean

Can view polls

can_vote: boolean

Can vote on polls

recorder_type: "RECORDER" | "LIVESTREAMER" | "NONE"

Type of the recording peer

One of the following:
"RECORDER"
"LIVESTREAMER"
"NONE"
show_participant_list: boolean
waiting_room_type: "SKIP" | "ON_PRIVILEGED_USER_ENTRY" | "SKIP_ON_ACCEPT"

Waiting room type

One of the following:
"SKIP"
"ON_PRIVILEGED_USER_ENTRY"
"SKIP_ON_ACCEPT"
accept_stage_requests?: boolean
is_recorder?: boolean
stage_access?: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"
One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
stage_enabled?: boolean
transcription_enabled?: boolean
ui: UI { design_tokens }
design_tokens: DesignTokens { border_radius, border_width, colors, 5 more }
border_radius: "sharp" | "rounded" | "extra-rounded" | "circular"
One of the following:
"sharp"
"rounded"
"extra-rounded"
"circular"
border_width: "none" | "thin" | "fat"
One of the following:
"none"
"thin"
"fat"
colors: Colors { background, brand, danger, 5 more }
background: Background { 1000, 600, 700, 2 more }
"1000": string
"600": string
"700": string
"800": string
"900": string
brand: Brand { 300, 400, 500, 2 more }
"300": string
"400": string
"500": string
"600": string
"700": string
danger: string
success: string
text: string
text_on_brand: string
video_bg: string
warning: string
spacing_base: number
minimum1
theme: "darkest" | "dark" | "light"
One of the following:
"darkest"
"dark"
"light"
font_family?: string
google_font?: string
updated_at: string

Timestamp this preset was last updated

formatdate-time
success: boolean

Success status of the operation

PresetDeleteResponse { data, success }
data: Data { id, config, created_at, 4 more }

Data returned by the operation

id: string

ID of the preset

formatuuid
config: Config { max_screenshare_count, max_video_streams, media, 2 more }
max_screenshare_count: number

Maximum number of screen shares that can be active at a given time

max_video_streams: MaxVideoStreams { desktop, mobile }

Maximum number of streams that are visible on a device

desktop: number

Maximum number of video streams visible on desktop devices

mobile: number

Maximum number of streams visible on mobile devices

media: Media { screenshare, video, audio }

Media configuration options. eg: Video quality

screenshare: Screenshare { frame_rate, quality }

Configuration options for participant screen shares

frame_rate: number

Frame rate of screen share

quality: "hd" | "vga" | "qvga" | 2 more

Quality of screen share

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
video: Video { frame_rate, quality, simulcast }

Configuration options for participant videos

frame_rate: number

Frame rate of participants’ video

maximum30
quality: "hd" | "vga" | "qvga" | 2 more

Video quality of participants

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
simulcast?: boolean

Enable simulcast for participant videos.

audio?: Audio { enable_high_bitrate, enable_stereo }

Control options for Audio quality.

enable_high_bitrate?: boolean

Enable High Quality Audio for your meetings

enable_stereo?: boolean

Enable Stereo for your meetings

view_type: "GROUP_CALL" | "WEBINAR" | "AUDIO_ROOM" | "LIVESTREAM"

Type of the meeting

One of the following:
"GROUP_CALL"
"WEBINAR"
"AUDIO_ROOM"
"LIVESTREAM"
livestream_viewer_qualities?: Array<number> | null

Livestream viewer quality levels.

created_at: string

Timestamp this preset was created at

formatdate-time
name: string

Name of the preset

permissions: Permissions { accept_waiting_requests, can_accept_production_requests, can_change_participant_permissions, 23 more }
accept_waiting_requests: boolean

Whether this participant can accept waiting requests

can_accept_production_requests: boolean
can_change_participant_permissions: boolean
can_edit_display_name: boolean
can_livestream: boolean
can_record: boolean
can_spotlight: boolean
chat: Chat { private, public }
private: Private { can_receive, can_send, files, text }
can_receive: boolean
can_send: boolean
files: boolean
text: boolean
public: Public { can_send, files, text }
can_send: boolean

Can send messages in general

files: boolean

Can send file messages

text: boolean

Can send text messages

connected_meetings: ConnectedMeetings { can_alter_connected_meetings, can_switch_connected_meetings, can_switch_to_parent_meeting }
can_alter_connected_meetings: boolean
can_switch_connected_meetings: boolean
can_switch_to_parent_meeting: boolean
disable_participant_audio: boolean
disable_participant_screensharing: boolean
disable_participant_video: boolean
hidden_participant: boolean

Whether this participant is visible to others or not

kick_participant: boolean
media: Media { audio, screenshare, video }

Media permissions

audio: Audio { can_produce }

Audio permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce audio

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
screenshare: Screenshare { can_produce }

Screenshare permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce screen share video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
video: Video { can_produce }

Video permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
pin_participant: boolean
plugins: Plugins { can_close, can_edit_config, can_start, config }

Plugin permissions

can_close: boolean

Can close plugins that are already open

can_edit_config: boolean

Can edit plugin config

can_start: boolean

Can start plugins

config: Record<string, Config>

Plugin configuration keyed by plugin UUID.

access_control?: "FULL_ACCESS" | "VIEW_ONLY"
One of the following:
"FULL_ACCESS"
"VIEW_ONLY"
handles_view_only?: boolean
polls: Polls { can_create, can_view, can_vote }

Poll permissions

can_create: boolean

Can create polls

can_view: boolean

Can view polls

can_vote: boolean

Can vote on polls

recorder_type: "RECORDER" | "LIVESTREAMER" | "NONE"

Type of the recording peer

One of the following:
"RECORDER"
"LIVESTREAMER"
"NONE"
show_participant_list: boolean
waiting_room_type: "SKIP" | "ON_PRIVILEGED_USER_ENTRY" | "SKIP_ON_ACCEPT"

Waiting room type

One of the following:
"SKIP"
"ON_PRIVILEGED_USER_ENTRY"
"SKIP_ON_ACCEPT"
accept_stage_requests?: boolean
is_recorder?: boolean
stage_access?: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"
One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
stage_enabled?: boolean
transcription_enabled?: boolean
ui: UI { design_tokens }
design_tokens: DesignTokens { border_radius, border_width, colors, 5 more }
border_radius: "sharp" | "rounded" | "extra-rounded" | "circular"
One of the following:
"sharp"
"rounded"
"extra-rounded"
"circular"
border_width: "none" | "thin" | "fat"
One of the following:
"none"
"thin"
"fat"
colors: Colors { background, brand, danger, 5 more }
background: Background { 1000, 600, 700, 2 more }
"1000": string
"600": string
"700": string
"800": string
"900": string
brand: Brand { 300, 400, 500, 2 more }
"300": string
"400": string
"500": string
"600": string
"700": string
danger: string
success: string
text: string
text_on_brand: string
video_bg: string
warning: string
spacing_base: number
minimum1
theme: "darkest" | "dark" | "light"
One of the following:
"darkest"
"dark"
"light"
font_family?: string
google_font?: string
updated_at: string

Timestamp this preset was last updated

formatdate-time
success: boolean

Success status of the operation

PresetUpdateResponse { data, success }
data: Data { id, config, created_at, 4 more }

Data returned by the operation

id: string

ID of the preset

formatuuid
config: Config { max_screenshare_count, max_video_streams, media, 2 more }
max_screenshare_count: number

Maximum number of screen shares that can be active at a given time

max_video_streams: MaxVideoStreams { desktop, mobile }

Maximum number of streams that are visible on a device

desktop: number

Maximum number of video streams visible on desktop devices

mobile: number

Maximum number of streams visible on mobile devices

media: Media { screenshare, video, audio }

Media configuration options. eg: Video quality

screenshare: Screenshare { frame_rate, quality }

Configuration options for participant screen shares

frame_rate: number

Frame rate of screen share

quality: "hd" | "vga" | "qvga" | 2 more

Quality of screen share

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
video: Video { frame_rate, quality, simulcast }

Configuration options for participant videos

frame_rate: number

Frame rate of participants’ video

maximum30
quality: "hd" | "vga" | "qvga" | 2 more

Video quality of participants

One of the following:
"hd"
"vga"
"qvga"
"fhd"
"uhd"
simulcast?: boolean

Enable simulcast for participant videos.

audio?: Audio { enable_high_bitrate, enable_stereo }

Control options for Audio quality.

enable_high_bitrate?: boolean

Enable High Quality Audio for your meetings

enable_stereo?: boolean

Enable Stereo for your meetings

view_type: "GROUP_CALL" | "WEBINAR" | "AUDIO_ROOM" | "LIVESTREAM"

Type of the meeting

One of the following:
"GROUP_CALL"
"WEBINAR"
"AUDIO_ROOM"
"LIVESTREAM"
livestream_viewer_qualities?: Array<number> | null

Livestream viewer quality levels.

created_at: string

Timestamp this preset was created at

formatdate-time
name: string

Name of the preset

permissions: Permissions { accept_waiting_requests, can_accept_production_requests, can_change_participant_permissions, 23 more }
accept_waiting_requests: boolean

Whether this participant can accept waiting requests

can_accept_production_requests: boolean
can_change_participant_permissions: boolean
can_edit_display_name: boolean
can_livestream: boolean
can_record: boolean
can_spotlight: boolean
chat: Chat { private, public }
private: Private { can_receive, can_send, files, text }
can_receive: boolean
can_send: boolean
files: boolean
text: boolean
public: Public { can_send, files, text }
can_send: boolean

Can send messages in general

files: boolean

Can send file messages

text: boolean

Can send text messages

connected_meetings: ConnectedMeetings { can_alter_connected_meetings, can_switch_connected_meetings, can_switch_to_parent_meeting }
can_alter_connected_meetings: boolean
can_switch_connected_meetings: boolean
can_switch_to_parent_meeting: boolean
disable_participant_audio: boolean
disable_participant_screensharing: boolean
disable_participant_video: boolean
hidden_participant: boolean

Whether this participant is visible to others or not

kick_participant: boolean
media: Media { audio, screenshare, video }

Media permissions

audio: Audio { can_produce }

Audio permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce audio

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
screenshare: Screenshare { can_produce }

Screenshare permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce screen share video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
video: Video { can_produce }

Video permissions

can_produce: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"

Can produce video

One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
pin_participant: boolean
plugins: Plugins { can_close, can_edit_config, can_start, config }

Plugin permissions

can_close: boolean

Can close plugins that are already open

can_edit_config: boolean

Can edit plugin config

can_start: boolean

Can start plugins

config: Record<string, Config>

Plugin configuration keyed by plugin UUID.

access_control?: "FULL_ACCESS" | "VIEW_ONLY"
One of the following:
"FULL_ACCESS"
"VIEW_ONLY"
handles_view_only?: boolean
polls: Polls { can_create, can_view, can_vote }

Poll permissions

can_create: boolean

Can create polls

can_view: boolean

Can view polls

can_vote: boolean

Can vote on polls

recorder_type: "RECORDER" | "LIVESTREAMER" | "NONE"

Type of the recording peer

One of the following:
"RECORDER"
"LIVESTREAMER"
"NONE"
show_participant_list: boolean
waiting_room_type: "SKIP" | "ON_PRIVILEGED_USER_ENTRY" | "SKIP_ON_ACCEPT"

Waiting room type

One of the following:
"SKIP"
"ON_PRIVILEGED_USER_ENTRY"
"SKIP_ON_ACCEPT"
accept_stage_requests?: boolean
is_recorder?: boolean
stage_access?: "ALLOWED" | "NOT_ALLOWED" | "CAN_REQUEST"
One of the following:
"ALLOWED"
"NOT_ALLOWED"
"CAN_REQUEST"
stage_enabled?: boolean
transcription_enabled?: boolean
ui: UI { design_tokens }
design_tokens: DesignTokens { border_radius, border_width, colors, 5 more }
border_radius: "sharp" | "rounded" | "extra-rounded" | "circular"
One of the following:
"sharp"
"rounded"
"extra-rounded"
"circular"
border_width: "none" | "thin" | "fat"
One of the following:
"none"
"thin"
"fat"
colors: Colors { background, brand, danger, 5 more }
background: Background { 1000, 600, 700, 2 more }
"1000": string
"600": string
"700": string
"800": string
"900": string
brand: Brand { 300, 400, 500, 2 more }
"300": string
"400": string
"500": string
"600": string
"700": string
danger: string
success: string
text: string
text_on_brand: string
video_bg: string
warning: string
spacing_base: number
minimum1
theme: "darkest" | "dark" | "light"
One of the following:
"darkest"
"dark"
"light"
font_family?: string
google_font?: string
updated_at: string

Timestamp this preset was last updated

formatdate-time
success: boolean

Success status of the operation

Realtime KitSessions

Fetch all sessions of an App
client.realtimeKit.sessions.getSessions(stringappID, SessionGetSessionsParams { account_id, associated_id, end_time, 8 more } params, RequestOptionsoptions?): SessionGetSessionsResponse { data, paging, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions
Fetch details of a session
client.realtimeKit.sessions.getSessionDetails(stringsessionID, SessionGetSessionDetailsParams { account_id, app_id, include_breakout_rooms } params, RequestOptionsoptions?): SessionGetSessionDetailsResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}
Fetch participants list of a session
client.realtimeKit.sessions.getSessionParticipants(stringsessionID, SessionGetSessionParticipantsParams { account_id, app_id, include_peer_events, 6 more } params, RequestOptionsoptions?): SessionGetSessionParticipantsResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/participants
Fetch details of a participant
client.realtimeKit.sessions.getSessionParticipantDetails(stringparticipantID, SessionGetSessionParticipantDetailsParams { account_id, app_id, session_id, include_peer_events } params, RequestOptionsoptions?): SessionGetSessionParticipantDetailsResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/participants/{participant_id}
Fetch all chat messages of a session
client.realtimeKit.sessions.getSessionChat(stringsessionID, SessionGetSessionChatParams { account_id, app_id } params, RequestOptionsoptions?): SessionGetSessionChatResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/chat
Fetch the complete transcript for a session
client.realtimeKit.sessions.getSessionTranscripts(stringsessionID, SessionGetSessionTranscriptsParams { account_id, app_id, format } params, RequestOptionsoptions?): SessionGetSessionTranscriptsResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/transcript
Fetch summary of transcripts for a session
client.realtimeKit.sessions.getSessionSummary(stringsessionID, SessionGetSessionSummaryParams { account_id, app_id } params, RequestOptionsoptions?): SessionGetSessionSummaryResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/summary
Generate summary of Transcripts for the session
client.realtimeKit.sessions.generateSummaryOfTranscripts(stringsessionID, SessionGenerateSummaryOfTranscriptsParams { account_id, app_id } params, RequestOptionsoptions?): SessionGenerateSummaryOfTranscriptsResponse { data, success }
POST/accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/summary
Fetch details of peer
client.realtimeKit.sessions.getParticipantDataFromPeerID(stringpeerID, SessionGetParticipantDataFromPeerIDParams { account_id, app_id, filters, include_peer_events } params, RequestOptionsoptions?): SessionGetParticipantDataFromPeerIDResponse { data, success }
GET/accounts/{account_id}/realtime/kit/{app_id}/sessions/peer-report/{peer_id}
ModelsExpand Collapse
SessionGetSessionsResponse { data, paging, success }
data?: Data { sessions }
sessions?: Array<Session>
id: string

ID of the session

associated_id: 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

created_at: string

timestamp when session created

live_participants: number

number of participants currently in the session

max_concurrent_participants: number

number of maximum participants that were in the session

meeting_display_name: string

Title of the meeting this session belongs to

minutes_consumed: number

number of minutes consumed since the session started

organization_id: string

App id that hosted this session

started_at: string

timestamp when session started

status: "LIVE" | "ENDED"

current status of session

One of the following:
"LIVE"
"ENDED"
type: "meeting" | "livestream" | "participant"

type of session

One of the following:
"meeting"
"livestream"
"participant"
updated_at: string

timestamp when session was last updated

breakout_rooms?: Array<unknown>
ended_at?: string

timestamp when session ended

paging?: Paging { end_offset, start_offset, total_count }
end_offset?: number
start_offset?: number
total_count?: number
minimum0
success?: boolean
SessionGetSessionDetailsResponse { data, success }
data?: Data { id, associated_id, created_at, 11 more }
id: string

ID of the session

associated_id: 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

created_at: string

timestamp when session created

live_participants: number

number of participants currently in the session

max_concurrent_participants: number

number of maximum participants that were in the session

meeting_display_name: string

Title of the meeting this session belongs to

minutes_consumed: number

number of minutes consumed since the session started

organization_id: string

App id that hosted this session

started_at: string

timestamp when session started

status: "LIVE" | "ENDED"

current status of session

One of the following:
"LIVE"
"ENDED"
type: "meeting" | "livestream" | "participant"

type of session

One of the following:
"meeting"
"livestream"
"participant"
updated_at: string

timestamp when session was last updated

breakout_rooms?: Array<unknown>
ended_at?: string

timestamp when session ended

success?: boolean
SessionGetSessionParticipantsResponse { data, success }
data?: Data { participants }
participants?: Array<Participant>
id?: string

Participant ID. This maps to the corresponding peerId.

created_at?: string

timestamp when this participant was created.

custom_participant_id?: string

ID passed by client to create this participant.

display_name?: string

Display name of participant when joining the session.

duration?: number

number of minutes for which the participant was in the session.

joined_at?: string

timestamp at which participant joined the session.

left_at?: string

timestamp at which participant left the session.

peer_events?: Array<PeerEvent>

Connection lifecycle events for the participant’s peer. Only included when include_peer_events is true.

id?: string

ID of the peer event.

created_at?: string

Timestamp when this peer event was created.

event_name?: "PEER_CREATED" | "PEER_JOINING" | "PEER_LEAVING"

Name of the peer event.

One of the following:
"PEER_CREATED"
"PEER_JOINING"
"PEER_LEAVING"
minutes_consumed?: number

Minutes consumed attributed to this event.

participant_id?: string | null

ID of the participant this event belongs to.

peer_id?: string

Peer ID this event belongs to.

preset_view_type?: "GROUP_CALL" | "WEBINAR" | "AUDIO_ROOM" | 2 more | null

View type of the preset associated with the peer.

One of the following:
"GROUP_CALL"
"WEBINAR"
"AUDIO_ROOM"
"LIVESTREAM"
"CHAT"
session_id?: string | null

ID of the session this event belongs to.

socket_session_id?: string | null

ID of the socket session associated with this event.

updated_at?: string

Timestamp when this peer event was last updated.

preset_name?: string

Name of the preset associated with the participant.

updated_at?: string

timestamp when this participant’s data was last updated.

user_id?: string

User id for this participant.

success?: boolean
SessionGetSessionParticipantDetailsResponse { data, success }
data?: Data { participant }
participant?: Participant { id, created_at, custom_participant_id, 8 more }
id?: string

Participant ID. This maps to the corresponding peerId.

created_at?: string

timestamp when this participant was created.

custom_participant_id?: string

ID passed by client to create this participant.

display_name?: string

Display name of participant when joining the session.

duration?: number

number of minutes for which the participant was in the session.

joined_at?: string

timestamp at which participant joined the session.

left_at?: string

timestamp at which participant left the session.

peer_events?: Array<PeerEvent>

Connection lifecycle events for the participant’s peer. Only included when include_peer_events is true.

id?: string

ID of the peer event.

created_at?: string

Timestamp when this peer event was created.

event_name?: "PEER_CREATED" | "PEER_JOINING" | "PEER_LEAVING"

Name of the peer event.

One of the following:
"PEER_CREATED"
"PEER_JOINING"
"PEER_LEAVING"
minutes_consumed?: number

Minutes consumed attributed to this event.

participant_id?: string | null

ID of the participant this event belongs to.

peer_id?: string

Peer ID this event belongs to.

preset_view_type?: "GROUP_CALL" | "WEBINAR" | "AUDIO_ROOM" | 2 more | null

View type of the preset associated with the peer.

One of the following:
"GROUP_CALL"
"WEBINAR"
"AUDIO_ROOM"
"LIVESTREAM"
"CHAT"
session_id?: string | null

ID of the session this event belongs to.

socket_session_id?: string | null

ID of the socket session associated with this event.

updated_at?: string

Timestamp when this peer event was last updated.

preset_name?: string

Name of the preset associated with the participant.

updated_at?: string

timestamp when this participant’s data was last updated.

user_id?: string

User id for this participant.

success?: boolean
SessionGetSessionChatResponse { data, success }
data?: Data { chat_download_url, chat_download_url_expiry }
chat_download_url: string

URL where the chat logs can be downloaded

chat_download_url_expiry: string

Time when the download URL will expire

success?: boolean
SessionGetSessionTranscriptsResponse { data, success }
data?: Data { sessionId, transcript_download_url, transcript_download_url_expiry }
sessionId: string
transcript_download_url: string

URL where the transcript can be downloaded

transcript_download_url_expiry: string

Time when the download URL will expire

success?: boolean
SessionGetSessionSummaryResponse { data, success }
data?: Data { sessionId, summaryDownloadUrl, summaryDownloadUrlExpiry }
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?: boolean
SessionGenerateSummaryOfTranscriptsResponse { data, success }
data?: Data { session_id, status }
session_id?: string
formatuuid
status?: string
success?: boolean
SessionGetParticipantDataFromPeerIDResponse { data, success }
data?: Data { participant }
participant?: Participant { id, created_at, custom_participant_id, 10 more }
id?: string

ID of the participant.

formatuuid
created_at?: string

timestamp when this participant was created.

custom_participant_id?: string

ID passed by client to create this participant.

display_name?: string

Display name of participant when joining the session.

duration?: number

number of minutes for which the participant was in the session.

joined_at?: string

timestamp at which participant joined the session.

left_at?: string

timestamp at which participant left the session.

peer_events?: Array<PeerEvent>

Connection lifecycle events for the participant’s peer.

id?: string

ID of the peer event.

created_at?: string

Timestamp when this peer event was created.

event_name?: "PEER_CREATED" | "PEER_JOINING" | "PEER_LEAVING"

Name of the peer event.

One of the following:
"PEER_CREATED"
"PEER_JOINING"
"PEER_LEAVING"
minutes_consumed?: number

Minutes consumed attributed to this event.

participant_id?: string | null

ID of the participant this event belongs to.

peer_id?: string

Peer ID this event belongs to.

preset_view_type?: "GROUP_CALL" | "WEBINAR" | "AUDIO_ROOM" | 2 more | null

View type of the preset associated with the peer.

One of the following:
"GROUP_CALL"
"WEBINAR"
"AUDIO_ROOM"
"LIVESTREAM"
"CHAT"
session_id?: string | null

ID of the session this event belongs to.

socket_session_id?: string | null

ID of the socket session associated with this event.

updated_at?: string

Timestamp when this peer event was last updated.

peer_report?: PeerReport { metadata, quality }

Peer call statistics report.

metadata?: Metadata { audio_devices_updates, browser_metadata, candidate_pairs, 12 more }

Connection and device metadata for the participant.

audio_devices_updates?: Array<AudioDevicesUpdate>
added?: Array<Added>

Devices that became available.

device_id?: string

ID of the device.

kind?: string

Kind of device, for example audioinput or videoinput.

label?: string

Human-readable label of the device.

removed?: Array<Removed>

Devices that became unavailable.

device_id?: 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.

browser_metadata?: BrowserMetadata { browser, browser_version, engine, 2 more }
browser?: string
browser_version?: string
engine?: string
user_agent?: string
webgl_support?: boolean | null
candidate_pairs?: CandidatePairs { consuming_transport, producing_transport }
consuming_transport?: Array<ConsumingTransport>
available_incoming_bitrate?: number
available_outgoing_bitrate?: number
bytes_discarded_on_send?: number
bytes_received?: number
bytes_sent?: number
current_round_trip_time?: number
last_packet_received_timestamp?: number

Epoch milliseconds when the last packet was received.

last_packet_sent_timestamp?: number

Epoch milliseconds when the last packet was sent.

local_candidate_address?: string
local_candidate_id?: string
local_candidate_network_type?: string
local_candidate_port?: number
local_candidate_protocol?: string
local_candidate_type?: string
local_candidate_url?: string
nominated?: boolean
packets_discarded_on_send?: number
packets_received?: number
packets_sent?: number
remote_candidate_address?: string
remote_candidate_id?: string
remote_candidate_port?: number
remote_candidate_protocol?: string
remote_candidate_type?: string
remote_candidate_url?: string
total_round_trip_time?: number
producing_transport?: Array<ProducingTransport>
available_incoming_bitrate?: number
available_outgoing_bitrate?: number
bytes_discarded_on_send?: number
bytes_received?: number
bytes_sent?: number
current_round_trip_time?: number
last_packet_received_timestamp?: number

Epoch milliseconds when the last packet was received.

last_packet_sent_timestamp?: number

Epoch milliseconds when the last packet was sent.

local_candidate_address?: string
local_candidate_id?: string
local_candidate_network_type?: string
local_candidate_port?: number
local_candidate_protocol?: string
local_candidate_type?: string
local_candidate_url?: string
nominated?: boolean
packets_discarded_on_send?: number
packets_received?: number
packets_sent?: number
remote_candidate_address?: string
remote_candidate_id?: string
remote_candidate_port?: number
remote_candidate_protocol?: string
remote_candidate_type?: string
remote_candidate_url?: string
total_round_trip_time?: number
device_info?: DeviceInfo { cpus, is_mobile, os, os_version }
cpus?: number
is_mobile?: boolean
os?: string
os_version?: string
events?: Array<Event>
metadata?: Record<string, string | number | boolean | null>

Event-specific metadata. Keys vary per event; values are primitive scalars (string, number, boolean, or null).

One of the following:
string
number
boolean
name?: string

Name of the event.

timestamp?: string

Timestamp when the event occurred.

ip_information?: IPInformation { asn, city, country, 4 more }
asn?: ASN { asn, domain, name, 2 more }
asn?: string
domain?: string
name?: string
route?: string
type?: string
city?: string
country?: string
ipv4?: string
org?: string
region?: string
timezone?: string
native_metadata?: NativeMetadata { audio_encoder, video_encoder }
audio_encoder?: string
video_encoder?: string
pc_metadata?: Array<PcMetadata>
effective_network_type?: string
reflexive_connectivity?: boolean
relay_connectivity?: boolean
sdp?: Array<string>
timestamp?: string
turn_connectivity?: boolean
room_view_type?: string
sdk_name?: string
sdk_type?: string
sdk_version?: string
selected_device_updates?: Array<SelectedDeviceUpdate>
device?: Device { device_id, kind, label }

A media device (camera, microphone, or speaker).

device_id?: 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
speaker_devices_updates?: Array<SpeakerDevicesUpdate>
added?: Array<Added>

Devices that became available.

device_id?: string

ID of the device.

kind?: string

Kind of device, for example audioinput or videoinput.

label?: string

Human-readable label of the device.

removed?: Array<Removed>

Devices that became unavailable.

device_id?: 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.

video_devices_updates?: Array<VideoDevicesUpdate>
added?: Array<Added>

Devices that became available.

device_id?: string

ID of the device.

kind?: string

Kind of device, for example audioinput or videoinput.

label?: string

Human-readable label of the device.

removed?: Array<Removed>

Devices that became unavailable.

device_id?: 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?: Quality { audio_consumer, audio_consumer_cumulative, audio_producer, 13 more }

Media quality statistics for the participant.

audio_consumer?: Array<AudioConsumer>
bytes_received?: number
concealment_events?: number
consumer_id?: string
jitter?: number
jitter_buffer_delay?: number
jitter_buffer_emitted_count?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_received?: number
peer_id?: string
producer_id?: string
ssrc?: number
timestamp?: string
audio_consumer_cumulative?: AudioConsumerCumulative { jitter_buffer_delay, packet_loss, quality_mos }

Aggregated inbound (consumer) audio statistics for the session.

jitter_buffer_delay?: JitterBufferDelay { 100ms_or_greater_event_fraction, 250ms_or_greater_event_fraction, 500ms_or_greater_event_fraction, avg }

Cumulative latency distribution (milliseconds-based thresholds).

"100ms_or_greater_event_fraction"?: number
"250ms_or_greater_event_fraction"?: number
"500ms_or_greater_event_fraction"?: number
avg?: number
packet_loss?: PacketLoss { 10_or_greater_event_fraction, 25_or_greater_event_fraction, 5_or_greater_event_fraction, 2 more }

Cumulative packet loss distribution.

"10_or_greater_event_fraction"?: number
"25_or_greater_event_fraction"?: number
"5_or_greater_event_fraction"?: number
"50_or_greater_event_fraction"?: number
avg?: number
quality_mos?: QualityMos { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
audio_producer?: Array<AudioProducer>
bytes_sent?: number
jitter?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_sent?: number
producer_id?: string
rtt?: number
ssrc?: number
timestamp?: string
audio_producer_cumulative?: AudioProducerCumulative { packet_loss, quality_mos, rtt }

Aggregated outbound (producer) audio statistics for the session.

packet_loss?: PacketLoss { 10_or_greater_event_fraction, 25_or_greater_event_fraction, 5_or_greater_event_fraction, 2 more }

Cumulative packet loss distribution.

"10_or_greater_event_fraction"?: number
"25_or_greater_event_fraction"?: number
"5_or_greater_event_fraction"?: number
"50_or_greater_event_fraction"?: number
avg?: number
quality_mos?: QualityMos { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
rtt?: RTT { 100ms_or_greater_event_fraction, 250ms_or_greater_event_fraction, 500ms_or_greater_event_fraction, avg }

Cumulative latency distribution (milliseconds-based thresholds).

"100ms_or_greater_event_fraction"?: number
"250ms_or_greater_event_fraction"?: number
"500ms_or_greater_event_fraction"?: number
avg?: number
screenshare_audio_consumer?: Array<ScreenshareAudioConsumer>
bytes_received?: number
concealment_events?: number
consumer_id?: string
jitter?: number
jitter_buffer_delay?: number
jitter_buffer_emitted_count?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_received?: number
peer_id?: string
producer_id?: string
ssrc?: number
timestamp?: string
screenshare_audio_consumer_cumulative?: ScreenshareAudioConsumerCumulative { jitter_buffer_delay, packet_loss, quality_mos }

Aggregated inbound (consumer) audio statistics for the session.

jitter_buffer_delay?: JitterBufferDelay { 100ms_or_greater_event_fraction, 250ms_or_greater_event_fraction, 500ms_or_greater_event_fraction, avg }

Cumulative latency distribution (milliseconds-based thresholds).

"100ms_or_greater_event_fraction"?: number
"250ms_or_greater_event_fraction"?: number
"500ms_or_greater_event_fraction"?: number
avg?: number
packet_loss?: PacketLoss { 10_or_greater_event_fraction, 25_or_greater_event_fraction, 5_or_greater_event_fraction, 2 more }

Cumulative packet loss distribution.

"10_or_greater_event_fraction"?: number
"25_or_greater_event_fraction"?: number
"5_or_greater_event_fraction"?: number
"50_or_greater_event_fraction"?: number
avg?: number
quality_mos?: QualityMos { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
screenshare_audio_producer?: Array<ScreenshareAudioProducer>
bytes_sent?: number
jitter?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_sent?: number
producer_id?: string
rtt?: number
ssrc?: number
timestamp?: string
screenshare_audio_producer_cumulative?: ScreenshareAudioProducerCumulative { packet_loss, quality_mos, rtt }

Aggregated outbound (producer) audio statistics for the session.

packet_loss?: PacketLoss { 10_or_greater_event_fraction, 25_or_greater_event_fraction, 5_or_greater_event_fraction, 2 more }

Cumulative packet loss distribution.

"10_or_greater_event_fraction"?: number
"25_or_greater_event_fraction"?: number
"5_or_greater_event_fraction"?: number
"50_or_greater_event_fraction"?: number
avg?: number
quality_mos?: QualityMos { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
rtt?: RTT { 100ms_or_greater_event_fraction, 250ms_or_greater_event_fraction, 500ms_or_greater_event_fraction, avg }

Cumulative latency distribution (milliseconds-based thresholds).

"100ms_or_greater_event_fraction"?: number
"250ms_or_greater_event_fraction"?: number
"500ms_or_greater_event_fraction"?: number
avg?: number
screenshare_video_consumer?: Array<ScreenshareVideoConsumer>
bytes_received?: number
consumer_id?: string
fir_count?: number
frame_height?: number
frame_width?: number
frames_decoded?: number
frames_dropped?: number
frames_per_second?: number
jitter?: number
jitter_buffer_delay?: number
jitter_buffer_emitted_count?: number
key_frames_decoded?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_received?: number
peer_id?: string
producer_id?: string
ssrc?: number
timestamp?: string
screenshare_video_consumer_cumulative?: ScreenshareVideoConsumerCumulative { frame_per_second, frame_width, issues, 4 more }

Aggregated inbound (consumer) video statistics for the session.

frame_per_second?: FramePerSecond { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
frame_width?: FrameWidth { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
issues?: Issues { lag_fraction, no_video_fraction, poor_resolution_fraction }
lag_fraction?: number
no_video_fraction?: number
poor_resolution_fraction?: number
jitter_buffer_delay?: JitterBufferDelay { 100ms_or_greater_event_fraction, 250ms_or_greater_event_fraction, 500ms_or_greater_event_fraction, avg }

Cumulative latency distribution (milliseconds-based thresholds).

"100ms_or_greater_event_fraction"?: number
"250ms_or_greater_event_fraction"?: number
"500ms_or_greater_event_fraction"?: number
avg?: number
key_frames_decoded_fraction?: number
packet_loss?: PacketLoss { 10_or_greater_event_fraction, 25_or_greater_event_fraction, 5_or_greater_event_fraction, 2 more }

Cumulative packet loss distribution.

"10_or_greater_event_fraction"?: number
"25_or_greater_event_fraction"?: number
"5_or_greater_event_fraction"?: number
"50_or_greater_event_fraction"?: number
avg?: number
quality_mos?: QualityMos { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
screenshare_video_producer?: Array<ScreenshareVideoProducer>
bytes_sent?: number
fir_count?: number
frame_height?: number
frame_width?: number
frames_encoded?: number
frames_per_second?: number
jitter?: number
key_frames_encoded?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_sent?: number
pli_count?: number
producer_id?: string
quality_limitation_durations?: QualityLimitationDurations { bandwidth, cpu, none, other }
bandwidth?: number
cpu?: number
none?: number
other?: number
quality_limitation_reason?: "cpu" | "bandwidth" | "none" | "other"
One of the following:
"cpu"
"bandwidth"
"none"
"other"
quality_limitation_resolution_changes?: number
rtt?: number
ssrc?: number
timestamp?: string
screenshare_video_producer_cumulative?: ScreenshareVideoProducerCumulative { frame_per_second, frame_width, high_negative_feedback_fraction, 5 more }

Aggregated outbound (producer) video statistics for the session.

frame_per_second?: FramePerSecond { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
frame_width?: FrameWidth { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
high_negative_feedback_fraction?: number
issues?: Issues { bandwidth_quality_limitation_fraction, cpu_quality_limitation_fraction, no_video_fraction, 2 more }
bandwidth_quality_limitation_fraction?: number
cpu_quality_limitation_fraction?: number
no_video_fraction?: number
poor_resolution_fraction?: number
quality_limitation_fraction?: number
key_frames_encoded_fraction?: number
packet_loss?: PacketLoss { 10_or_greater_event_fraction, 25_or_greater_event_fraction, 5_or_greater_event_fraction, 2 more }

Cumulative packet loss distribution.

"10_or_greater_event_fraction"?: number
"25_or_greater_event_fraction"?: number
"5_or_greater_event_fraction"?: number
"50_or_greater_event_fraction"?: number
avg?: number
quality_mos?: QualityMos { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
rtt?: RTT { 100ms_or_greater_event_fraction, 250ms_or_greater_event_fraction, 500ms_or_greater_event_fraction, avg }

Cumulative latency distribution (milliseconds-based thresholds).

"100ms_or_greater_event_fraction"?: number
"250ms_or_greater_event_fraction"?: number
"500ms_or_greater_event_fraction"?: number
avg?: number
video_consumer?: Array<VideoConsumer>
bytes_received?: number
consumer_id?: string
fir_count?: number
frame_height?: number
frame_width?: number
frames_decoded?: number
frames_dropped?: number
frames_per_second?: number
jitter?: number
jitter_buffer_delay?: number
jitter_buffer_emitted_count?: number
key_frames_decoded?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_received?: number
peer_id?: string
producer_id?: string
ssrc?: number
timestamp?: string
video_consumer_cumulative?: VideoConsumerCumulative { frame_per_second, frame_width, issues, 4 more }

Aggregated inbound (consumer) video statistics for the session.

frame_per_second?: FramePerSecond { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
frame_width?: FrameWidth { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
issues?: Issues { lag_fraction, no_video_fraction, poor_resolution_fraction }
lag_fraction?: number
no_video_fraction?: number
poor_resolution_fraction?: number
jitter_buffer_delay?: JitterBufferDelay { 100ms_or_greater_event_fraction, 250ms_or_greater_event_fraction, 500ms_or_greater_event_fraction, avg }

Cumulative latency distribution (milliseconds-based thresholds).

"100ms_or_greater_event_fraction"?: number
"250ms_or_greater_event_fraction"?: number
"500ms_or_greater_event_fraction"?: number
avg?: number
key_frames_decoded_fraction?: number
packet_loss?: PacketLoss { 10_or_greater_event_fraction, 25_or_greater_event_fraction, 5_or_greater_event_fraction, 2 more }

Cumulative packet loss distribution.

"10_or_greater_event_fraction"?: number
"25_or_greater_event_fraction"?: number
"5_or_greater_event_fraction"?: number
"50_or_greater_event_fraction"?: number
avg?: number
quality_mos?: QualityMos { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number
video_producer?: Array<VideoProducer>
bytes_sent?: number
fir_count?: number
frame_height?: number
frame_width?: number
frames_encoded?: number
frames_per_second?: number
jitter?: number
key_frames_encoded?: number
mid?: string
mos_quality?: number
packets_lost?: number
packets_sent?: number
pli_count?: number
producer_id?: string
quality_limitation_durations?: QualityLimitationDurations { bandwidth, cpu, none, other }
bandwidth?: number
cpu?: number
none?: number
other?: number
quality_limitation_reason?: "cpu" | "bandwidth" | "none" | "other"
One of the following:
"cpu"
"bandwidth"
"none"
"other"
quality_limitation_resolution_changes?: number
rtt?: number
ssrc?: number
timestamp?: string
video_producer_cumulative?: VideoProducerCumulative { frame_per_second, frame_width, high_negative_feedback_fraction, 5 more }

Aggregated outbound (producer) video statistics for the session.

frame_per_second?: FramePerSecond { avg, p50, p75, p90 }

Distribution summary with average and percentiles.

avg?: number
p50?: number
p75?: number
p90?: number