POST /rollout

Sync → 200. Async → 202, poll GET /rollouts/{rollout_id}.

No /verify route — scoring happens inside rollout.

Request body
FieldTypeReqNotes
submission_modesync | asyncdefault sync
rollout_idstring
candidateobjectyesmutable field overlay
dataset_rowobjectyes*from /dataset/rows
policyRolloutPolicySpecyes
envobjectconfig, seed
metadataobject
json
{  "submission_mode": "sync",  "candidate": { "system_prompt": "..." },  "dataset_row": { "id": "train-1", "seed": 1 },  "policy": {    "provider": "openai",    "model": "gpt-4.1-nano",    "credential_mode": "byok"  }}
Response body
FieldTypeNotes
rollout_idstringrequired
trace_correlation_idstringrequired
statusstring
reward_info.outcome_rewardnumber
reward_info.detailsobject
traceobject
usageobject