Skip to main content
◆ FORGE · API walkthrough
This walks the whole spine against the curated sample dataset: no upload needed. Everything below also works with your own uploaded dataset.
Auth: every call takes Authorization: Bearer <access token>: your Supabase session token from a signed-in forge session. Anonymous calls get 401. (Scoped forge API keys are on the roadmap; today the session token is the credential.)
1

Open the sample as your campaign

Campaigns are per-account: another user’s campaign ids read as 404 for you.
2

Read the campaign and its episodes

Per-episode media for your own tooling: …/episodes/{ep}/preview.png, …/episodes/{ep}/video/{top|left|right}.mp4, …/episodes/{ep}/actions.json (native actions + grasp/splice/place annotations).
3

Render one counterfactual (the playground's precise path)

POST a partner record verbatim as an explicit pair: it replaces the sample/plan requirement while keeping every verification gate:
4

Review

Verdicts exist only for graded episodes (machine accept/reject; ungraded returns 409):
confirm keeps a machine-accept; overrule flips the machine (keeping a reject, or dropping an accept). Reviewing is free.
5

Deliver: the billed step

1 credit per kept episode entering the export, each episode bills once, ever; re-delivering after new keeps charges only the additions. The 402 detail starts with insufficient_credits:need=N and appends the two top-up pointers in full — checkout=/api/billing/credits/checkout and packs=/api/billing/credits/packs — so a headless client can go buy credits without a UI. Then:
The archive is the augmented dataset (LeRobot layout) with a verification certificate per episode.
Uploads of your own datasets go through chunked, resumable /api/workbench/uploads/* endpoints: the workbench UI drives them for you. If you need the raw protocol for automation, it’s in the API reference.