Skip to main content
An augmentation takes an existing robotics dataset and produces new episodes with a visual change you describe in plain language — a different table surface, new lighting, a swapped background. You give Kite four things; it generates the episodes on its GPUs, streams you progress, and delivers a standard LeRobot dataset.

See it in action

Here is one real demonstration — a bimanual toast-plating task — re-rendered by Augment from a single instruction. Every camera of the episode is transformed together, and the robot’s motion and joint trajectories are preserved unchanged. Only the scene changes.
Prompt”Replace the white tabletop with warm walnut wood, keep the same lighting and objects.”
Original
Augmented

Original teleoperation capture versus the Augment render — same frame, same motion, new environment. One prompt produced all four camera views, each with matching joint trajectories ready to train on.

Create a run

One call starts a run. Give it the source dataset, your instructions, the episode count, and where the results should go.

Request body

string
required
The Hugging Face LeRobot dataset to augment, e.g. lerobot/pusht.
string
required
Plain-language description of the visual change to apply to every episode.
integer
required
Number of augmented episodes to generate. Must be between 1 and 50.
string
required
Where results are delivered. download keeps them on Kite for you to fetch; huggingface pushes the finished dataset to your account.
string
Required when output.type is huggingface — the destination repo, e.g. your-org/pusht-marble.
The call returns the augmentation resource, including its id, immediately:
Response — 202 Accepted
Common failures at create time:
  • 400 parameter_invalid — a malformed field, named in param
  • 400 episode_limit_exceededepisode_count above 50
  • 402 insufficient_tokens — not enough credits
  • 400 huggingface_not_connected — for huggingface output, when you haven’t linked a Hugging Face token in the dashboard
See Authentication → Errors for the envelope.

Idempotency

Pass a unique Idempotency-Key header to make retries safe. A repeated request with the same key returns the original run instead of starting a duplicate — so a dropped connection or a CI retry never double-charges you.
Reusing a key with a different payload returns 409 Conflict — the key is bound to the first request body it saw.

Track progress

Episodes are generated and saved incrementally. Poll the run to watch it move through its lifecycle, with a live progress value and a human-readable status_message.
The status field moves through:
Poll on an interval of a few seconds. Episodes are saved as they finish, so a long run’s progress moves steadily rather than jumping at the end.

Get your dataset

When status is succeeded, a download run exposes its files under output.files. Fetch each one, preserving its path, to reconstruct a standard LeRobot Parquet dataset on disk.
Response — output.files
The kite augment download CLI command does this for you — see the CLI docs. If you chose huggingface output instead, output.url links the dataset pushed to your account.
Each url is either a short-lived signed storage URL or an authenticated /v1/augmentations/:id/files/:path proxy path. Send your Authorization header when fetching and handle both — the proxy path needs the key; the signed URL ignores it.
The result is a standard LeRobot v3.0 dataset: Parquet tables for states and actions plus MP4 camera video. It’s the same format Kite training accepts, so you can train on it with no conversion. No proprietary output format, no lock-in.

Cancel a run

Stop a queued or processing run at any time. You’re only billed for episodes generated before cancellation.