API & developer
Forking prompts.
Every LLM call is a named, semver'd prompt. You can read it, edit it, and pin it.
Every machine stage in the pipeline runs a named prompt. extract_signals. draft_email. qualify. Each name has a current production version and a history of older versions you can read.
Reading a prompt
GET /prompts/extract_signals/versions/v0.9.4
{
"name": "extract_signals",
"version": "v0.9.4",
"model_default": "anthropic.claude-sonnet-4",
"system": "...",
"user_template": "...",
"evals_ref": "evalset_extract_signals_v0_9_x",
"shipped_at": "2026-03-12T00:00:00Z",
"diff_from_previous": "..."
}
Forking
Fork a prompt when the public version is right for most cases but wrong for yours. The fork lives in your workspace under extract_signals@yourworkspace. It can be pinned per pack, per campaign, or per run.
POST /prompts/extract_signals/fork
{ "from": "v0.9.4", "as": "v0.9.4-acme" }
Diff view
Every fork keeps a diff against its parent. The diff is what shows up in your audit log. Reviewers can see exactly what changed before approving a campaign that uses the fork. Field Notes publishes a walkthrough of v0.9 → v1.0 of extract_signals() using this exact view.