datasets
Dataset-kind repo extras — episode index, frames index, per-episode playback payload, dataset meta
GET /v1/datasets/{owner}/{repo}/episodes
List dataset episodes
Episode index of a dataset-kind repo (LeRobotDataset layout; parsed from repo files — the parser lands in M6, the contract is fixed now). 409 problem if the repo is not a dataset.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
owner | path | Handle | Repo owner handle (username or org slug). |
repo | path | Slug | Repo slug. |
limit | query | integer | Page size. |
cursor | query | string | Opaque cursor from the previous page's |
Responses
| Status | Description | Body |
|---|---|---|
200 | Page of episodes. | EpisodePage |
404 | Resource not found (or hidden from the caller). | Problem |
409 | State conflict (duplicate handle/slug, wrong repo kind, terminal job, ...). | Problem |
GET /v1/datasets/{owner}/{repo}/episodes/{episode_index}/frames-index
Frames index for one episode
Maps an episode to the repo files that store its frames (parquet data slices, per-camera videos) so clients can range-read instead of downloading the whole dataset.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
owner | path | Handle | Repo owner handle (username or org slug). |
repo | path | Slug | Repo slug. |
episode_index | path | integer | Zero-based episode index. |
Responses
| Status | Description | Body |
|---|---|---|
200 | The frames index. | FramesIndex |
404 | Resource not found (or hidden from the caller). | Problem |
409 | State conflict (duplicate handle/slug, wrong repo kind, terminal job, ...). | Problem |
GET /v1/datasets/{owner}/{repo}/episodes/{episode_index}/series
Playable payload for one episode
Everything a viewer needs to play one episode in a single round trip: presigned per-camera video URLs, the downsampled observation.state / action channels as {t, name, value} points, fps and the episode's task strings. getEpisodeFramesIndex says where the frames live; this says what they are. The server range-reads the parquet columns it needs — it never downloads the whole file — and decimates each channel to at most max_points samples with a min/max algorithm that preserves spikes. 409 problem if the repo is not a dataset, or if its files are not a readable LeRobotDataset.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
owner | path | Handle | Repo owner handle (username or org slug). |
repo | path | Slug | Repo slug. |
episode_index | path | integer | Zero-based episode index. |
max_points | query | integer | Maximum samples returned per channel. The series is decimated to fit (min/max per bucket, so spikes survive); a shorter episode is returned whole. |
Responses
| Status | Description | Body |
|---|---|---|
200 | The episode payload. | EpisodeSeries |
404 | Resource not found (or hidden from the caller). | Problem |
409 | State conflict (duplicate handle/slug, wrong repo kind, terminal job, ...). | Problem |
PUT /v1/datasets/{owner}/{repo}/meta
Set dataset meta
Full replace of the dataset meta block on a dataset-kind repo (written by uploaders/workers). 409 problem if the repo kind is not dataset.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
owner | path | Handle | Repo owner handle (username or org slug). |
repo | path | Slug | Repo slug. |
Request body
| Field | Type | Description |
|---|---|---|
episode_count | integer | |
fps | number | null | |
robot_type | string | null | |
total_frames | integer |
Responses
| Status | Description | Body |
|---|---|---|
200 | Stored dataset meta. | DatasetMeta |
401 | Missing or invalid credentials. | Problem |
403 | Authenticated but not allowed (visibility, membership or scope). | Problem |
404 | Resource not found (or hidden from the caller). | Problem |
409 | State conflict (duplicate handle/slug, wrong repo kind, terminal job, ...). | Problem |
422 | Request failed validation. | Problem |
Schemas (9)
The schemas these operations reach before any other tag’s do. A type that links elsewhere is rendered on that tag’s page.
EpisodePage
| Field | Type | Description |
|---|---|---|
items | array of Episode | |
next_cursor | string | null |
FramesIndex
Where one episode's frames live, for range reads (v0 of the index — M6's parser fills it from the LeRobotDataset layout).
| Field | Type | Description |
|---|---|---|
episode_index | integer | |
fps | number | null | |
num_frames | integer | |
files | array of FrameFile |
EpisodeSeries
One episode, ready to play: video URLs plus decimated numeric channels on a shared time axis (seconds from episode start).
| Field | Type | Description |
|---|---|---|
episode_index | integer | |
fps | number | null | |
num_frames | integer | Frames in the episode (rows read from the data file). |
duration_s | number | null | |
tasks | array of string | |
sampled_points | integer | Samples returned per channel after decimation. |
downsample | string | How the series was reduced. |
channels | array of EpisodeChannel | |
points | array of EpisodeSeriesPoint | Flat |
videos | array of EpisodeVideo | |
warnings | array of string | Human-readable notes about what could not be produced (a camera with no file, a layout feature this version does not map). |
DatasetMetaPut
| Field | Type | Description |
|---|---|---|
episode_count | integer | |
fps | number | null | |
robot_type | string | null | |
total_frames | integer |
Episode
| Field | Type | Description |
|---|---|---|
index | integer | |
num_frames | integer | |
tasks | array of string | Natural-language task strings attached to the episode. |
FrameFile
| Field | Type | Description |
|---|---|---|
path | FilePath | |
role | string | What this file holds for the episode. |
format | string | null | File format hint (e.g. |
camera_key | string | null | Camera stream key for |
row_start | integer | null | First row of this episode inside a shared data file. |
row_end | integer | null | Exclusive end row of this episode inside a shared data file. |
EpisodeChannel
One plottable scalar track inside a vector feature.
| Field | Type | Description |
|---|---|---|
name | string | Channel label — the joint/motor name from |
group | string | Which feature family this channel came from. |
feature | string | Source feature key, e.g. |
index | integer | Position of this channel inside the feature vector. |
EpisodeSeriesPoint
One sample of one channel.
| Field | Type | Description |
|---|---|---|
t | number | Seconds from the start of the episode. |
name | string | Channel name (matches an |
value | number |
EpisodeVideo
One camera stream for this episode, ready to play.
| Field | Type | Description |
|---|---|---|
camera_key | string | Feature key of the camera, e.g. |
path | FilePath | |
url | string (uri) | Short-lived presigned GET for the video file. |
expires_at | string (date-time) | |
width | integer | null | |
height | integer | null |