Skip to content

Migrate

Migrate from Twilio Video to Synento

Rooms become sessions, signed tokens become API-minted ones, and the recordings-plus-compositions two-step becomes one export.

In 2024 Twilio announced an end-of-life for Programmable Video, then reversed it: Video remains a standalone product, and new accounts can still build on it. The scare sent many teams evaluating alternatives, and some decided to move anyway — usually because the recording model never fit: per-track recordings plus compositions as separate files, fetched after processing, on top of call minutes.

This guide is for those teams. It maps Twilio's rooms, tokens and recordings onto Synento's sessions, tokens and manifest, with the telephony caveat up front: if PSTN, SIP or the wider Twilio platform is why you are there, you should stay.

Concept mapping

You haveYou getWhat changes
Group room and signed access tokenSession and API-minted connection tokenRooms become sessions; stop signing JWTs and mint tokens through the API per participant.
Video.connect and track subscriptionSynentoRoom and participantsChangedConnect, publish, attach tiles. Manual track subscription becomes participant events.
Track recordings plus compositionsManifest tracks plus one exportPer-track files were the manifest all along; compositions are the export request.
Status callbacksSigned webhookssession.ended, recording.ready and export.completed replace recording status callbacks; verify the HMAC on each.
PSTN, SIP and the Twilio platformNot supportedTelephony is the reason to stay. Synento carries browser media only.
Call minutes plus recording and storage metersParticipant-minutes plus storageRecording has no rate of its own; replay and export past the allowance are the add-ons.

Before and after

Before

A Twilio Video room: connect with a signed token; recordings arrive as separate files.

twilio.js
import Video from 'twilio-video'

const room = await Video.connect(token, { audio: true, name: 'standup', video: true })
room.on('participantConnected', (participant) => {
  // Subscribe to each track; recordings, where enabled, land afterwards
  // as per-track files plus optional compositions.
})

After

The same call on Synento: sessions, API-minted tokens, tracks that never needed composing live.

synento.ts
import { SynentoClient } from '@synento/node'
import { SynentoRoom } from '@synento/client'

// Server: sessions replace rooms; the recording needs no room type flag.
const synento = new SynentoClient()
const session = await synento.createSession({ name: 'Interview' })
const token = await synento.createConnectionToken(session.id, { userId: 'cara' })

// Browser: connect and publish; per-participant tracks stay separated, so
// the per-track files Twilio produced are just the manifest's tracks.
const room = new SynentoRoom({
  getToken: async () => ({ token: token.accessToken, wsUrl }),
  userId: 'cara',
})
await room.connect()
const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true })
await room.publishCamera(stream)
await room.publishMicrophone(stream)

The migration, step by step

  1. Create a Synento project and a restricted key. It replaces the API key for integration traffic; keep Twilio credentials until the cutover is verified.

  2. Replace token signing with the connection-token route: the room name becomes the session id, the identity becomes the user id.

  3. Replace Video.connect with SynentoRoom: connect, publish camera and microphone, render from participant events instead of manual track subscription.

  4. Replace recording handling: read manifest tracks where you fetched per-track files, request one export where you composed, and re-point status callbacks at the signed webhooks.

  5. Verify with two publishers and the manifest, run both platforms in parallel for a retention window, then wind the rooms down.

What has no equivalent

What has no equivalent

The Twilio platform is the reason most teams are there: PSTN dial-in, SIP trunking, SMS and Voice alongside video, Flex for contact centers. None of that exists here, and for contact-center or telephony-heavy products that ends the conversation in Twilio's favor.

Video-specific gaps are smaller but real: legacy room types with their own behaviors, and network-traversal maturity from a decade of production. What you gain is the recording model — every session stored by construction, replayable immediately, verifiable from the manifest.

Common questions

Is Twilio Video shutting down?

No. Twilio announced an end-of-life in 2024 and reversed it later that year: Video remains a standalone product accepting new customers. Migrate for the architecture, not out of urgency.

What happens to our existing track recordings?

They stay in Twilio's storage. Download or compose what must be kept before you wind down; Synento cannot import another platform's recording files.

Do Group room limits map onto session limits?

Roughly, for meeting-sized calls — check the plan limits for current numbers. Webinar-scale rooms with thousands of viewers do not map; that workload belongs on a broadcast platform.

Give your agent a video platform it can verify.

Sign up, point your agent at llms.txt, and have a recorded call running before lunch.