WebRTC infrastructure — from zero to production in minutes

Real-time rooms,recording &
moderation
via a single API.

Relay gives your product live video and audio rooms, automatic session recording, and AI-powered content moderation — all over a REST API. No WebRTC expertise required.

No WebRTC boilerplateSOC 2 ready infrastructureSub-200ms global latency99.9% uptime SLA
create-hall.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Create a room in one API call
const res = await fetch("https://api.relay.dev/v1/halls", {
method: "POST",
headers: {
"Authorization": "Bearer relay_live_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "engineering-standup",
max_participants: 20,
record: true,
moderation: true,
}),
});
const { hall_id, join_token } = await res.json();
// pass join_token to your frontend client to enter the room
200 OK · ~120ms

Platform capabilities

Everything you need.
Nothing you don't.

Relay handles the hard parts of real-time communication so your team ships product features, not infrastructure.

Managed Video Rooms

Create rooms via REST. Participants join with signed tokens — no WebRTC wiring on your server. Sub-200ms latency globally.

Automatic Recording

Set record: true when creating a hall. Sessions are stored directly to your own S3 bucket — you own the data.

EXPLICIT_CONTENT72%flag

AI Content Moderation

Video Intelligence scans live and recorded sessions. Confidence-scored flags appear in your dashboard and fire webhooks instantly.

// POST → your endpoint
{
  "event": "hall.created",
  "data": {"hall_id": "h_..."}
  "sig": "sha256=..."
}

Signed Webhooks

Every platform event — room created, clip ready, flag raised — delivered to your endpoint, signed with HMAC-SHA256.

0:100:40

Clip Extraction

Slice any completed recording into a labelled clip via one API call. Precision re-encoded and uploaded back to your S3.

key_hashsha256:3f4a8b...
rlsenabled on all tables
vaultsecrets encrypted at rest

Security First

API keys hashed with SHA-256, never stored in plaintext. Secrets in an encrypted vault. Row-level security on every table.

curlcurl -X POST /v1/halls \
pythonrequests.post('/v1/halls',
nodefetch('/v1/halls', { method:
gohttp.Post("/v1/halls", "app/
···any HTTP client

Any Language, Any Stack

Pure REST — no server-side SDK required. If it can make an HTTP request, it works with Relay on day one.

Developer experience

Up and running in four steps.

No SDKs to install on your server. Just HTTP. Your favourite language works on day one.

01

Create a hall

POST /v1/halls with your room configuration — name, participant limit, recording, and moderation preferences.

POST /v1/halls
{
  "name": "design-review",
  "max_participants": 10,
  "record": true,
  "moderation": true
}
02

Issue join tokens

For each participant, call POST /v1/halls/{id}/join. Relay returns a signed LiveKit token you pass directly to the client SDK.

POST /v1/halls/{hall_id}/join
{
  "participant_id": "user_abc",
  "display_name": "Alice",
  "role": "publisher"
}
03

Receive events

Configure a webhook URL in your dashboard. Relay delivers signed events for every lifecycle moment — join, leave, recording complete, flag raised.

// Your endpoint receives:
{
  "event": "recording.complete",
  "data": {
    "recording_id": "rec_...",
    "bucket_path": "recordings/..."
  }
}
04

Review moderation

Open and dismissed flags appear in the dashboard and via API. Take action on flagged sessions without leaving your tooling.

POST /v1/flags/{flag_id}/action
// → 200 { "status": "actioned" }
// Fires moderation.flag_actioned webhook

Data & privacy

We orchestrate.
You own everything.

Relay never holds your media, your recordings, or your application data. Every byte your users generate is written directly to infrastructure you control — we are a conduit, not a custodian.

Your application

Sends REST API requests with your API key

REST call

Relay

Orchestrates sessions, issues tokens, runs moderation, routes data

mediadata

Your infrastructure

S3-compatible storage

RecordingsClipsMedia files

PostgreSQL database

ParticipantsSession dataEvents

Zero media retention

Relay never buffers, caches, or stores recording or stream data on our servers.

Your credentials, your access

Storage and database credentials are encrypted in Vault — only your app can retrieve them.

We see only what's needed

Relay holds room config, flag statuses, and usage counts. Nothing about your users' content.

Pricing

Simple, predictable pricing.

Both plans start with a 60-day promotional period — one payment, full platform access. Then continue at the monthly rate. No hidden fees.

Starter

Ship your first real-time feature.

$350/ 2 months
Launch offerthen $250/mo
Start with Starter
  • 10,000 participant-minutes / month
  • 100 participants per hall
  • Recording + AI content moderation
  • Signed webhooks for all events
  • Clip extraction API
  • Dashboard + team access
  • $0.04 / extra participant-minute
Most popular

Growth

Scale to thousands of concurrent users.

$500/ 2 months
Launch offerthen $350/mo
Start with Growth
  • 30,000 participant-minutes / month
  • 250 participants per hall
  • Everything in Starter
  • Dedicated Slack support channel
  • $0.04 / extra participant-minute
  • Moderation cost pass-through + 20%

Enterprise

Custom infrastructure for high-scale, regulated workloads.

Custom

Volume pricing available

Talk to us
  • Unlimited halls & participants
  • Dedicated media infrastructure
  • Custom SLA + uptime guarantees
  • SSO / SAML
  • Audit logs
  • Volume discounts
  • White-glove onboarding

Overage pricing

Participant-minutes over your plan's included amount are billed at $0.04/min, auto-added to your next Stripe invoice. No surprises.

Full pricing details →
curl api.relay.dev/v1/halls — it's really that simple

Ship real-time features this week.

Stop wrestling with STUN servers, TURN credentials, and media servers. Get an API key and start creating rooms in under 10 minutes.