Before you start
You need:- An API key with the
adminorrootrole inCHECKFU_API_KEY. - A service account for the Automation to run as (
RUNS_AS, aprin_…), and the person who authors it (AUTHOR, aprin_…). An API key is not a person, so a create through an API key names the author. - The Writer Agent (
WRITER_AGENT). - The Environment the Agent runs in (
ENVIRONMENT). When the Workspace has exactly one, delete theenvironment_idline and leave outENVIRONMENT. - A model routing profile with the key
fast-judge, or changeroute.profileto one you have.
Create the draft
Save the recipe as The draft is saved paused and unpublished.Keep the
outcomes.yaml. It is the published outcomes.yaml with created_by_principal_id added:outcomes.yaml
auto_… id it returns:Grant what it needs
The service account needs Each entry has a A grant that already exists answers
act_as on the Writer and use_model on the route. List what the draft needs and what is missing:status of granted or missing, the blocks that need it and a plain message. Grant a missing one with a PermissionAssignment:409.Test the draft
A test is a real run of the draft with a sample request. It starts real Sessions and lists them as its effects, but registers no trigger.
Publish
Publishing makes the draft the live version and returns the webhook URL and its signing secret. The secret is shown once; store it where your sender can sign with it.The summary says what publishing did, for example “Listens for signed webhooks at POST /v1/ingest/automations/auto_…”. Rotate the secret with
POST /v1/automations/{id}/webhook-secret.Run it and read the result
A signed webhook starts a run. You can also run the live version now with the same request:List the runs and their status:A run that passed ends
completed. A run whose third draft still failed ends as not passed, and the automation_run.completed webhook event carries result: "not_passed".Pause and resume
Pause stops webhooks from starting runs; a manual run still works. Resume turns triggers back on.Change it
Edit the document and replace the draft withPATCH /v1/automations/{id} and its expected_draft_revision, then test and publish again. Each run records the version it used, and checkfu automations versions $AUTOMATION lists them. See Automations for every block and field.