Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

Video Log Analyzer API


(warning)

Warning

This documentation is for reference only. We are no longer onboarding new customers to Programmable Video. Existing customers can continue to use the product until December 5, 2026(link takes you to an external page).

We recommend migrating your application to the API provided by our preferred video partner, Zoom. We've prepared this migration guide(link takes you to an external page) to assist you in minimizing any service disruption.

The Video Log Analyzer REST API provides access to data generated by Programmable Video rooms and participants. Video Logs are available for two days for WebRTC Go rooms, and seven days for all other room types. Summarization and propagation of data may take up to thirty minutes following the end of a room, but most logs are available within ten minutes.


Base URL

base-url page anchor

Video Log Analyzer data is available under the following base URL. The REST API is served over HTTPS; unencrypted HTTP is not supported.


_10
https://insights.twilio.com/v1/Video/Rooms


HTTP requests to the REST API are protected with HTTP Basic authentication(link takes you to an external page). You will use your Twilio account SID as the username and your auth token as the password for HTTP Basic authentication. You can find your account SID and auth token on the console home page. To learn more about how Twilio handles authentication, please refer to our security documentation.


The Rooms list provides a queryable list of Programmable Video Rooms. By default only Rooms completed in the last 24 hours are listed. Use the CreatedBefore and CreatedAfter parameters to query a larger date range.


_10
GET https://insights.twilio.com/v1/Video/Rooms

Get Rooms List

get-rooms-list-1 page anchor
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_10
// Download the helper library from https://www.twilio.com/docs/node/install
_10
// Find your Account SID and Auth Token at twilio.com/console
_10
// and set the environment variables. See http://twil.io/secure
_10
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_10
const authToken = process.env.TWILIO_AUTH_TOKEN;
_10
const client = require('twilio')(accountSid, authToken);
_10
_10
client.insights.v1.rooms.list({limit: 20})
_10
.then(rooms => rooms.forEach(r => console.log(r.roomName)));

Output

_45
{
_45
"meta": {
_45
"first_page_url": "https://insights.twilio.com/v1/Video/Rooms?PageSize=50&Page=0",
_45
"url": "https://insights.twilio.com/v1/Video/Rooms?PageSize=50&Page=0",
_45
"page_size": 50,
_45
"next_page_url": "https://insights.twilio.com/v1/Video/Rooms?PageSize=50&Page=1",
_45
"key": "rooms",
_45
"page": 0,
_45
"previous_page_url": "https://insights.twilio.com/v1/Video/Rooms?PageSize=50&Page=0"
_45
},
_45
"rooms": [
_45
{
_45
"room_type": "go",
_45
"unique_participant_identities": 0,
_45
"codecs": [
_45
"VP8"
_45
],
_45
"max_participants": 0,
_45
"room_sid": "RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_45
"create_time": "2015-07-30T20:00:00Z",
_45
"end_reason": "room_ended_via_api",
_45
"duration_sec": 50000000,
_45
"room_status": "in_progress",
_45
"media_region": "us1",
_45
"recording_enabled": false,
_45
"edge_location": "ashburn",
_45
"max_concurrent_participants": 0,
_45
"unique_participants": 0,
_45
"room_name": "room_name",
_45
"created_method": "sdk",
_45
"total_participant_duration_sec": 50000000,
_45
"status_callback_method": "GET",
_45
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_45
"end_time": "2015-07-30T20:00:00Z",
_45
"total_recording_duration_sec": 50000000,
_45
"processing_state": "complete",
_45
"concurrent_participants": 0,
_45
"status_callback": "http://www.example.com",
_45
"url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_45
"links": {
_45
"participants": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants"
_45
}
_45
}
_45
]
_45
}

URI parameters
RoomTypetype: array[string]
Query ParameterNot PII

Type of room. Can be go, peer_to_peer, group, or group_small.

Possible values:
gopeer_to_peergroupgroup_small

Codectype: array[string]
Query ParameterNot PII

Codecs used by participants in the room. Can be VP8, H264, or VP9.

Possible values:
VP8H264VP9

RoomNametype: string
Query ParameterNot PII

Room friendly name.


CreatedAftertype: string<date-time>
Query ParameterNot PII

Only read rooms that started on or after this ISO 8601 timestamp.


CreatedBeforetype: string<date-time>
Query ParameterNot PII

Only read rooms that started before this ISO 8601 timestamp.


PageSizetype: integer
Query ParameterNot PII

