Overview
Seam provides a universal API to connect and control many brands of devices. This guide provides a rapid introduction to connecting your Arlo cameras to Seam, retrieving them as devices, receiving their motion events, and retrieving event recordings. To learn more about other device brands supported by Seam, head over to our integration page.1 — Install Seam SDK
Seam provides client libraries for many languages, such as JavaScript, Python, Ruby, PHP, and others, as well as a Postman collection and OpenAPI spec.- JavaScript / TypeScript (npm, GitHub)
- Python (pip, GitHub)
- Ruby Gem (rubygem, GitHub)
- PHP (packagist, GitHub)
- C# (nuget, GitHub)
- Java (Maven, GitHub)
This guide uses a Sandbox Workspace. Only virtual devices can be connected. If
you need to connect a real Arlo account, use a non-sandbox workspace and API
key.
2 — Link an Arlo Account with Seam
To use Arlo cameras through the Seam API, you must first authorize your Seam workspace against your Arlo account. To do so, Seam provides Connect Webviews: pre-built UX flows that walk you through signing in to Arlo and completing two-step verification. Arlo is a beta provider, so includearlo in the Connect Webview’s accepted_providers list. The Arlo login in the Connect Webview works only after Seam turns on Arlo for your workspace, including your sandbox workspace.
Request a Connect Webview
Authorize Your Workspace
Navigate to the URL returned by the Webview object. Since you are using a sandbox workspace, complete the login flow by entering the Arlo sandbox test account credentials below:- email: arlo-test@example.com
- password: arlo-test-password
- verification code: 123456
3 — Retrieve Arlo Camera Devices
After an Arlo account is linked with Seam, you can retrieve its cameras and video doorbells as devices with thearlo_camera device type.
4 — Receive Motion Events
When a connected Arlo camera detects motion, Seam creates acamera.activated event with activation_reason set to motion_detected. To receive these events as they happen, set up a webhook. You can also list events for the camera.
The Arlo sandbox doesn’t simulate motion, so this step and the next return no events or media in a sandbox workspace. Use a real Arlo account in a non-sandbox workspace to see them.
camera.activated event:
5 — Retrieve the Event Recording
When event media is turned on for your workspace, each Arlocamera.activated event lists media_ids: one for the video clip and one for a thumbnail image. Seam copies the clip from the Arlo cloud library, converts it to MP4 with H.264 video so that browsers can play it, and extracts the thumbnail from it.
Pass each ID to /media/get. The response’s media_type tells you whether it’s the clip (video) or the thumbnail (image).
Recordings require an Arlo subscription that includes cloud recording. Without one, the media ends in the
unavailable status. Arlo usually finishes a clip within a minute of the motion, so the media is pending until then.url is a signed link that expires within minutes, so store the media_id rather than the url, and call /media/get again for a new URL. The response has no field for when the URL expires. expires_at is when the media itself stops being available: Seam keeps stored Arlo media for 7 days. For polling, statuses, and browser playback, see Retrieve Event Media.
6 — Stream Live Video
You can stream an Arlo camera’s live video to a browser over WebRTC when itscan_stream_live_video capability flag is true and live video is turned on for your workspace. The flag means the camera supports live video and is online. It doesn’t reflect whether live video is turned on for your workspace: if it isn’t, /cameras/live_views/create returns a camera_not_available error. The flag is false while the camera is offline. Live view uses a client session token scoped to the camera, so your users’ browsers never see your API key. For the full flow, see Stream Live Video.