Create Workflow
Create a workflow from a typed graph of parse / classify / splitter / extract / validate nodes in a single atomic transaction
{name, description, nodes, edges} shape POST /v2/workflows/ accepts — node types, field types, and validation rules are documented in depth on the v2 create page and in Field types; the graph model itself did not change in v3.
A body that violates graph topology (e.g. no parse node, an orphaned extract node) is rejected with 400 TOPOLOGY_INVALID; detail.violations lists each broken rule with the offending node ids.
Fetch the stored graph back — with server-assigned persistent_ids on every field — via GET /v3/workflows/{workflow_id}/.
Authorizations
API key issued from app.anyformat.ai/api-key. Send as Authorization: Bearer <key>.
Body
Public-surface workflow create body — typed graph of parse / classify / splitter / extract / validate nodes.
A validate node carries rules; each rule is either AI-evaluated
(kind="ai" + a natural-language description) or deterministic
(kind="deterministic" + a structured check, evaluated in pure
Python with no model call).
Uses PublicNode (public request models with only the fields callers
may set); the domain AnyNode also carries filter (worker-only)
and executor-injected / staff-only fields, so the public bodies pin a
stricter node schema. Call :meth:to_domain before validating topology
or forwarding to the backend.
1"Invoice or receipt"
1- PublicParseNode
- ClassifyNode
- SplitterNode
- PublicExtractNode
- PublicValidateNode
- PublicIfElseNode
Response
Successful Response
Slim workflow projection returned by create and list.
Unique identifier of the workflow (hyphenated UUID).
"0686bb97-8c30-70f0-8000-97669e000eb8"
Human-readable name of the workflow.
"Invoice Processing"
Optional description of what this workflow extracts.
"A workflow for processing invoices and retrieving invoice details."
Timestamp when the workflow was created (ISO 8601).
Timestamp when the workflow was last modified (ISO 8601).
