From c7f3c972a030cd613778394dad4f7951cced555a Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Fri, 11 Sep 2026 16:27:30 +0530 Subject: [PATCH 1/4] docs(realtimekit): added billing faqs --- src/content/docs/realtime/realtimekit/faq.mdx | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/content/docs/realtime/realtimekit/faq.mdx b/src/content/docs/realtime/realtimekit/faq.mdx index 37a7fe72bde..a68881cdeff 100644 --- a/src/content/docs/realtime/realtimekit/faq.mdx +++ b/src/content/docs/realtime/realtimekit/faq.mdx @@ -279,3 +279,54 @@ Instead, set up the default meeting UI in your own website by following the [UI The demo app and example applications may be updated at any time without prior notice. + +### Billing + +
+ +RealtimeKit bills active participant minutes. Billing starts when a participant joins a meeting session and stops when they leave it. + +Key billing rules: + +- **No-shows are not billed:** Adding someone with the [Add Participant API](/api/resources/realtime_kit/subresources/meetings/methods/add_participant/) does not incur charges. RealtimeKit does not charge for that participant if they never join the meeting. +- **Usage is billed by duration:** RealtimeKit charges for the exact time, including seconds, that a participant spends in an active session. The participant is still billed when they do not produce or consume audio or video. +- **Multiple tabs are billed separately:** If someone joins from multiple browser tabs with the same auth token, RealtimeKit bills each tab separately. The RealtimeKit dashboard displays the aggregated duration for that participant. + +For more information about the difference between meetings and sessions, refer to [RealtimeKit concepts](/realtime/realtimekit/concepts/). + +For example: + +- If two participants join at 7:00 p.m. and leave at 7:30 p.m., each participant uses 30 minutes. RealtimeKit charges 60 participant minutes. +- If one participant joins at 4:00 p.m., another joins at 4:03 p.m., and both leave at 5:00 p.m., they use 60 and 57 minutes. RealtimeKit charges 117 participant minutes. +- If one participant joins at 3:00 p.m. and leaves at 3:27 p.m., while another joins at 3:05 p.m. and leaves at 3:30 p.m., they use 27 and 25 minutes. RealtimeKit charges 52 participant minutes. +- If five participants are expected but only two join, RealtimeKit charges participant minutes only for the two participants who joined. +- If two participants are expected to join a pre-created meeting at 2:00 p.m. but neither joins, RealtimeKit does not charge any participant minutes. + +Creating meeting objects and participant tokens does not incur charges. + +
+ +
+ +For composite recordings, a recorder joins the meeting as a hidden virtual participant and records its view. For more information, refer to the [recording guides](/realtime/realtimekit/recording-guide/). + +RealtimeKit does not charge participant minutes for the recorder. Instead, it charges export minutes for the recorded duration. Refer to [RealtimeKit pricing](/realtime/realtimekit/pricing/) for current rates. + +When record_on_start is `true`: + +- If two participants join at 7:00 p.m. and leave at 7:30 p.m., recording starts at 7:00 p.m. After both participants leave, the recorder remains active for the default 60-second session keep-alive period. Recording stops at 7:31 p.m., so RealtimeKit charges 31 export minutes. +- If five participants are expected but only two join at 8:00 p.m. and leave at 8:20 p.m., recording runs until 8:21 p.m. with the default session keep-alive period. RealtimeKit charges 21 export minutes. The charge would remain 21 export minutes if all five participants joined and left at the same times because participant count does not affect recording export minutes. +- If nobody joins a pre-created meeting, recording does not start. Creating a meeting with `record_on_start` set to `true` does not incur charges by itself. + +When someone starts recording during an active session: + +- If recording starts at 4:20 p.m. and the final participant leaves at 5:00 p.m., it stops at 5:01 p.m. by default. RealtimeKit charges 41 export minutes. +- If recording starts at 4:20 p.m. and someone calls kickAll() at 5:00 p.m., recording stops immediately. RealtimeKit charges 40 export minutes. + +After the final participant leaves, the recorder remains active for the meeting's session_keep_alive_time_in_secs. The default is 60 seconds, and the maximum is 600 seconds. + +This keep-alive period helps workflows that must preserve a single recording across brief disconnections. For example, an education technology (EdTech) application might record a timed take-home assignment in a one-participant meeting. If the participant loses their network connection and rejoins before the keep-alive period expires, the recorder continues the same recording. The recording contains an empty gap during the disconnection, but the application does not need to combine two separate recordings. + +The keep-alive period is included in the export charges. To avoid this extra time, explicitly end the session by calling kickAll() or the [Kick all participants API](/api/resources/realtime_kit/subresources/active-session/methods/kick_all_participants/). + +
From e5b4d1ba41cf8f4c66ef0f1e429d7379ad1a4070 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Fri, 11 Sep 2026 16:36:55 +0530 Subject: [PATCH 2/4] docs(realtimekit): fixed formatting and spacing --- src/content/docs/realtime/realtimekit/faq.mdx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/content/docs/realtime/realtimekit/faq.mdx b/src/content/docs/realtime/realtimekit/faq.mdx index a68881cdeff..b4e206f0487 100644 --- a/src/content/docs/realtime/realtimekit/faq.mdx +++ b/src/content/docs/realtime/realtimekit/faq.mdx @@ -286,7 +286,8 @@ The demo app and example applications may be updated at any time without prior n RealtimeKit bills active participant minutes. Billing starts when a participant joins a meeting session and stops when they leave it. -Key billing rules: +
+**Key billing rules:** - **No-shows are not billed:** Adding someone with the [Add Participant API](/api/resources/realtime_kit/subresources/meetings/methods/add_participant/) does not incur charges. RealtimeKit does not charge for that participant if they never join the meeting. - **Usage is billed by duration:** RealtimeKit charges for the exact time, including seconds, that a participant spends in an active session. The participant is still billed when they do not produce or consume audio or video. @@ -294,6 +295,7 @@ Key billing rules: For more information about the difference between meetings and sessions, refer to [RealtimeKit concepts](/realtime/realtimekit/concepts/). +
For example: - If two participants join at 7:00 p.m. and leave at 7:30 p.m., each participant uses 30 minutes. RealtimeKit charges 60 participant minutes. @@ -301,7 +303,7 @@ For example: - If one participant joins at 3:00 p.m. and leaves at 3:27 p.m., while another joins at 3:05 p.m. and leaves at 3:30 p.m., they use 27 and 25 minutes. RealtimeKit charges 52 participant minutes. - If five participants are expected but only two join, RealtimeKit charges participant minutes only for the two participants who joined. - If two participants are expected to join a pre-created meeting at 2:00 p.m. but neither joins, RealtimeKit does not charge any participant minutes. - +
Creating meeting objects and participant tokens does not incur charges. @@ -312,21 +314,26 @@ For composite recordings, a recorder joins the meeting as a hidden virtual parti RealtimeKit does not charge participant minutes for the recorder. Instead, it charges export minutes for the recorded duration. Refer to [RealtimeKit pricing](/realtime/realtimekit/pricing/) for current rates. +
When record_on_start is `true`: - If two participants join at 7:00 p.m. and leave at 7:30 p.m., recording starts at 7:00 p.m. After both participants leave, the recorder remains active for the default 60-second session keep-alive period. Recording stops at 7:31 p.m., so RealtimeKit charges 31 export minutes. - If five participants are expected but only two join at 8:00 p.m. and leave at 8:20 p.m., recording runs until 8:21 p.m. with the default session keep-alive period. RealtimeKit charges 21 export minutes. The charge would remain 21 export minutes if all five participants joined and left at the same times because participant count does not affect recording export minutes. - If nobody joins a pre-created meeting, recording does not start. Creating a meeting with `record_on_start` set to `true` does not incur charges by itself. +
When someone starts recording during an active session: - If recording starts at 4:20 p.m. and the final participant leaves at 5:00 p.m., it stops at 5:01 p.m. by default. RealtimeKit charges 41 export minutes. - If recording starts at 4:20 p.m. and someone calls kickAll() at 5:00 p.m., recording stops immediately. RealtimeKit charges 40 export minutes. +
After the final participant leaves, the recorder remains active for the meeting's session_keep_alive_time_in_secs. The default is 60 seconds, and the maximum is 600 seconds. +
This keep-alive period helps workflows that must preserve a single recording across brief disconnections. For example, an education technology (EdTech) application might record a timed take-home assignment in a one-participant meeting. If the participant loses their network connection and rejoins before the keep-alive period expires, the recorder continues the same recording. The recording contains an empty gap during the disconnection, but the application does not need to combine two separate recordings. +
The keep-alive period is included in the export charges. To avoid this extra time, explicitly end the session by calling kickAll() or the [Kick all participants API](/api/resources/realtime_kit/subresources/active-session/methods/kick_all_participants/). From 6e3bbc052a744e1e96d99bb1fdaa7ff50c24eee5 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Fri, 11 Sep 2026 16:40:47 +0530 Subject: [PATCH 3/4] docs(realtimekit): removed confusing meeting object term --- src/content/docs/realtime/realtimekit/faq.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/realtime/realtimekit/faq.mdx b/src/content/docs/realtime/realtimekit/faq.mdx index b4e206f0487..f610863e128 100644 --- a/src/content/docs/realtime/realtimekit/faq.mdx +++ b/src/content/docs/realtime/realtimekit/faq.mdx @@ -304,7 +304,7 @@ For example: - If five participants are expected but only two join, RealtimeKit charges participant minutes only for the two participants who joined. - If two participants are expected to join a pre-created meeting at 2:00 p.m. but neither joins, RealtimeKit does not charge any participant minutes.
-Creating meeting objects and participant tokens does not incur charges. +Creating meetings and participant tokens does not incur charges. From a6003107410e585471b3b9a558570157527f7623 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Fri, 11 Sep 2026 17:20:20 +0530 Subject: [PATCH 4/4] docs(realtimekit): added custom keep alive example --- src/content/docs/realtime/realtimekit/faq.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/content/docs/realtime/realtimekit/faq.mdx b/src/content/docs/realtime/realtimekit/faq.mdx index f610863e128..579f566fe51 100644 --- a/src/content/docs/realtime/realtimekit/faq.mdx +++ b/src/content/docs/realtime/realtimekit/faq.mdx @@ -312,6 +312,8 @@ Creating meetings and participant tokens does not incur charges. For composite recordings, a recorder joins the meeting as a hidden virtual participant and records its view. For more information, refer to the [recording guides](/realtime/realtimekit/recording-guide/). +After the final participant leaves, the recorder remains active for the meeting's session_keep_alive_time_in_secs. The default is 60 seconds, and the maximum is 600 seconds. + RealtimeKit does not charge participant minutes for the recorder. Instead, it charges export minutes for the recorded duration. Refer to [RealtimeKit pricing](/realtime/realtimekit/pricing/) for current rates.
@@ -326,14 +328,12 @@ When someone starts recording during an active session: - If recording starts at 4:20 p.m. and the final participant leaves at 5:00 p.m., it stops at 5:01 p.m. by default. RealtimeKit charges 41 export minutes. - If recording starts at 4:20 p.m. and someone calls kickAll() at 5:00 p.m., recording stops immediately. RealtimeKit charges 40 export minutes. - -
-After the final participant leaves, the recorder remains active for the meeting's session_keep_alive_time_in_secs. The default is 60 seconds, and the maximum is 600 seconds. +- If a meeting and recording start at 4:20 p.m., the meeting uses a two-minute keep-alive period, and all participants close their tabs at 5:00 p.m., recording stops at 5:02 p.m. RealtimeKit charges 42 export minutes.
This keep-alive period helps workflows that must preserve a single recording across brief disconnections. For example, an education technology (EdTech) application might record a timed take-home assignment in a one-participant meeting. If the participant loses their network connection and rejoins before the keep-alive period expires, the recorder continues the same recording. The recording contains an empty gap during the disconnection, but the application does not need to combine two separate recordings.
-The keep-alive period is included in the export charges. To avoid this extra time, explicitly end the session by calling kickAll() or the [Kick all participants API](/api/resources/realtime_kit/subresources/active-session/methods/kick_all_participants/). +The export charges include the keep-alive period. To avoid this extra time, explicitly end the session by calling kickAll() or the [Kick all participants API](/api/resources/realtime_kit/subresources/active-session/methods/kick_all_participants/).