How many resources to return in each list page. The default is 50, and the maximum is 1000.


Pagetype: integer
Query ParameterNot PII

The page index. This value is simply for client state.


PageTokentype: string
Query ParameterNot PII

The page token. This is provided by the API.


Get Video Log Analyzer Data for a Room

get-video-log-analyzer-data-for-a-room page anchor

The Room resource returns the Video Log Analyzer data for the provided room SID.


_10
GET https://insights.twilio.com/v1/Video/Rooms/{Room_SID}

Get Video Log Analyzer Data for a Room

get-video-log-analyzer-data-for-a-room-1 page anchor
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_10
// Download the helper library from https://www.twilio.com/docs/node/install
_10
// Find your Account SID and Auth Token at twilio.com/console
_10
// and set the environment variables. See http://twil.io/secure
_10
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_10
const authToken = process.env.TWILIO_AUTH_TOKEN;
_10
const client = require('twilio')(accountSid, authToken);
_10
_10
client.insights.v1.rooms('RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_10
.fetch()
_10
.then(room => console.log(room.roomName));

Output

_32
{
_32
"room_type": "go",
_32
"unique_participant_identities": 0,
_32
"codecs": [
_32
"VP8"
_32
],
_32
"max_participants": 0,
_32
"room_sid": "RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_32
"create_time": "2015-07-30T20:00:00Z",
_32
"end_reason": "room_ended_via_api",
_32
"duration_sec": 50000000,
_32
"room_status": "in_progress",
_32
"media_region": "us1",
_32
"recording_enabled": false,
_32
"edge_location": "ashburn",
_32
"max_concurrent_participants": 0,
_32
"unique_participants": 0,
_32
"room_name": "room_name",
_32
"created_method": "sdk",
_32
"total_participant_duration_sec": 50000000,
_32
"status_callback_method": "GET",
_32
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_32
"end_time": "2015-07-30T20:00:00Z",
_32
"total_recording_duration_sec": 50000000,
_32
"processing_state": "complete",
_32
"concurrent_participants": 0,
_32
"status_callback": "http://www.example.com",
_32
"url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_32
"links": {
_32
"participants": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants"
_32
}
_32
}

URI parameters
RoomSidtype: string
Path ParameterNot PII

The SID of the Room resource.

Room Summary Resource Properties

room-summary-resource-properties page anchor

A Room Summary log is represented by the following properties:

Resource properties
account_sidtype: SID<AC>

Account SID associated with this room.


room_sidtype: SID<RM>

Unique identifier for the room.


room_nametype: string

Room friendly name.


create_timetype: string<date-time>

Creation time of the room.


end_timetype: string<date-time>

End time for the room.


room_typetype: enum<string>

Type of room. Can be go, peer_to_peer, group, or group_small.

Possible values:
gopeer_to_peergroupgroup_small

room_statustype: enum<string>

Status of the room. Can be in_progress or completed.

Possible values:
in_progresscompleted

status_callbacktype: string<uri>

Webhook provided for status callbacks.


status_callback_methodtype: enum<http-method>

HTTP method provided for status callback URL.

Possible values:
GETPOST

created_methodtype: enum<string>

How the room was created. Can be sdk, ad_hoc, or api.

Possible values:
sdkad_hocapi

end_reasontype: enum<string>

Reason the room ended. Can be room_ended_via_api or timeout.

Possible values:
room_ended_via_apitimeout

max_participantstype: integer

Max number of total participants allowed by the application settings.


unique_participantstype: integer

Number of participants. May include duplicate identities for participants who left and rejoined.


unique_participant_identitiestype: integer

Unique number of participant identities.


concurrent_participantstype: integer

Actual number of concurrent participants.


max_concurrent_participantstype: integer

Maximum number of participants allowed in the room at the same time allowed by the application settings.


codecstype: array[string]

Codecs used by participants in the room. Can be VP8, H264, or VP9.

Possible values:
VP8H264VP9

media_regiontype: enum<string>

Region of Twilio media servers for the room. See the list of possible media servers here(link takes you to an external page).

Possible values:
us1us2au1br1ie1jp1sg1in1de1gll

duration_sectype: integer<int64>

Total room duration from create time to end time.


total_participant_duration_sectype: integer<int64>

Combined amount of participant time in the room.


total_recording_duration_sectype: integer<int64>

Combined amount of recorded seconds for participants in the room.


processing_statetype: enum<string>

Video Log Analyzer resource state. Will be either in-progress or complete. in-progress indicates that more details may be appended to the resource. complete indicates no further information will be added.

Possible values:
completein_progress

recording_enabledtype: boolean

Boolean indicating if recording is enabled for the room.


edge_locationtype: enum<string>

Edge location of Twilio media servers for the room. See the list of public edge locations(link takes you to an external page) for the possible values.

Possible values:
ashburndublinfrankfurtsingaporesydneysao_pauloroamingumatillatokyo

urltype: string<uri>

URL for the room resource.


linkstype: object<uri-map>

Room subresources.


The Participants list returns the participant details for a provided room SID.


_10
GET https://insights.twilio.com/v1/Video/Rooms/{Room_SID}/Participants

Get List of Room Participants

get-list-of-room-participants page anchor
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_11
// Download the helper library from https://www.twilio.com/docs/node/install
_11
// Find your Account SID and Auth Token at twilio.com/console
_11
// and set the environment variables. See http://twil.io/secure
_11
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_11
const authToken = process.env.TWILIO_AUTH_TOKEN;
_11
const client = require('twilio')(accountSid, authToken);
_11
_11
client.insights.v1.rooms('RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_11
.participants
_11
.list({limit: 20})
_11
.then(participants => participants.forEach(p => console.log(p.participantSid)));

Output

_34
{
_34
"meta": {
_34
"url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants?PageSize=50&Page=0",
_34
"key": "participants",
_34
"first_page_url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants?PageSize=50&Page=0",
_34
"page_size": 50,
_34
"next_page_url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants?PageSize=50&Page=1",
_34
"page": 0,
_34
"previous_page_url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants?PageSize=50&Page=0"
_34
},
_34
"participants": [
_34
{
_34
"publisher_info": {},
_34
"edge_location": "ashburn",
_34
"join_time": "2015-07-30T20:00:00Z",
_34
"leave_time": "2015-07-30T20:00:00Z",
_34
"end_reason": "disconnected_via_api",
_34
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_34
"error_code": 53205,
_34
"media_region": "us1",
_34
"properties": {},
_34
"room_sid": "RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_34
"error_code_url": "error_code_url",
_34
"participant_sid": "PAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_34
"codecs": [
_34
"VP8"
_34
],
_34
"status": "in_progress",
_34
"duration_sec": 50000000,
_34
"participant_identity": "participant_identity",
_34
"url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants/PAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
_34
}
_34
]
_34
}

URI parameters
RoomSidtype: string
Path ParameterNot PII

The SID of the Room resource.


PageSizetype: integer
Query ParameterNot PII

How many resources to return in each list page. The default is 50, and the maximum is 1000.


Pagetype: integer
Query ParameterNot PII

The page index. This value is simply for client state.


PageTokentype: string
Query ParameterNot PII

The page token. This is provided by the API.


Get Video Log Analyzer data for a Room Participant

get-video-log-analyzer-data-for-a-room-participant page anchor

The Participant resource returns the Video Log Analyzer details for a provided room participant SID.


_10
GET https://insights.twilio.com/v1/Video/Rooms/{Room_SID}/Participants/{Partcipant_SID}

Get a Participant's Details

get-a-participants-details page anchor
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_11
// Download the helper library from https://www.twilio.com/docs/node/install
_11
// Find your Account SID and Auth Token at twilio.com/console
_11
// and set the environment variables. See http://twil.io/secure
_11
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_11
const authToken = process.env.TWILIO_AUTH_TOKEN;
_11
const client = require('twilio')(accountSid, authToken);
_11
_11
client.insights.v1.rooms('RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_11
.participants('PAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_11
.fetch()
_11
.then(participant => console.log(participant.participantSid));

Output

_21
{
_21
"publisher_info": {},
_21
"edge_location": "ashburn",
_21
"join_time": "2015-07-30T20:00:00Z",
_21
"leave_time": "2015-07-30T20:00:00Z",
_21
"end_reason": "disconnected_via_api",
_21
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_21
"error_code": 0,
_21
"media_region": "us1",
_21
"properties": {},
_21
"room_sid": "RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_21
"error_code_url": "error_code_url",
_21
"participant_sid": "PAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_21
"codecs": [
_21
"VP8"
_21
],
_21
"status": "in_progress",
_21
"duration_sec": 50000000,
_21
"participant_identity": "participant_identity",
_21
"url": "https://insights.twilio.com/v1/Video/Rooms/RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants/PAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
_21
}

URI parameters
RoomSidtype: string
Path ParameterNot PII

The SID of the Room resource.


ParticipantSidtype: string
Path ParameterNot PII

The SID of the Participant resource.

Participant Summary Resource Properties

participant-summary-resource-properties page anchor

A participant summary is represented by the following properties:

Resource properties
participant_sidtype: SID<PA>

Unique identifier for the participant.


participant_identitytype: string

The application-defined string that uniquely identifies the participant within a Room.


join_timetype: string<date-time>

When the participant joined the room.


leave_timetype: string<date-time>

When the participant left the room.


duration_sectype: integer<int64>

Amount of time in seconds the participant was in the room.


account_sidtype: SID<AC>

Account SID associated with the room.


room_sidtype: SID<RM>

Unique identifier for the room.


statustype: enum<string>

Status of the room. Can be in_progress or completed.

Possible values:
in_progresscompleted

codecstype: array[string]

Codecs detected from the participant. Can be VP8, H264, or VP9.

Possible values:
VP8H264VP9

end_reasontype: string

error_codetype: integer

Errors encountered by the participant.


error_code_urltype: string

Twilio error code dictionary link.


media_regiontype: enum<string>

Twilio media region the participant connected to. See the list of possible media servers here(link takes you to an external page).

Possible values:
us1us2au1br1ie1jp1sg1in1de1gll

propertiestype: object

Object containing information about the participant's data from the room. See below(link takes you to an external page) for more information.


edge_locationtype: enum<string>

Name of the edge location the participant connected to. See the list of public edge locations(link takes you to an external page) for the possible values.

Possible values:
ashburndublinfrankfurtsingaporesydneysao_pauloroamingumatillatokyo

publisher_infotype: object

Object containing information about the SDK name and version. See below(link takes you to an external page) for more information.


urltype: string<uri>

URL of the participant resource.

The properties object contains the following keys:

NameDescription
recordOnConnectBoolean. Indicates if the participant was recorded as soon as they joined the room.
numAudioTracksNumber of audio tracks from the participant.
numVideoTracksNumber of video tracks from the participant.
numDataTracksNumber of data tracks from the participant.
isAdhocBoolean. Indicates if the participant joined the room ad-hoc.

The publisher_info object contains the following keys:

NameDescription
nameSDK type; e.g., twilio-video-js
sdk_versionSDK version

Below are the possible options for a participant end_reason:


_47
disconnected_via_api
_47
signaling_connection_error
_47
signaling_connection_disconnected
_47
signaling_connection_timed_out
_47
client_received_an_invalid_signaling_message
_47
client_sent_an_invalid_signaling_message
_47
room_name_is_invalid
_47
room_name_is_too_long
_47
room_name_contains_invalid_characters
_47
unable_to_create_room
_47
unable_to_connect_to_room
_47
room_contains_too_many_participants
_47
room_not_found
_47
max_participants_is_out_of_range
_47
room_type_is_not_valid
_47
timeout_is_out_of_range
_47
status_callback_method_is_invalid
_47
status_callback_is_invalid
_47
status_is_invalid
_47
room_creation_failed
_47
room_completed_error
_47
the_room_account_limit_was_exceeded
_47
invalid_recording_rule
_47
approaching_room_or_participant_concurrency_limits
_47
recording_operation_requested_is_not_supported_for_the_Room_type
_47
participant_identity_is_invalid
_47
participant_identity_is_too_long
_47
participant_identity_contains_invalid_characters
_47
participant_has_too_many_tracks
_47
participant_not_found
_47
participant_disconnected_because_of_duplicate_identity
_47
participant_account_limit_was_exceeded
_47
invalid_subscribe_rule
_47
track_is_invalid
_47
track_name_is_invalid
_47
track_name_is_too_long
_47
track_name_contains_invalid_characters
_47
track_name_is_duplicated
_47
client_is_unable_to_create_or_apply_a_local_media_description
_47
server_is_unable_to_create_or_apply_a_local_media_description
_47
client_is_unable_to_apply_a_remote_media_description
_47
server_is_unable_to_apply_a_remote_media_description
_47
no_supported_codec
_47
media_connection_failed_or_media_activity_ceased
_47
unable_to_acquire_configuration
_47
unable_to_acquire_TURN_credentials
_47
unknown


Rate this page: