Skip to main content
The Kite Platform API lets you run the platform programmatically. Today that means two things: generating augmented robotics datasets, and training policies on managed GPUs. Point Kite at a dataset, say what you want, and Kite does the work on its GPUs and delivers a ready-to-train dataset or a trained policy.

Base URL

All requests go to:
Every request is authenticated with an API key sent as a Bearer token. See Authentication.

What you can run

There’s no infrastructure to manage. Both resources run on Kite’s GPUs and deliver standard LeRobot artifacts.
1

Augmentations

Point Kite at a LeRobot dataset, describe a visual change in plain language, and get back new episodes with the robot’s motion preserved. See Augmentations.
2

Training runs

Point Kite at a LeRobot dataset, pick your policies and a GPU tier, and get back trained checkpoints. See Training runs.

Asynchronous by design

Runs are asynchronous. Creating one returns immediately with an id; you then poll it as it progresses through processing → succeeded, or register a webhook and skip polling. failed and canceled are the other terminal states. Every resource shares that status vocabulary, and GET /v1/operations/:id reports it uniformly for any id — so one polling loop handles them all. A completed augmentation gives you a standard LeRobot dataset: Parquet tables for states and actions plus MP4 camera video. A completed training run gives you a standard LeRobot policy checkpoint. Neither is a proprietary format.

Conventions

Full request and response schemas are published as OpenAPI at https://api.kiteml.com/v1/openapi.json, rendered at /v1/docs.
  • JSON everywhere. Requests and responses are application/json unless noted.
  • Resource ids are prefixed — an augmentation is aug_…, a training run is trn_…, an API key is key_… — so they’re easy to recognize in logs.
  • Timestamps are ISO 8601 in UTC (e.g. 2026-07-21T09:14:00Z).
  • Idempotency is supported on run creation via an Idempotency-Key header — see Augmentations and Training runs.
  • Lists are cursor-paginated — pass the response’s next_cursor back as after, and stop when has_more is false. There is no offset paging.