A flow is a list of steps with depends_on edges. Independent steps run in parallel, a
human_gate pauses the run until someone weighs in, and the single is_output step becomes the answer.
Every step is a normal, billed, logged model call.
A model call. agent_config is a saved persona slug, an inline {species_name, system_prompt, temperature, max_tokens},
or a slug with overrides layered on top. Prompts are templated.
Pauses the run. context is resolved and shown to a person; their human_input comes back through
POST /v2/flows/runs/{run}/resume and is available to later steps.
A compile-time macro: count rounds of an inner step group — a rebuttal loop, a refine loop — expanded into ordinary
steps with repeat.prev / repeat.cur references. Capped platform-wide.
Two steps with no edge between them run concurrently through one parallel pipeline call. The validator rejects cycles, unknown dependencies and missing or duplicate output steps before a run ever starts.
Any agent_call can declare tool_budget: N — up to N bounded rounds of a real, cited web search before the
step must answer. Every round is a real billed call, hard-capped at N+1.
/v2/flows and /v2/agent-configs are CRUD. Editing a spec bumps its version; in-flight runs keep their snapshot.
Flows are owned by your account and public unless you mark them private.
The two hot agents have no edge between them, so they run in parallel. The gate waits for both, shows them to a person, and the synthesizer gets everything — including the human's note.
Templates resolve against input.* and any completed step's output.content or
human_input.*. A referenced token that isn't in context fails the run loudly rather than substituting an empty
string. Each step's output.meta.call_id and price are on the run, and total_cost_usd sums them.
The client portal includes a graphical editor for exactly this spec: drop agent, gate and repeat nodes, draw the dependencies, write the prompt templates, pick a persona per step. It validates with the same rules the API does, saves to your account's flow definitions, and can start a test run and show each step completing.
Whatever you build there is a plain spec you can also fetch from GET /v2/flows/{slug} and
version in your own repo.
| kind | What it does | Billed? |
|---|---|---|
| agent_call | One model call; may carry tool_budget for web search rounds | Yes, per call |
| human_gate | Pauses the run until /resume supplies human_input | No |
| repeat | Expands count rounds of inner steps at compile time | Per expanded call |
| tool_call | Reserved — recognised by the spec, rejected by the engine for now | — |
No, by design. Every run and resume returns 202 immediately and a queue worker executes the graph. Poll
GET /v2/flows/runs/{run} — use ?verbosity=compact for a progress indicator without the content.
Per step. Each agent_call goes through the same pipeline as /v1/chat, with its own call_id and
meta.price; the run carries total_cost_usd. Human gates cost nothing while they wait.
Paying accounts can hold 10 active flow definitions by default; deactivating one frees a slot. Ad-hoc, unsaved specs passed inline to
POST /v2/flows/run don't count against it.
A flow you create is owned by your account and public unless you set is_public: false. A private flow is invisible and
un-runnable to everyone else — its existence is never leaked. Only the owner can edit or delete, public or not.
Free to sign up — you only pay when you top up. No card required to get your first key.