curl --request POST \
--url https://api.kiteml.com/v1/augmentations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"source": {
"repo_id": "<string>",
"type": "huggingface"
},
"instructions": "<string>",
"config": {
"episode_count": 3,
"variation_prompts": [
"<string>"
]
},
"output": {
"type": "download",
"repo_id": "<string>",
"private": true
},
"model": "<string>",
"webhook_metadata": {}
}
'import requests
url = "https://api.kiteml.com/v1/augmentations"
payload = {
"source": {
"repo_id": "<string>",
"type": "huggingface"
},
"instructions": "<string>",
"config": {
"episode_count": 3,
"variation_prompts": ["<string>"]
},
"output": {
"type": "download",
"repo_id": "<string>",
"private": True
},
"model": "<string>",
"webhook_metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source: {repo_id: '<string>', type: 'huggingface'},
instructions: '<string>',
config: {episode_count: 3, variation_prompts: ['<string>']},
output: {type: 'download', repo_id: '<string>', private: true},
model: '<string>',
webhook_metadata: {}
})
};
fetch('https://api.kiteml.com/v1/augmentations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kiteml.com/v1/augmentations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'source' => [
'repo_id' => '<string>',
'type' => 'huggingface'
],
'instructions' => '<string>',
'config' => [
'episode_count' => 3,
'variation_prompts' => [
'<string>'
]
],
'output' => [
'type' => 'download',
'repo_id' => '<string>',
'private' => true
],
'model' => '<string>',
'webhook_metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kiteml.com/v1/augmentations"
payload := strings.NewReader("{\n \"source\": {\n \"repo_id\": \"<string>\",\n \"type\": \"huggingface\"\n },\n \"instructions\": \"<string>\",\n \"config\": {\n \"episode_count\": 3,\n \"variation_prompts\": [\n \"<string>\"\n ]\n },\n \"output\": {\n \"type\": \"download\",\n \"repo_id\": \"<string>\",\n \"private\": true\n },\n \"model\": \"<string>\",\n \"webhook_metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.kiteml.com/v1/augmentations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"source\": {\n \"repo_id\": \"<string>\",\n \"type\": \"huggingface\"\n },\n \"instructions\": \"<string>\",\n \"config\": {\n \"episode_count\": 3,\n \"variation_prompts\": [\n \"<string>\"\n ]\n },\n \"output\": {\n \"type\": \"download\",\n \"repo_id\": \"<string>\",\n \"private\": true\n },\n \"model\": \"<string>\",\n \"webhook_metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kiteml.com/v1/augmentations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source\": {\n \"repo_id\": \"<string>\",\n \"type\": \"huggingface\"\n },\n \"instructions\": \"<string>\",\n \"config\": {\n \"episode_count\": 3,\n \"variation_prompts\": [\n \"<string>\"\n ]\n },\n \"output\": {\n \"type\": \"download\",\n \"repo_id\": \"<string>\",\n \"private\": true\n },\n \"model\": \"<string>\",\n \"webhook_metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"config": {
"episode_count": 3
},
"created_at": "2026-09-27T01:00:00+00:00",
"id": "aug_01K62QZ8V4X9C3N7M5T2R8W6HB",
"instructions": "Make the table dark walnut and the light warm",
"model": "omni",
"object": "augmentation",
"output": {
"files": [
{
"bytes": 3186,
"path": "meta/info.json",
"url": "https://storage.googleapis.com/kite-augment/augment/meta/info.json?X-Goog-Signature=abc"
}
],
"type": "download"
},
"progress": 1,
"source": {
"repo_id": "lerobot/svla_so101_pickplace",
"type": "huggingface"
},
"status": "succeeded",
"status_message": "Output published",
"tokens": {
"charged": 32670
},
"webhook_metadata": {
"ref": "run-42"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}Create Augmentation
curl --request POST \
--url https://api.kiteml.com/v1/augmentations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"source": {
"repo_id": "<string>",
"type": "huggingface"
},
"instructions": "<string>",
"config": {
"episode_count": 3,
"variation_prompts": [
"<string>"
]
},
"output": {
"type": "download",
"repo_id": "<string>",
"private": true
},
"model": "<string>",
"webhook_metadata": {}
}
'import requests
url = "https://api.kiteml.com/v1/augmentations"
payload = {
"source": {
"repo_id": "<string>",
"type": "huggingface"
},
"instructions": "<string>",
"config": {
"episode_count": 3,
"variation_prompts": ["<string>"]
},
"output": {
"type": "download",
"repo_id": "<string>",
"private": True
},
"model": "<string>",
"webhook_metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source: {repo_id: '<string>', type: 'huggingface'},
instructions: '<string>',
config: {episode_count: 3, variation_prompts: ['<string>']},
output: {type: 'download', repo_id: '<string>', private: true},
model: '<string>',
webhook_metadata: {}
})
};
fetch('https://api.kiteml.com/v1/augmentations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kiteml.com/v1/augmentations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'source' => [
'repo_id' => '<string>',
'type' => 'huggingface'
],
'instructions' => '<string>',
'config' => [
'episode_count' => 3,
'variation_prompts' => [
'<string>'
]
],
'output' => [
'type' => 'download',
'repo_id' => '<string>',
'private' => true
],
'model' => '<string>',
'webhook_metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kiteml.com/v1/augmentations"
payload := strings.NewReader("{\n \"source\": {\n \"repo_id\": \"<string>\",\n \"type\": \"huggingface\"\n },\n \"instructions\": \"<string>\",\n \"config\": {\n \"episode_count\": 3,\n \"variation_prompts\": [\n \"<string>\"\n ]\n },\n \"output\": {\n \"type\": \"download\",\n \"repo_id\": \"<string>\",\n \"private\": true\n },\n \"model\": \"<string>\",\n \"webhook_metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.kiteml.com/v1/augmentations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"source\": {\n \"repo_id\": \"<string>\",\n \"type\": \"huggingface\"\n },\n \"instructions\": \"<string>\",\n \"config\": {\n \"episode_count\": 3,\n \"variation_prompts\": [\n \"<string>\"\n ]\n },\n \"output\": {\n \"type\": \"download\",\n \"repo_id\": \"<string>\",\n \"private\": true\n },\n \"model\": \"<string>\",\n \"webhook_metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kiteml.com/v1/augmentations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source\": {\n \"repo_id\": \"<string>\",\n \"type\": \"huggingface\"\n },\n \"instructions\": \"<string>\",\n \"config\": {\n \"episode_count\": 3,\n \"variation_prompts\": [\n \"<string>\"\n ]\n },\n \"output\": {\n \"type\": \"download\",\n \"repo_id\": \"<string>\",\n \"private\": true\n },\n \"model\": \"<string>\",\n \"webhook_metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"config": {
"episode_count": 3
},
"created_at": "2026-09-27T01:00:00+00:00",
"id": "aug_01K62QZ8V4X9C3N7M5T2R8W6HB",
"instructions": "Make the table dark walnut and the light warm",
"model": "omni",
"object": "augmentation",
"output": {
"files": [
{
"bytes": 3186,
"path": "meta/info.json",
"url": "https://storage.googleapis.com/kite-augment/augment/meta/info.json?X-Goog-Signature=abc"
}
],
"type": "download"
},
"progress": 1,
"source": {
"repo_id": "lerobot/svla_so101_pickplace",
"type": "huggingface"
},
"status": "succeeded",
"status_message": "Output published",
"tokens": {
"charged": 32670
},
"webhook_metadata": {
"ref": "run-42"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"request_id": "<string>",
"details": {}
}
}Authorizations
A Kite API key (kite_...), from Platform API → Keys in the dashboard.
Headers
255The dated contract your code was written against. Without it you get 2026-09-27; every response says which version served it.
2026-09-27 Body
Show child attributes
Show child attributes
3 - 2000Show child attributes
Show child attributes
Show child attributes
Show child attributes
Augmentation model (default 'omni')
Opaque metadata echoed on the resource and future webhook events
Response
The augmentation, processing
One augmentation: new episodes generated from a Hugging Face LeRobot dataset, keeping its motion.
aug_ + a time-ordered ULID
processing, succeeded, failed, canceled Of the current phase (import, generate, publish): it starts again from 0 at each
0 <= x <= 1omni
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Where the episodes go, as given at create
- AugmentationHuggingFaceOutput
- AugmentationDownloadOutput
Show child attributes
Show child attributes
Show child attributes
Show child attributes
augmentation "augmentation"What it is doing now, or the last thing it did
Set when failed
Show child attributes
Show child attributes