How it works
How it works
You provide four things; Kite does the rest. There is no infrastructure to manage — generation runs on our GPUs, episodes are produced in parallel, and the finished dataset is delivered in standard LeRobot Parquet format, ready to train on.
1. Dataset
A Hugging Face LeRobot dataset to augment, e.g. lerobot/pusht.
2. Prompt
Plain-language instruction — the visual change to apply to every episode.
3. Episodes
How many augmented episodes to generate (1–50 per run).
4. Destination
Kite-hosted (download the Parquet files) or push to your own Hugging Face repo.
Augmentations run asynchronously. Creating one returns immediately with an id; you poll it or receive a webhook as it progresses. A completed run gives you a standard LeRobot dataset (Parquet tables + MP4 video) you can train on directly.
Connect
Connect
The Platform API lives at https://api.kiteml.com/v1. Authenticate every request with an API key (see API Keys) as a Bearer token. Create a key scoped to augmentations:
# Create a scoped key from the dashboard (Platform API > API keys),
# or via the API, then export it:
export KITE_API_KEY=kite_aBcDeFgH...
# Verify it works:
curl https://api.kiteml.com/v1/keys/me \
-H "Authorization: Bearer $KITE_API_KEY"Run an augmentation
Run an augmentation
One call starts a run. Give it the source dataset, your prompt, the episode count, and where the results should go (download keeps them on Kite for you to fetch; huggingface pushes to your account).
curl -X POST https://api.kiteml.com/v1/augmentations \
-H "Authorization: Bearer $KITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": { "repo_id": "lerobot/pusht" },
"instructions": "change the table surface to white marble, vary the lighting",
"config": { "episode_count": 100 },
"output": { "type": "download" }
}'You get back the augmentation resource, including its id, immediately:
{
"id": "aug_01J8X4M2K9ZQ6R7T3V5W8Y0B1C",
"object": "augmentation",
"status": "queued",
"progress": 0.0,
"output": { "type": "download" },
"created_at": "2026-07-21T09:14:00Z"
}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.
Track progress
Track progress
Episodes are generated and saved incrementally. Poll the run to watch it move through queued → processing → succeeded, with a live progress value and a human-readable status message:
curl https://api.kiteml.com/v1/augmentations/aug_01J8X4... \
-H "Authorization: Bearer $KITE_API_KEY"
# { "status": "processing", "progress": 0.42,
# "status_message": "Generated 42 of 100 videos" }For long runs, register a webhook instead of polling — Kite sends a signed augmentation.completed (or .failed) event to your URL when the run finishes. Every event is also readable at GET /v1/events, so polling is always a fallback.
Get your dataset
Get your dataset
When status is succeeded, a download run exposes its files. Fetch each one, preserving its path, to reconstruct a standard LeRobot Parquet dataset on disk:
"output": {
"type": "download",
"files": [
{ "path": "meta/info.json", "bytes": 3186, "url": "https://..." },
{ "path": "data/chunk-000/file-000.parquet", "bytes": 16457, "url": "https://..." },
{ "path": "videos/chunk-000/observation.images.cam/episode_000000.mp4", "url": "https://..." }
]
}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.
The result is a standard LeRobot v3.0 dataset: Parquet tables for states/actions plus MP4 camera video — the same format Kite training accepts, so you can train on it with no conversion.
API reference
API reference
| Method | Path | Description |
|---|---|---|
| POST | /v1/augmentations | Start a run (source, instructions, config, output) |
| GET | /v1/augmentations/:id | Status, progress, and (when done) output files |
| GET | /v1/augmentations | List your runs |
| POST | /v1/augmentations/:id/cancel | Cancel a running augmentation |
| POST | /v1/webhook_endpoints | Register a webhook for run events |
| GET | /v1/usage | Token usage and credit balance |
Full request/response schemas are published as OpenAPI at https://api.kiteml.com/v1/openapi.json (rendered at /v1/docs).