Cloudflare.RealtimeKit reference
Source:
packages/cloudflare/src/RealtimeKit/App.ts
A Cloudflare RealtimeKit app — the organizational container for RealtimeKit meetings, presets, and webhooks.
RealtimeKit (the acquired Dyte platform) is in beta and must be enabled on the account. The API is create-only today: there is no update and no delete endpoint. Destroying the resource therefore only forgets the app from state (with a warning) — the app itself remains on the account until Cloudflare ships a delete API. Because of this, an existing app with the same name is adopted rather than duplicated.
App: Creating an App
Section titled “App: Creating an App”Basic app
const app = yield* Cloudflare.RealtimeKit.App("Meetings", { name: "my-meetings-app",});Child resources
const app = yield* Cloudflare.RealtimeKit.App("Meetings", {});
const webhook = yield* Cloudflare.RealtimeKit.Webhook("Events", { appId: app.appId, url: "https://example.com/webhook", events: ["meeting.started", "meeting.ended"],});App: Looking up an existing app
Section titled “App: Looking up an existing app”RealtimeKit apps can’t be deleted, so an app created once is usually
shared. App.lookup references one Alchemy doesn’t manage (created in the
dashboard or by another stack), found by appId or name. It is read
during plan/deploy and never created or updated.
const app = Cloudflare.RealtimeKit.App.lookup({ name: "meetings" });yield* Cloudflare.RealtimeKit.Webhook("Events", { appId: app.appId, url: "https://example.com/webhook", events: ["meeting.started", "meeting.ended"],});Preset
Section titled “Preset”Source:
packages/cloudflare/src/RealtimeKit/Preset.ts
A Cloudflare RealtimeKit preset — a named participant role (e.g. host,
guest) bundling permissions, media quality, and UI design tokens for a
RealtimeKit app.
Name, config, UI, and permissions are all mutable in place; only moving the preset to a different app forces a replacement. The create API requires the full config / UI / permissions objects, so the resource fills unspecified sections with sensible defaults.
Preset: Creating a Preset
Section titled “Preset: Creating a Preset”Default group-call preset
const app = yield* Cloudflare.RealtimeKit.App("Meetings", {});
const guest = yield* Cloudflare.RealtimeKit.Preset("Guest", { appId: app.appId, name: "guest",});Host preset with moderation permissions
const host = yield* Cloudflare.RealtimeKit.Preset("Host", { appId: app.appId, name: "host", permissions: { ...Cloudflare.RealtimeKit.defaultRealtimeKitPresetPermissions(), canRecord: true, kickParticipant: true, pinParticipant: true, acceptWaitingRequests: true, },});Preset: Updating a Preset
Section titled “Preset: Updating a Preset”const preset = yield* Cloudflare.RealtimeKit.Preset("Guest", { appId: app.appId, name: "guest", config: { ...Cloudflare.RealtimeKit.defaultRealtimeKitPresetConfig(), viewType: "WEBINAR", },});Webhook
Section titled “Webhook”Source:
packages/cloudflare/src/RealtimeKit/Webhook.ts
A Cloudflare RealtimeKit webhook — receives meeting, recording, livestream, transcript, and summary events for a RealtimeKit app.
Name, URL, events, and enablement are all mutable in place; only moving the webhook to a different app forces a replacement.
Webhook: Creating a Webhook
Section titled “Webhook: Creating a Webhook”Meeting lifecycle events
const app = yield* Cloudflare.RealtimeKit.App("Meetings", {});
const webhook = yield* Cloudflare.RealtimeKit.Webhook("Lifecycle", { appId: app.appId, url: "https://example.com/webhook", events: ["meeting.started", "meeting.ended"],});Recording events to a Worker
const webhook = yield* Cloudflare.RealtimeKit.Webhook("Recordings", { appId: app.appId, url: worker.url, events: ["recording.statusUpdate"],});Webhook: Updating a Webhook
Section titled “Webhook: Updating a Webhook”const webhook = yield* Cloudflare.RealtimeKit.Webhook("Lifecycle", { appId: app.appId, url: "https://example.com/webhook", events: ["meeting.started", "meeting.ended"], enabled: false,});