OpenAPI 3.1 is the canonical surface
The public schema includes request and response models, operation IDs, prerequisites, idempotency behavior, durable resource states, and recovery notes. Internal control-plane routes are excluded.
Open/v1/openapi.json Request conventions
https://<your-lizzy-host>/v1Authorization: Bearer <token>Idempotency-Key on creating POST requestsdata, has_more, and next_cursorCore endpoint inventory
/v1/distill/loopsCreate the boundary for one optimization journey.
/v1/distill/callsList captured call metadata.
/v1/distill/datasetsCreate a mutable dataset definition.
/v1/distill/datasets/{dataset_id}/versionsFreeze an immutable version.
/v1/distill/rewards/{reward_id}/testEvaluate a reward on supplied or captured examples.
/v1/distill/recipes/proposePropose a scoped recipe without starting compute.
/v1/distill/runsStart a dry or approval-gated live run.
/v1/distill/reports/{report_id}Read evaluation evidence.
/v1/distill/deploymentsCreate a staged rollout proposal.
For exhaustive fields and routes, use the OpenAPI document rather than copying this overview.
Durable asynchronous resources
Dataset versions, uploads, connector pulls, runs, deployments, and sandbox replay can outlive a request. Store the returned ID, poll the resource endpoint with bounded backoff, and stop at its documented terminal state.
for (let attempt = 0; attempt < 20; attempt++) {
const resource = await get("/v1/distill/runs/<run_id>");
if (["succeeded", "failed", "canceled"].includes(resource.status)) return resource;
await new Promise((resolve) => setTimeout(resolve, Math.min(1_000 * 2 ** attempt, 10_000)));
}
throw new Error("Watch window ended; keep the run ID and resume later.");