Defaults at a glance
recordings.list() deliberately narrows a request before it downloads catalog
pages. Its defaults are the same for twin.recordings.list() and
cw.environments.recordings.list(); twin-scoped calls additionally apply that
twin filter on the server.
Pass both
start and end to select an older or wider UTC date range.
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:
start/end, list() checks which days have recordings and lists
the most recent one, rather than the environment’s whole history. Pass an
explicit window to reach older recordings.
Paging
list() fetches recordings in pages of 50 and returns at most limit
(default 200). Use limit=0 to keep following pages until the window is
exhausted.
filter= narrows the recordings that were fetched, so widen limit (or the
date window) rather than relying on filter to search further back.
Like the replay picker, list() excludes materializing or failed recordings by
default. Pass include_unready=True only when those rows are needed.
list() warns when it returns a partial view, so a truncated result never looks
complete:
logging.getLogger("cyberwave.managers.recordings").setLevel(logging.ERROR).
If the API gateway rejects a catalog response because its payload is too large,
the SDK raises RecordingPayloadTooLargeError instead of exposing the opaque
platform HTTP 500. Its message includes the selected window, cloud trace, and
instructions to use a shorter start/end interval or lower limit.
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:
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.
read_* raises with a “retry in a few minutes” hint.
Point clouds as Parquet
When youget() 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:
get() logs a notice (“being generated / updated,
retry in a few minutes”) — call get() again shortly to receive the complete file.