Engineering guide

Your first room,
with the right boundaries.

Allocate on your server. Connect in the browser. Keep media close to your participants.

A room has a regional home.

The corporate site provides management reference material, public platform telemetry, and enterprise inquiries. Audio and video clients connect directly to their assigned regional SFU. The regional distribution mirror serves versioned browser assets.

Replace <region> (or sfu-X) with your nearest active regional Edge cluster (e.g. as listed in /network.html); per-PoP service subdomains vary by cluster role and are published in each node's /docs.

Regional service roles
ServiceEndpoint patternUse
Regional media servicehttps://sfu-<region>.synton.cc/Room sessions, signaling, and ICE
Node coordinatorhttps://api.sfu-<region>.synton.cc/docsPublic schema discovery; Bearer access under /v1/
Public distribution mirrorhttps://assets-<region>.synton.cc//rtc/v1/sessions/Public distribution entry; client files under /assets/v1/client/

Use the endpoint profile supplied with your workspace. The mirror entry is read-only; room allocation is a protected POST to the regional media service. Media clients do not connect to the corporate apex domain.

01 / Issue a room ticket on your server.

Store the workspace credential in your application backend. Request a short-lived participant ticket immediately before joining; scope it to one room and only the required publication and subscription grants.

curl -fsSL -X POST 'https://sfu-<region>.synton.cc/rtc/v1/sessions' \
  -H 'Authorization: Bearer <TENANT_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{"room":"standup-eu-01","participant":"usr_92c","simulcast":true}'
{
  "room": "standup-eu-01",
  "participant": "usr_92c",
  "token": "<ROOM_TICKET>",
  "expires_in": 300,
  "url": "wss://sfu-<region>.synton.cc/rtc"
}

Your application’s authenticated /room-ticket handler calls the regional session endpoint and returns the scoped ticket to its own client. Do not put a tenant credential in browser code. Reusing an identity inside the same room replaces its existing participant session.

02 / Join from your interface.

Load the locally mirrored browser bundle. The UMD export is LivekitClient. The example enables camera and microphone after joining; request the user’s permission from an explicit application action.

<script src="https://assets-<region>.synton.cc/assets/v1/client/sfu-client.js"></script>
<script type="module">
  const room = new LivekitClient.Room({
    adaptiveStream: true,
    dynacast: true
  });
  const ticketResponse = await fetch('/room-ticket', { method: 'POST' });
  if (!ticketResponse.ok) throw new Error('Room access was not granted.');
  const { token } = await ticketResponse.json();
  await room.connect('wss://sfu-<region>.synton.cc/rtc', token);
  await room.localParticipant.enableCameraAndMicrophone();
</script>

The session opens WSS signaling at /rtc. An ordinary HTTP request without a session or upgrade receives HTTP 401 or 426. Listen for room connection and participant events to keep your interface in sync; your application owns participant rendering.

The SDK uses the browser’s negotiated WebRTC codecs for live calls. Its room options enable Adaptive Stream and Dynacast; both should be tested against your tile layout and capture settings.

03 / Set the subscription policy.

For a 20-participant engineering standup, publish VP9 spatial layers at 180p, 360p, and 720p where client capability permits. Small tiles subscribe to smaller layers. Unused publications can pause through Dynacast rather than filling subscriber downlinks.

Opus carries speech. Screen-share tracks can use a separate subscription policy so a presenter’s text remains readable. Recording is permissioned separately and uses the workspace’s assigned egress destination.

Restricted-network calls

The client exchanges ICE candidates through https://sfu-<region>.synton.cc/rtc/v1/ice. Enterprise workspace configuration supplies short-lived regional TURN credentials. If direct media is unavailable, the client can select a regional TCP/TURN relay; use the closest suitable region to keep audio delay within your application’s budget.

Versioned assets, inspectable releases.

Precompile the codec modules when your application needs the optional media-processing path. Compiling warms the module cache; invocation requires each codec runtime’s import bindings and memory setup.

const paths = ['codec-opus.wasm', 'codec-vp9.wasm'];
const modules = await Promise.all(paths.map(async name => {
  const response = await fetch('https://assets-<region>.synton.cc/assets/v1/client/' + name);
  if (!response.ok) throw new Error('Codec asset unavailable: ' + name);
  return WebAssembly.compile(await response.arrayBuffer());
}));

The distribution includes an Opus decoder and a WebM processing module under the codec asset filenames. Browser-native live-call encoding remains independent of these optional modules. The manifest records upstream packages, checksums, and module responsibilities.

Discover the regional release

const response = await fetch(
  'https://sfu-<region>.synton.cc/assets/v1/client/manifest.json'
);
if (!response.ok) throw new Error('Client manifest unavailable');
const manifest = await response.json();
console.log(manifest.sdk_version, manifest.codecs);

Read the regional manifest before updating a pinned client build. Verify SHA-256 digests after downloading, then stage an application release using your existing build process. Asset reads support HTTP 200 and partial-content HTTP 206 when requested by the serving mirror.

Inspect this release manifest

Tenant access & configuration.

Tell us your expected simultaneous participants, publication pattern, preferred geography, and recording policy. The onboarding review covers dedicated cluster capacity, credential custody, and security contacts before we enable room allocation.

Plan your dedicated room capacity

Self-service registration is closed. Enterprise agreements reserve single-tenant media forwarding capacity, per-project credentials, and isolated recording egress for your workspace.

Talk through requirements

We use these details to arrange capacity and security onboarding. Read the privacy policy.