Fluorite
HTTP API

Workflows

Fetch a workflow's live-draft embed payload.

Get a workflow

GET /api/v1/workflows/:id

Returns the workflow's current saved graph and texture assets — the live draft, not a published version. The id is the capability; no authentication is required.

curl https://fluorite.studio/api/v1/workflows/<id>

Response

{
  "id": "…",
  "name": "My workflow",
  "schemaVersion": 1,
  "updatedAt": "2026-08-26T12:00:00.000Z",
  "graph": {
    "nodes": [{ "id": "…", "type": "registryNode", "data": {} }],
    "edges": [
      {
        "id": "…",
        "source": "…",
        "sourceHandle": null,
        "target": "…",
        "targetHandle": "color"
      }
    ]
  },
  "assets": [{ "id": "textures/…", "url": "https://…/api/get-texture?path=…" }]
}
FieldTypeDescription
idstringWorkflow id
namestringWorkflow name
schemaVersion1The frozen wire-schema version; clients refuse unknown versions
updatedAtstringISO timestamp of the last save; the ETag derives from it
graph.nodesarray{ id, type?, data } per node
graph.edgesarray{ id, source, sourceHandle?, target, targetHandle? } per edge
assetsarray{ id, url } per texture — absolute URLs served via the proxy

Conditional requests

Responses carry an ETag. Replay it as If-None-Match to get a bodyless 304 Not Modified when the workflow hasn't been saved since:

curl -H 'If-None-Match: "1724666400000"' \
  https://fluorite.studio/api/v1/workflows/<id>

Errors

StatusMeaning
404No workflow with that id
413Workflow too large (more than 2000 nodes)
422The stored graph is malformed

On this page