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).
Defined as a thin subclass so the FastAPI-generated OpenAPI components
entry is named WorkflowCreateRequest (FastAPI uses the model's
__name__). Behaviour is fully inherited from
WorkflowDefinition in anyformat.workflow.
1"Invoice or receipt"
1- ParseNode
- ClassifyNode
- SplitterNode
- ExtractNode
- ValidateNode
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).
