Get a campaign
Authorizations
Either a Supabase user access token (from a password login, or the passwordless magic-link flow) or a long-lived forge_sk_… API key. Both are sent as Authorization: Bearer <value> and resolve to the same owner, so every endpoint accepts either. Session tokens expire in ~1h; API keys do not expire and are the credential for MCP clients, CI, and partner integrations.
Path Parameters
"camp_1f2e3d4c5b6a"
Response
The campaign
A Dataset Workbench campaign (owner view): one walk of the augmentation spine over one source dataset. stage is the FURTHEST stage reached and never rolls back. Internal bookkeeping (owner, dataset/cache locations) is never surfaced. The set of already-billed episodes is tracked server-side but not exposed here, the deliver response reports how many episodes each delivery billed.
"camp_1f2e3d4c5b6a"
Display name, the repo's last path segment, the sample's label, or the upload's campaign_name.
The source dataset: a Hugging Face repo id, or the upload's name for uploaded datasets.
The augmentation engine (embodiment + pipeline) this campaign runs on.
Furthest stage reached on the spine (monotonic).
source, sample, transform, run, deliver Episode count of the SOURCE dataset.
The dataset health report once computed (null before): episode count, detected classes ({class: count}), the active target_class + class_column, arm_split, release stats, the eligible_pool, exclusions, and a motion-envelope p99_summary.
Health lifecycle. failed carries no report; re-POST …/health to retry.
idle, computing, ready, failed The saved sample (null until POST …/sample): the selected SOURCE episodes the transforms operate on.
The saved transformation plan (null until POST …/plan).
Run job ids, oldest first. Poll each at GET /api/aug/jobs/{job_id}.
Per-episode human verdicts, keyed by episode name: { verdict: confirm|overrule, by, at, note? }. Unreviewed episodes trust the machine gate verdict.
Delivery state (null until POST …/deliver): status walks exporting → exported (→ publishing → published when a target_repo was given) or failed (with error), plus export_dir, count, the exported episodes, per-families counts, a format_note, and timestamps.
sample, upload, or remote_uri (imported from S3/GCS/Azure/https via source_uri); absent for a plain Hugging Face repo campaign.
Where the dataset came from, e.g. { source: sample, sample_id, opened_utc } or { source: upload, upload_id, manifest_sha, files, layout_notes, ingested_utc }.
Per-campaign target-class override chosen via POST …/target (absent = the engine default).
Computed render spend across the campaign's runs.
Cumulative per-head accept/reject yield across the campaign's prior runs ({head episode: {accepted, rejected}}), the learned-yield seed a top-up run carries forward.

