Skip to content

Cloudflare.RealtimeKit reference

Source: src/Cloudflare/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.

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"],
});

Source: src/Cloudflare/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.

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,
},
});
const preset = yield* Cloudflare.RealtimeKit.Preset("Guest", {
appId: app.appId,
name: "guest",
config: {
...Cloudflare.RealtimeKit.defaultRealtimeKitPresetConfig(),
viewType: "WEBINAR",
},
});

Source: src/Cloudflare/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.

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"],
});
const webhook = yield* Cloudflare.RealtimeKit.Webhook("Lifecycle", {
appId: app.appId,
url: "https://example.com/webhook",
events: ["meeting.started", "meeting.ended"],
enabled: false,
});