This page contains FAQ that are generic to 100ms platform.
If you want to add a new question or edit an older one, feel free to send us a PR
What is the inspiration behind the name, 100ms?
We got the name 100ms inspired by the "100ms latency rule" concept from Gmail creator Paul Buchheit, who said that 100ms is the threshold "where interactions feel instantaneous". Why?
Are your services supported in all countries?
Yes, our services are supported in all countries.
Is 100ms fully optimized for mobile devices?
Our mobile SDKs are optimized to support most of the features and capabilities that are supported in our Web SDK. The rest of the features for mobile SDKs are in the works. For example, Virtual background feature is available as a beta feature on Web, Android and iOS native platforms but not in React Native and Flutter.
Can I delete apps from dashboard?
Yes, you can delete an App from your dashboard by hovering over the app and clicking on the trash icon.
Can I delete rooms via dashboard or API?
No, you cannot delete a room. The “delete room” functionality automatically erases all data associated with the room, so we don’t support it. We don't support the "delete room" functionality as it would lead to losing all data associated with the room. However, we support the following options based on why you’d want to delete rooms:
- Creating new rooms for every session: You can create as many rooms as you want, there is no limit on room creation
- Disable room: If you don't want additional requests to join a room, you can disable a room from the dashboard or via server API.
- Dev & Prod Env: If you want to delete rooms from your account as you transition from Development to the Production stage, we recommend using "Workspaces." It enables you to create two or more workspaces per your need and isolate the data for each workspace. Please check this blog for more information.
I want to integrate video on to my website with 100ms - where do I start?
Meanwhile, check our docs to explore information about various features and capabilities supported on the platform.
Do you have a live demo app to check how live video/audio functionality works on your platform?
I want to integrate live streaming into our app with 100ms - where do I start?
I’d like to make some changes on how the video player looks. Do you have any resources I can pass to my design team so they can get started with the parts that are easy to configure?
100ms SDK is not coupled with the UI, which means you are free to change whatever you want. You can even use a completely custom built player from scratch. Please check out this super Figma UI Kit the 100ms design team put together.
Is it possible to capture some images shown by customers during a call and store it in a database? It could be useful for applications like KYC.
No, but the raw video can be accessed and image recognition can be performed on the part where the user shows their ID.
Are the apps created through the Starter Kits on the same infra as the live applications in production, or do you use a test infra?
It is powered by the same infra. Same as everything in production that we serve to our clients.
Can a teacher handle a remote user’s (student) screen (start and stop) like remotely mute/unmute of A/V ?
No, a teacher can only mute/unmute a student using the mute/unmute remote peer feature.
Is there a way I can specify my own room_id while creating a room?
room_id gets generated from our end.
Is there a way to get data on how many users are online?
It is possible to get the online user for a specific room based on active room API.
How does pagination between tiles affect the download numbers?
Video will be downloaded only for the visible tiles, whereas only audio will be downloaded for tiles that aren’t visible. For the tiles that are not visible only audio will be downloaded.
Are there any limitations on trial accounts?
There are no feature-level limitations while using a 100ms account. However, an invoice is generated when:
- Your usage exhausts the free credits for
- Video conferencing (10,000 minutes) or
- HLS (live streaming) viewer minutes (10,000 minutes) or
- HLS encoding minutes (1,000 minutes)
- Recording minutes (300 minutes)
- External (RTMP) streaming minutes (300 minutes)
- Although, if you use HD quality for any of the above, you will be charged, and free credits won't apply.
Is there a way to maintain separate access credentials and templates for development and production environments?
You can create two or more workspaces to maintain access credentials and templates for development environment and production separately. You can add multiple members to the same 100ms account/workspace. Know more about it here.
Is there any sandbox mode available for development environments?
Yes, this is possible with Teams & workspaces on 100ms dashboard - create multiple workspaces and members to manage each workspace based on your requirements. For example, you can create workspaces for development and production so that experimentation during development does not affect production. For more information, please check this blog and also check your 100ms dashboard to see how this works.
Is there a way to add a second user to our account? Can we share login credentials?
Yes, you can add members to a 100ms workspace from dashboard. The “Members tab” in Workspace Settings page will enable you to invite members by adding their email address, they will receive an invitation to join the workspace on their inbox.
Please check this blog for more information.
I want to separate prod and non prod accounts - can I create sub-accounts within existing accounts?
You can create multiple workspaces on the 100ms dashboard to manage this. Use the “Create workspace” option from the workspaces dropdown on the top of the sidebar on Dashboard to create workspaces for different environments.
Please check this blog for more information.
Could you specify multiple webhook URLs for different environments under the same account?
You can create multiple workspaces and configure different webhooks for each of these environments. For more information, please check this blog and also check your 100ms dashboard to see how this works.
Can I register for another 100ms account with the same email address?
No, you cannot use the same email address to create another account. However, if you need to create multiple accounts to keep data related to development/testing and production separately, you can do so with Workspaces - create multiple Workspaces with multiple email IDs within your 100ms account, so you can maintain different environments.
This will enable you to maintain different workspaces for different environments. For example, one workspace for development and one for production. For more information, please check this blog and also check your 100ms dashboard to see how this works.
Pricing and billing
I’d like to know some specific details regarding pricing, and an estimated cost based on our usage. Who can help me?
Is this pricing for standard definition or high definition?
No, the pricing is different for standard and high definition. Our product experts can help you with more details - go ahead and book a meeting with them, they will get in touch.
Does billing on minutes count when the room has only the local peer in it?
When a peer joins a room, a session starts, and usage minutes will be billed even when the peer is not publishing or subscribing to audio/video tracks.
Authentication and tokens
What is the difference between auth token and management token?
- Auth token : Used to authenticate and allow end-users (peers) to join 100ms rooms. An App Token controls Peer identity and Room permissions in your real-time or Interactive live-streaming video application.
- Management token : Used to authenticate all the requests to 100ms REST API (server-side).
Is there an easy method to create an auth token?
Yes, you can get Auth tokens using a couple of approaches based on your app's lifecycle stage. Please check this guide for more information
Is there a easy method to create an management token?
Yes, if you're exploring 100ms server APIs, our Postman collection contains a pre-request script which can generate the management token if you just update the App access key and App secret from the developers page on your 100ms dashboard. Please check the Postman guide for more information.
What is the validity of management and client token?
If you use the code sample from authentication and tokens guide the validity of the token will be set as 24 hours. However, you can increase this to a maximum of 90 days by updating the value for expiresIn field.
Why is the “role” variable needed when generating the auth token?
The role argument should be assigned with the name of the role created in the template. A role defines the following:
- Who a peer a see/hear
- The quality at which they publish their video
- Whether or not they have permissions to publish video and/or share screen, mute someone, change someone’s role
Please check templates and roles guide for more information.
Can we generate two application access tokens, one for QA and one for production, so that messages from QA don't flood the production environment?
Yes, this is possible with Teams & workspaces on the100ms dashboard - create multiple workspaces and use the App access key and App secret from each of these workspaces to create different auth tokens or management tokens based on your requirements. For more information, please check this blog and also check your 100ms dashboard to see how this works.
I’d like to use the endpoint of my backend service instead of the 100ms token endpoint for auth token generation in the React sample app. How do I do that?
You can set up a token generation service on your end to create auth tokens and block users that are trying to join without a token that's generated from your service. Please check authentication and tokens guide for more information.
You can update the code to point to your own token service (relevant code in the sample - see getToken(...)), your token endpoint can follow a similar interface: for a given room_id and role name, return the auth token JWT.
You can continue using the existing routes (room_id/role) or set up your own routes in the cloned/forked code.
After a live stream ends, how long does it take (for both Beam recording and SFU) to show up in our s3 bucket?
Beam recording should be available within 15-20 minutes after the call ends. SFU recording will take ~1.5 times the call duration, after the call ends. For example, if the call duration is 30 minutes, then SFU recording will be available in 45 minutes.
Is there a way for Beam to record what is happening in the chat without the chat being open and covering any tiles?
No, chat cannot be recorded without it being open. Beam recorder is a headless browser so it will record whatever is open in your page.
Can Beam only capture incoming audio/video streams from the video calling tab or it can also capture screenshare content from dynamic pages and stream/record it?
Beam can capture both streams from video tabs and screenshare content from dynamic pages.
Can we split room recordings from our end?
If you need to get an individual recording file for each peer in a session, you can use Individual SFU recording.
If you must split recordings based on different duration of the session, you can use the Start a recording API in conjunction with Stop a recording API based on the time intervals as you wish and achieve this.
How can we retrieve the recording from a room?
There are two ways to retrieve recordings for a room:
- Using your S3 bucket - You can configure your S3 bucket at a template level to get all recordings for all the rooms associated with that template. Check this guide for more information.
- Using webhooks - You can configure your server endpoint as webhook in the developers section on your dashboard to receive all events (including recording related events) to fetch the recording information. You can check our webhooks guide for more information.
Is it possible to automatically stop the recording after a certain duration or at a specific timestamp?
Yes - you can do this by scheduling the stop a recording API with the help of a timer so that when the scheduled duration or time interval has reached the API request can be triggered to stop the recording. You can also trigger the client-side API to start/stop the recording.
Can we retrieve the list of all the recordings of a room?
You cannot get the list of recordings using an API. However, you can use the webhook events related to recording (recording.success, beam.recording.success, and hls.recording.success ) and store the recording related information like recording location, recording pre-signed URL, etc. As these information are stored in your database, you can fetch the list of recordings for a specific room as you need.
Is it possible to stop recording when a specific event occurs?
Is s3:ListBucket S3 permission required for S3 bucket access?
ListBucket permission is not required. To configure your S3 bucket for recordings, we only require the access key and secret key. Please check this guide for more information.
Is it possible to record a live stream and allow users to continue to replay the stream even after the live stream has ended (VOD use cases)?
Yes, 100ms provides the option to record a streaming session and get the recordings for Video on demand (VOD). Simply enable HLS recording which will give you a M3U8 file that can be used for playback on any HLS player once the session is completed. Please check this guide for more information.
What is the resolution of browser recording and SFU recording?
Currently, browser recording supports both 720p and 1080p resolution, whereas SFU recording supports only 720p resolution. Please check this guide for more information.
How can we debug issues with uploading video recordings to an S3 bucket?
We have added a validation check for recording configuration on Dashboard. If you configure recording storage from “Destination tab” for a template, you will get an error if there’s an incorrect configuration. For example, if the permissions are not set correctly.
What permissions are needed to allow video recordings to be uploaded to an S3 bucket?
Both read and write permissions for the bucket are required for 100ms servers to upload the recordings to the S3 bucket.
How long does it take for the composite recording to be ready?
This usually takes 1.2 - 1.5 times the duration of the session. There is a delay when a lot of requests are in queue.
A delay can also happen if the number of peers in the sessions increase.
- Session minutes * number of peers * 1.5x.
- So for example, take a session of 1 minute, with 5 participants. The total time taken for the recording to be generated would be around 7.5 minutes (1*5*1.5).
Is cloud recording available?
Yes, Please check RTMP streaming and recording guide for more information.
Does your chat feature support advanced features like profanity filtering, file attachments, etc?
Our chat feature supports text conversations and emojis/reactions at the moment.
However, you can use a third-party library on top of 100ms to build features like:
- Profanity filtering
- Language Translations
- Typing indicators,
- Rich media file uploads, etc.
Is chat sent over a separate WebRTC channel?
Chat is sent over websockets.
Is there a way to retrieve chat logs during a session?
Currently, chat is not saved and there is no way to retrieve chat logs.
Is it possible to export chat logs from one of the front-end clients and save it?
Yes, you can handle this on your client-side and export chat logs.
What is the size limit of a custom event in 100ms SDK ?
Interactive Live streaming
What is the limit for room size in live streaming?
The limit is under 10K, which is the same as WebRTC. Suppose we have 1000 viewers on a stream who are publishing their video, and each of them is subscribing to only 9 tiles, then:
- total number of uploaded streams + total number of downloaded streams ≤ 10,000
- uploaded streams = 1000
- downloaded streams = 1000 peers x 9 video tiles each = 9,000
- total = 1000+9000 ≤ 10,000.
It's still under the 10K limit.
Can users in the live stream send chat messages?
Yes. The same chat API that works in real-time conferencing (WebRTC) will work for the live streaming (HLS) viewers as well.
What is the maximum number of viewers a live streaming session can support?
The maximum number of viewers the live streaming can support with the chat function is 5k. Without the chat function, the system can scale to 50k-100k viewers.
What is the average delay of the live streaming?
The average delay of the live streaming is 10-12 seconds.
Can you provide more information on the live stream feature?
You can use the 100ms platform to build interactive live streaming (HLS) apps and to broadcast your live stream to external streaming platforms like YouTube, Twitch, etc using our External streaming service (RTMP).
Please check these links for more details.
Can I integrate a feature similar to Twitter super followers using 100ms by only allowing the authenticated users?
Yes, you can use interactive live streaming (HLS) to integrate a similar app and the live feed of the streaming will be available in a room which can be accessed by joining a room with a JWT token (auth token) with the viewer role.
External streaming (RTMP)
Can the 100ms RTMP streaming be used with any URL?
Do we need to set up our own CDN servers for RTMP URLs or can we attach 100ms URLs to video elements in HTML?
For RTMP, you will need to set up your own CDN servers or attach 100ms URLs to video elements in HTML. However, the CDN URL is not needed for interactive live streaming (HLS); it will be provided by 100ms.
Can I build a whiteboard feature on the100ms platform?
The whiteboard feature is currently available in beta for the web platform. We will build our own communication infra for this but currently this is integrated with Pusher, you can create a Pusher account and integrate this in your app too.
Please check the collaborative whiteboard guide for more information.
Do you have a list of extra plugins that can be added to live sessions?
Currently, you can build additional interactive experiences in your app with the help of peer metadata. You can integrate features like raise hand, polls, quizzes, etc,. using this. You can also check the existing plugins on our platform such as collaborative whiteboard, virtual background, custom audio & video plugins. Please stay tuned to our product updates by signing up for our newsletter from here.
Currently, you can build additional interactive experiences in your app with the help of Peer metadata. You can integrate raise hand, polls, quizzes, etc,. using this. You can also check the existing plugins our platform such as Virtual background, Custom audio & video plugins. We will soon be adding a whiteboard plugin as well. Please stay tuned our product updates by signing up for our newsletter from here.
Network and quality
Would you be able to tell us the approximate latency of a creator in North America doing a real time video conference for an end user located in Australia?
It should be in the 200-500 ms range
Is the latency different for different devices?
Latency is calculated based on the network bandwidth of the user, sometimes in low end devices, the device itself can hamper latency.
Why am I constantly getting low bandwidth alerts?
This is the connection quality score which changes in real time on the basis of the bandwidth of the peer at the given time. Even if your network connection is otherwise strong, if it drops at a certain point due to bandwidth, the connection quality will be displayed as poor.
If you want to investigate further, do check out the Stats for Nerds feature - there are more details to help you understand why the quality of connection dropped.
Is it possible to dynamically set the video resolution based on the number of participants?
We have released a new feature, Adaptive Bitrate (affectionately called Simulcast that enables dynamic adjustments to video quality to optimise for end-user experience under diverse network conditions. ABR ensures that every participant is able to consume the highest possible quality video in conferencing or streaming use-cases, based on their bandwidth constraints.
What is the limit for room size in WebRTC?
- Limit = total number of uploaded streams + total number of downloaded streams ≤ 10,000
- total number of uploaded streams is every single video feed being sent to the server, regardless of who is viewing it
- total number of downloaded streams is calculated as number of WebRTC viewers x number of video tiles seen by each (regardless of tile size)
- here’s an example: a room with 100 peers, each with their video on, but each peer can only see 20 pax on the first page due to pagination
- uploaded streams = 100
- downloaded streams = 100 peers x 20 video tiles each = 2,000
- total = 2,100 ≤ 10,000
For a given room, what is the max number of concurrent WebRTC connected participants?
In a single room at a given time, we currently support 10000 streams that is 100 participants with audio and video enabled
What is the maximum number of tiles that 100ms can support in its layout?
|Layout||Tiles in view||Publish resolution||Max peers in room|
What is the maximum number of people that can be supported currently?
For full duplex audio/video with a latency of <500 ms, 100ms can support a maximum of 100 people. For webinar-style events, 100ms can support 10 people on stage and 1000 offstage peers/audience. For large events, it can be broadcasted on a TV-like setup for an audience of millions with a latency of 7-10 seconds.
What is the maximum capacity for group calls with 100ms video SDK?
The maximum capacity for group calls with 100ms video SDK is currently 100 participants with audio/video on.
Scalability and security
Can the system scale to 50k-100k viewers if the SDK is not connected and we just want the m3u8 file?
Is it possible to access in-depth analytics, such as the number of attempts to reconnect, drops, high latency, and live metrics?
All metrics are collected and can be shared through an Amplitude dashboard, which will eventually be available within the dashboard. For some basic debugging, you can always rely on the "Events Inspector" in your 100ms dashboard.
Is the 100ms live stream SDK customizable and able to scale to millions of users?
Yes. 100ms main motto is to serve customers with SDKs that offer extensibility and customizability to a greater extent. You can check the video-conferencing and interactive live streaming pages for more information.
Can you share some documentation on your information security practices?
Yes, please check below:
SOC2 type II compliant: report to be shared after signing a mutual NDA
HIPAA: 100ms can sign a BAA
Is it ok to potentially create thousands of rooms over time?
Yes, you can create as many rooms as necessary. It's also handy to disable a room after you're done using it.
Can your platform handle end-to-end encryption between just 2 users?
The only encryption we have is on the token side. That is based on the token shared from the server to the client.
Is 100ms Soc 2 complainant?
Is there any usage analytics dashboard available to check various metrics associated with my account?
Currently, we don't have any dashboard for usage analytics, but it is right around the corner on our roadmap. We will let you know as soon as it is up.
If you’re wondering how, here it is: please subscribe to our monthly newsletter. We are constantly building cool, exciting things and we cover all of them in our newsletter.
Does the 100ms platform provide analytics on room, session, and each user, including data such as time spent per user, total session length, and number of peers in a room?
You can get analytics about rooms, sessions, peers and more in multiple ways based on feasibility and your requirements.
You can use the list sessions server API to fetch the list of sessions for a particular data/time range and you can also filter these for a particular room. This API will provide data such as list of peers, their room join/leave time, session start/end time, etc,.
If you need to get the session details for an active room (ongoing session), you can use our Active room server APIs to fetch the details and perform some actions on peers from your server side.
Is the functionality to disable a room and end an active room the same?
The functionalities of these two APIs are different:
- Disable/Enable a room API: you can use this API to disable/enable the room to block/allow peers to join the room.
- End an active room API: you can use this API to end an ongoing session in a room. Optionally you can use the
lockargument to disable the room future peer joins.
Is there a way to close a room using a server-side API?
You can use end an active room API to end an ongoing session in a room. Optionally you can use the
lock argument to disable the room future peer joins.
Is there a way to mute a participant using a server-side API?
You need to follow the below steps to achieve this:
- Yes. Here are the steps: Create another role in your template by disabling audio publish strategies, for example: no-audio. You can either use the create a role API or templates page on dashboard to do this.
- Use the button click from the UI as a trigger to call the update-peer server side API or change role client-side API to change the role of the particular participant (peer) to no-video role to disable audio.
Is there a way to disable video for a participant using a server-side API?
Yes, follow the same process mentioned for the question above ^
Can you explain the differences between the HLS recording and Beam recording webhook events?
HLS recording events are related to the recording enabled for interactive live streaming sessions, whereas Beam recording events are only applicable to recording enabled for external streaming (RTMP) or browser recording for WebRTC sessions.
Please check the below links for more information:
For incoming webhooks from 100ms to our API, is there a list of IPs that can be whitelisted?
Yes, and here is the list.
Is there an API call we can make to set the webhook URL and headers on our account?
No. Currently there is no API to update the webhook URL and headers, but you can do this from the 100ms dashboard directly.
Do you have some static IP for 100ms, that we can whitelist your hits at our end?
100ms provides two methods to whitelist traffic from 100ms.
Can we end an active session programmatically (reset the room so that everyone is kicked from the meeting and it starts a new session)?
We have an end point that helps you end an active session. You can check this to understand how the API works.
Is there any way to limit participants in a room?
We don't limit the participants currently, but you can limit the number of peers as a part of the Role or Template configuration where we can add a maximum number of participants per role by setting the
How can I handle role change requests on my backend? Is there any webhook for it?
Currently, role change is initiated by a designated role. A role change REST API is on the roadmap.
Is there a way to handle role change requests on the backend, such as through a webhook or API?
Yes, you can use update a peer API to change the role of a peer from backend.
Can you access a role created via dashboard or server API across all client SDKs?
Yes - the template created on dashboard/API and the roles associated with it is universally used across all 100ms client SDKs.
Is there a way to schedule rooms for a certain date and time and send invites to certain email ids?
That needs authentication for a user and you would need to handle this on the UI. You can use the Create room API to Create multiple rooms and schedule meetings as required by using them in queue. Time gate the option to join the room so that they can do so only when it is time for the meeting.
Can we disable a room by id?
Yes this is possible. The disable/enable a room API supports room_id as an argument as well.
How do I limit the session to a specified duration?
To restrict the session length, you can employ either of the following methods:
max_duration_secondsparameter in room. See Room API.
Through the end an active room API.
Say you want to limit the duration of a session to 30 minutes: -
- Start a timer as soon as the session begins and you receive the session.open.success webhook event
- Wait till the duration (timer) of the session reaches 30 minutes
- Once reached, trigger the end an active room API to end the session and kick out the peers from the session.