Documentation/

Developer

Platform API

Generate augmented robotics datasets programmatically. Point us at a dataset, describe the change you want, choose how many episodes — we generate them, stream you progress, and deliver a ready-to-train Parquet dataset.

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.

Note

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:

Terminal
# 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).

Terminal
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:

Response — 202 Accepted
{
  "id": "aug_01J8X4M2K9ZQ6R7T3V5W8Y0B1C",
  "object": "augmentation",
  "status": "queued",
  "progress": 0.0,
  "output": { "type": "download" },
  "created_at": "2026-07-21T09:14:00Z"
}
Tip

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:

Terminal
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:

Response — output.files
"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.

Note

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

MethodPathDescription
POST/v1/augmentationsStart a run (source, instructions, config, output)
GET/v1/augmentations/:idStatus, progress, and (when done) output files
GET/v1/augmentationsList your runs
POST/v1/augmentations/:id/cancelCancel a running augmentation
POST/v1/webhook_endpointsRegister a webhook for run events
GET/v1/usageToken usage and credit balance

Full request/response schemas are published as OpenAPI at https://api.kiteml.com/v1/openapi.json (rendered at /v1/docs).

Built for the team you're becoming.

Start free, scale when you need to — or partner with us as a startup.

Basic

Start building with Kite.

Free
  • 1 project
  • Limited compute credits
Sign up
For startups

Startups

Tailored to your stack and your data.

Custom
  • Unlimited projects
  • Compute on demand
  • Forward deployed engineers

Pro

Scale to production with cloud GPUs.

$100/ user / month
  • Unlimited projects
  • Generous compute credits
Subscribe now