docs(realtimekit): add concept page for Voice meetings (#27400)

This commit is contained in:
Swapnil Madavi 2026-01-07 18:03:50 +05:30 committed by GitHub
parent 26a9daf743
commit 0cee692eae
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 90 additions and 35 deletions

View file

@ -3,19 +3,23 @@ pcx_content_type: navigation
title: FAQ
slug: realtime/realtimekit/faq
sidebar:
order: 9
order: 10
---
import { Details } from "~/components";
<Details header="How can I generate the Cloudflare API Token?">
To use RealtimeKit APIs, you must have a [Cloudflare account](https://dash.cloudflare.com).
Follow the [Create API token guide](/fundamentals/api/get-started/create-token/) to create a new token via the [Cloudflare dashboard](https://dash.cloudflare.com/profile/api-tokens).
When configuring permissions, ensure that **Realtime** / **Realtime Admin** permissions are selected.
Configure any additional [access policies and restrictions](/fundamentals/api/reference/permissions/) as needed for your use case.
</Details>
### Meetings
### Meetings
<Details header="Can I schedule meetings in advance with RealtimeKit?">
While RealtimeKit does not include a built-in scheduling system, you can implement the scheduling experience on top of it in your application.
@ -30,29 +34,35 @@ A common approach is:
</Details>
<Details header="How do I prevent participants from joining a meeting after a specific date or time?">
You can disable the meeting at the required time by setting its status to `INACTIVE` using a `PATCH` request to the
[Update Meeting](/api/resources/realtime_kit/subresources/meetings/methods/update_meeting_by_id/) endpoint.
This prevents participants from joining the meeting and prevents any new Sessions from starting.
You can disable the meeting at the required time by setting its status to `INACTIVE` using a `PATCH` request to the
[Update Meeting](/api/resources/realtime_kit/subresources/meetings/methods/update_meeting_by_id/) endpoint.
```bash
This prevents participants from joining the meeting and prevents any new Sessions from starting.
```bash
curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/realtime/kit/{APP_ID}/meetings/{MEETING_ID} \
--request PATCH \
--header "Authorization: Bearer <CLOUDFLARE_API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{ "status": "INACTIVE" }'
--request PATCH \
--header "Authorization: Bearer <CLOUDFLARE_API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{ "status": "INACTIVE" }'
```
</Details>
### Participants
<Details header="How do I generate an auth token for a participant?">
Your backend generates an authentication token by adding the user as a participant to a meeting with the [Add Participant](/api/resources/realtime_kit/subresources/meetings/methods/add_participant/) API endpoint.
The API response includes a `token` field, which is the authentication token for that participant in that meeting.
If you need a new token for an existing participant after the previous token has expired, use the [Refresh Participant Token](/api/resources/realtime_kit/subresources/meetings/methods/refresh_participant_token/) endpoint.
For more details, see [Participant tokens](/realtime/realtimekit/concepts/participant/#participant-tokens).
Your backend generates an authentication token by adding the user as a
participant to a meeting with the [Add
Participant](/api/resources/realtime_kit/subresources/meetings/methods/add_participant/)
API endpoint. The API response includes a `token` field, which is the
authentication token for that participant in that meeting. If you need a new
token for an existing participant after the previous token has expired, use
the [Refresh Participant
Token](/api/resources/realtime_kit/subresources/meetings/methods/refresh_participant_token/)
endpoint. For more details, see [Participant
tokens](/realtime/realtimekit/concepts/participant/#participant-tokens).
</Details>
<Details header="Can the same user join from multiple devices or browser tabs?">
@ -64,9 +74,8 @@ curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/realtime/kit/{AP
<Details header="How can I prevent a user from joining a meeting again?">
Delete that user's participant for the meeting using the [Delete
Participant](/api/resources/realtime_kit/subresources/meetings/methods/delete_meeting_participant/)
API endpoint.
Once the participant is deleted and you stop issuing new tokens for them, they will no longer be able to join that meeting.
API endpoint. Once the participant is deleted and you stop issuing new tokens
for them, they will no longer be able to join that meeting.
</Details>
<Details header="Can the same participant join multiple sessions of a meeting?">
@ -91,19 +100,23 @@ curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/realtime/kit/{AP
### Presets
<Details header="Do I need a new preset for every meeting or participant?">
Presets are **re-usable** set of rules and configurations that are defined at the App level. You can use the same preset for multiple participants.
Read more about presets [here](/realtime/realtimekit/concepts/preset/).
</Details>
### Client Side SDKs
<Details header="How do I decide which SDK to select?">
RealtimeKit support all the popular frameworks for web and mobile platforms.
We **recommend using our UI Kits** For most use cases.
Please Note: When you use our UI Kit, you also get the core SDK with it, which can be used to build additional features based on your needs.
We **recommend using our UI Kits** For most use cases.
Please Note: When you use our UI Kit, you also get the core SDK with it, which can be used to build additional features based on your needs.
For more information please refer to our [SDK Selection Guide](/realtime/realtimekit/sdk-selection/)
For more information please refer to our [SDK Selection Guide](/realtime/realtimekit/sdk-selection/)
</Details>

View file

@ -3,20 +3,20 @@ pcx_content_type: content
title: Pricing
slug: realtime/realtimekit/pricing
sidebar:
order: 10
order: 11
---
Cloudflare RealtimeKit is currently in Beta and is available at no cost during this period.
When RealtimeKit reaches general availability (GA), usage will be charged according to the pricing model below:
| Feature | Price |
| --- | --- |
| Audio/Video Participant | $0.002 / minute |
| Audio-Only Participant | $0.0005 / minute |
| Export (recording, RTMP or HLS streaming) | $0.010 / minute |
| Export (recording, RTMP or HLS streaming, audio only) | $0.003 / minute |
| Export (Raw RTP) into R2 | $0.0005 / minute |
| Transcription (Real-time) | Standard model pricing via Workers AI |
| Feature | Price |
| ----------------------------------------------------- | ------------------------------------- |
| Audio/Video Participant | $0.002 / minute |
| Audio-Only Participant | $0.0005 / minute |
| Export (recording, RTMP or HLS streaming) | $0.010 / minute |
| Export (recording, RTMP or HLS streaming, audio only) | $0.003 / minute |
| Export (Raw RTP) into R2 | $0.0005 / minute |
| Transcription (Real-time) | Standard model pricing via Workers AI |
Whether a participant is an audio-only participant or an audio/video participant is determined by the `Meeting Type` of their [preset](/realtime/realtimekit/concepts/preset/).
Whether a participant is an audio-only participant or an audio/video participant is determined by the `Meeting Type` of their [preset](/realtime/realtimekit/concepts/preset/).

View file

@ -4,7 +4,7 @@ title: REST API Reference
slug: realtime/realtimekit/rest-api-reference
external_link: /api/resources/realtime_kit/
sidebar:
order: 12
order: 13
badge:
text: API
variant: note

View file

@ -0,0 +1,42 @@
---
title: Voice meetings
pcx_content_type: concept
slug: realtime/realtimekit/voice-meetings
sidebar:
order: 9
---
RealtimeKit supports voice meetings, allowing you to build audio-only experiences such as audio rooms, support lines, or community hangouts.
In these meetings, participants use their microphones and hear others, but cannot use their camera. Voice meetings reduce bandwidth requirements and focus on audio communication.
## How voice meetings work
A participants meeting experience is determined by the **Preset** applied to that participant.
To run a voice meeting, ensure all participants join with a Preset that has meeting type set to `Voice`.
For details on Presets and how to configure them, refer to [Preset](/realtime/realtimekit/concepts/preset/).
## Pricing
When a participant joins with a `Voice` meeting type Preset, they are considered an **Audio-Only Participant** for billing. This is different from the billing for Audio/Video Participants.
For detailed pricing information, refer to [Pricing](/realtime/realtimekit/pricing/).
## Building voice experiences
You can build voice meeting experiences using either the UI Kit or the Core SDK.
### UI Kit
UI Kit provides a pre-built meeting experience with customization options.
When participants join with a `Voice` meeting type Preset, UI Kit automatically renders a voice-only interface.
You can use the default meeting UI or build your own UI using UI Kit components.
To get started, refer to [Build using UI Kit](/realtime/realtimekit/ui-kit/).
### Core SDK
Core SDK provides full control to build custom audio-only interfaces. Video-related APIs are non-functional for participants with `Voice` type Presets.
To get started, refer to [Build using Core SDK](/realtime/realtimekit/core/).