Blog/Product/October 21, 2026

Introducing Our New Camera API: Events, Recordings, and Live Video

Phil Chmalts photo
Phil Chmalts
Engineering
Introducing Our New Camera API: Events, Recordings, and Live Video cover image

Today, we’re thrilled to announce the official public beta of our Seam Camera API. After years of prototyping and iteration, we think we’ve finally landed on the developer experience we were looking for. As part of this release, we’re introducing support for Tapo, Ring, Arlo, and Ubiquiti UniFi, with Hikvision coming soon.

We’ve spent so much time thinking about cameras because we see them as a universal sensor for the physical world. They can help us understand whether a space is occupied, a package has arrived, or a gate is open—and that context can drive workflows and automations. Our goal with this API is to make the events and footage behind those experiences easier to build on.

Your app can now receive motion events from Tapo, Arlo, Ring, and Ubiquiti UniFi. For Tapo, Arlo, and Ring, you can also retrieve available clips and thumbnails through one endpoint and stream live video into your app. Ring doorbells also report button presses.

From motion to a recording
Event clipSample footage
Shipping yard · Camera 0100:00
Motion detectedCamera activation
Webhook receivedcamera.activated
Clip available/media/get
Sample footage and illustrative events. Motion triggers a webhook; your app retrieves the recording.

Cameras use the same connected accounts, devices and webhooks as locks and thermostats. You can put a camera's recording beside an access event without building a separate integration for each brand.

Put the footage beside the event

An access log tells you when a door unlocked. A camera can add context: a delivery at the entrance, a guest waiting outside, or activity after the door closed.

Add clips to an access log. Match an entrance camera to the relevant lock in your app, then pair a lock.unlocked event with a nearby camera.activated event. Retrieve the available clip and show it beside the unlock. Your app handles the association; Seam provides the events and media.

Check the entrance before unlocking. Let an operator open live video from a Tapo, Arlo or Ring camera inside your interface before remotely unlocking a door. A client session scopes access to the user's devices, and the stream plays over WebRTC in the browser.

Bring a Ring doorbell event to the front desk. When device.doorbell_rang arrives, your app can retrieve its available thumbnail and show it with the notification. Doorbell press events are supported for Ring, not Tapo or Arlo.

From a webhook to a recording

Camera events carry media_ids for their media. Call /media/get with an ID to check its status. When the media is available, the response includes a signed URL for the clip or thumbnail.

Set SEAM_API_KEY on your server and replace the example ID with a media_id from your verified camera webhook. Repeat the request for each ID in the event. The tabs include every supported SDK, plus Java and Go HTTP examples, the Seam CLI, and cURL.

1import { Seam } from "seam"
2
3const seam = new Seam() // Reads SEAM_API_KEY.
4const media = await seam.media.get({
5  media_id: "01a0d985-621c-7b3e-9f2d-4a5b6c7d8e9f",
6})
7
8// The url expires within minutes. Call again for a fresh one.
9if (media.status === "available") console.log(media.url)

An event can arrive before its recording is ready. Retry pending media with backoff, and handle unavailable or failed media in your interface. A motion event does not guarantee a recording: the provider's subscription, recording settings and camera connectivity matter.

Store the media_id, rather than the signed URL. URLs expire within minutes; call /media/get again for a fresh one. expires_at describes when the media itself stops being available, not when the current URL expires.

Seam retrieves Tapo recordings from the camera's microSD card through Seam Bridge and Arlo recordings from the Arlo cloud library. Seam stores these clips and thumbnails privately for seven days. Ring media stays with Ring, with availability determined by the Ring account's recording plan and retention.

Seam converts Arlo recordings from HEVC to H.264 for browser playback. The event media guide covers media states, retention and URL refresh.

Live video inside your app

For Tapo, Arlo and Ring, your backend creates a client session scoped to the user's connected accounts. The browser uses that token with /cameras/live_views/create, exchanges a WebRTC offer through /cameras/live_views/offer, and closes the session through /cameras/live_views/stop when viewing ends.

Your API key stays on the backend, and camera credentials do not reach the browser. Check can_stream_live_video before showing a live-view control.

During the beta, one viewer can stream a camera at a time. Tapo and Arlo sessions last up to ten minutes; Ring sessions last up to 30 seconds on battery-powered cameras or 60 seconds on wired cameras. The viewer's network must allow outbound UDP. Follow the live video guide for the complete browser example and network requirements.

Launch brands

This release introduces motion events from Tapo, Arlo, Ring and Ubiquiti UniFi cameras. Hikvision camera support is coming soon.

The recording and live-view integration details for Tapo, Arlo and Ring are below.

TapoArloRing
ConnectionLocal network through Seam BridgeArlo cloud with email/password and a verification codeRing App Store partner pairing
Motion eventsYesYesYes
Doorbell press eventsNoNoYes
Event clips and thumbnailsFrom microSD, with the Tapo account password supplied at connectionRequires a cloud-recording subscriptionRequires Ring Protect
Live viewYes, with optional audioYesYes

For model requirements and setup details, read the Tapo, Arlo and Ring guides.

Start building

Camera events, event media and live video are available in every workspace during the public beta. To show the camera providers in Connect Webview, set provider_category to cameras.

Explore the Camera API, then follow the event media guide to connect a camera and retrieve its recordings. On-demand snapshots are not part of this release; event thumbnails come from recordings. Beta API shapes may change, with updates published in the changelog.

Questions about setup? Contact support@seam.co.

By subscribing you agree to our Privacy Policy.
One API for All Devices
Global Infrastructure for Controlling the Physical World
Seam makes controlling IoT devices seamless and programmable. Our teams operate globally,
enabling businesses of all sizes.
Smart Locks
Access Systems
Lock Capabilities
Thermostats
Sensors
© 2026 Seam Labs, Inc.