Documentation/

Developer

Platform API

Generate augmented robotics datasets and train policies programmatically. Point us at a dataset, describe the change you want or the policies to train — we run it on our GPUs, stream you progress, and deliver a ready-to-train Parquet dataset or a trained checkpoint.

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

The same API trains policies: POST /v1/training_runs fine-tunes one or more LeRobot policies on managed GPUs, billed from the same credit balance. See Training runs for the full lifecycle.

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