Skip to main content
POST
Create Run

Authorizations

Authorization
string
header
required

A Kite API key (kite_...), from Platform API → Keys in the dashboard.

Headers

Idempotency-Key
string | null
Maximum string length: 255
Kite-Version
enum<string>
default:2026-09-27

The dated contract your code was written against. Without it you get 2026-09-27; every response says which version served it.

Available options:
2026-09-27

Body

application/json

Train a policy. Only robot and task.objective are required.

robot
string
required

See GET /v1/rl_runs/catalog

task
RlTask · object
required

What to learn.

engine
string | null

The dated trainer to use (default: the latest, or the parent's for a fork or continue of your run). A run keeps its engine

budget
RlBudget · object
seeds
default:1

A count (1-5) or explicit seeds: one run per seed, sharing a group_id

from
RlFrom · object | null

Start from another policy instead of from scratch.

outputs
RlOutputs · object

Extras beyond what every run produces (ONNX, the checkpoint, the scene, one clip, the report).

hardware_tier
string | null

See GET /v1/rl_runs/catalog (default gcp_gpu_l4)

visibility
enum<string>
default:private

public lists the run in the policy catalog once it finishes with a pass verdict

Available options:
private,
public
title
string | null
Maximum string length: 120
description
string | null

What the behavior should look like; the report's judge compares the clip against it

Maximum string length: 2000
metadata
Metadata · object

Your labels, echoed on the run

webhook_metadata
Webhook Metadata · object | null

Echoed on the run and its events

Response

One run per seed, queued

data
RlRun · object[]
required
has_more
boolean
required
object
enum<string>
default:list
Available options:
list
Allowed value: "list"
next_cursor
string | null