You should create a new Room for each new live broadcast. If marked with ephemeral, Rooms will automatically delete after 10 minutes of no input stream. You can also delete them programatically through our API or SDK.

Room Object

The full Room object returned by our API

fieldtypedescription
idstringhop-generated room ID
name?stringoptional room name
ephemeralbooleanis this room temporary?
ingest_protocolstringone of: rtp, rtmp, srtp
delivery_protocolsstring[]an array of supported delivery protocols (llhls, webrtc)
join_tokenstringroom join token
statestring“live” or “offline”
ingest_endpointstringroom ingest endpoint (stream to this!)
ingest_regionregion (string)the region where the primary ingest is hosted
llhls_config?llhls_configcustom LLHLS configuration options
webrtc_config// TODO: @alii ping me once finished with rtc config in sdkcustom WebRTC configuration options

Creating a Room

You can create a Pipe Room through our server-side SDK or our REST API.

const room = await hop.pipe.rooms.create({
  name: "My Stream", // optional room name
  ingestProtocol: "rtmp", // rtmp or rtp
  deliveryProtocols: ["llhls"], // llhls and webrtc are permitted,
  ephemeral: true, // set your rooms to ephemeral if they're single-use
});

Deleting a Room

Please note that this will cause the ingest server to terminate your connection. This will also trigger the “CLOSED_REMOTELY” connection state on the frontend clients.

// delete by ID const id = "pipe_room_xxx"; const room =
await hop.pipe.rooms.delete(id);