Skip to main content
List and fetch recordings for a twin or an environment, then inspect the fetched artifacts locally.

Twin-scoped

Environment-scoped

An environment id is always required.

Date filtering

start/end accept a date, a datetime, or an ISO 8601 string (both date-only and full datetime forms, with or without a Z/offset suffix). Provide both bounds together — a one-sided window is rejected:

Types & viewers

Recording types: camera, robot, pointcloud (colored/lidar points), depth (raw depth maps), audio. A depth camera typically matches camera + depth, and also pointcloud when colored points are produced. get() downloads every artifact to a temp directory. The readers require the data extra:
The data extra installs headless OpenCV (decoding only). For GUI video playback with show_video(), also install a non-headless build: pip install opencv-python.

Contextual accessors

A fetched recording exposes only the accessors that apply to its streams — dir(rec) and autocomplete list just the relevant ones. info() is always available.
Point-cloud frames come from the on-demand Parquet (see below); if it is still being prepared, read_* raises with a “retry in a few minutes” hint.

Point clouds as Parquet

When you get() a recording, point-cloud data is downloaded as a single Parquet file (one row per frame: timestamp_us, rows, cols, dtype, and the raw frame data). read_depth() / read_pointcloud() reconstruct the frames; to read the file directly with pyarrow:
The Parquet is materialized on demand: the first time a recording is opened the server may still be preparing it. If so, get() logs a notice (“being generated / updated, retry in a few minutes”) — call get() again shortly to receive the complete file.