Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions src/content/docs/realtime/realtimekit/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -279,3 +279,61 @@ 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.

</Details>

### Billing

<Details header="How are Audio/Video Participant and Audio-Only Participant minutes charged?">

RealtimeKit bills active participant minutes. Billing starts when a participant joins a meeting session and stops when they leave it.

<br/>
**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/).

<br/>
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.
<br/>
Creating meetings and participant tokens does not incur charges.

</Details>

<Details header="How is composite recording export charged?">

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 <a href="/api/resources/realtime_kit/subresources/meetings/methods/create/#(resource)%20realtime_kit.meetings%20%3E%20(method)%20create%20%3E%20(params)%200%20%3E%20(param)%20session_keep_alive_time_in_secs%20%3E%20(schema)"><code>session_keep_alive_time_in_secs</code></a>. 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.

<br/>
When <a href="/api/resources/realtime_kit/subresources/meetings/methods/create/#(resource)%20realtime_kit.meetings%20%3E%20(method)%20create%20%3E%20(params)%200%20%3E%20(param)%20record_on_start%20%3E%20(schema)"><code>record_on_start</code></a> 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.

<br/>
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 <a href="/realtime/realtimekit/core/end-a-session/"><code>kickAll()</code></a> at 5:00 p.m., recording stops immediately. RealtimeKit charges 40 export minutes.
- 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.

<br/>
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.

<br/>
The export charges include the keep-alive period. To avoid this extra time, explicitly end the session by calling <a href="/realtime/realtimekit/core/end-a-session/"><code>kickAll()</code></a> or the [Kick all participants API](/api/resources/realtime_kit/subresources/active-session/methods/kick_all_participants/).

</Details>