ENDPOINTS
POST | /api/nodes |
POST | /api/nodes/:id |
GET | /api/nodes/:id |
GET | /api/nodes |
DELETE | /api/nodes/:id |
A node is the fundamental unit of content in WorkFlowy. Each node represents a single bullet point that can contain text, have child nodes, and be organized hierarchically. Nodes can be expanded or collapsed, completed, tagged, and moved around to create flexible outlines and lists.
POST | /api/nodes |
POST | /api/nodes/:id |
GET | /api/nodes/:id |
GET | /api/nodes |
DELETE | /api/nodes/:id |
id string
Unique identifier of the node.
name string
The text content of the node. This is the main bullet text that appears in your outline.
note string | null
Additional note content for the node. Notes appear below the main text and can contain extended descriptions or details.
priority number
Sort order of the node among its siblings. Lower values appear first.
data.layoutMode string
Display mode of the node. Common values include "bullets"
(default), "todo"
, "h1"
, "h2"
, "h3"
.
createdAt number
Unix timestamp indicating when the node was created.
modifiedAt number
Unix timestamp indicating when the node was last modified.
completedAt number | null
Unix timestamp indicating when the node was completed. null
if the node is not completed.
{ "id": "6ed4b9ca-256c-bf2e-bd70-d8754237b505", "name": "This is a test outline for API examples", "note": null, "priority": 200, "data": { "layoutMode": "bullets" }, "createdAt": 1753120779, "modifiedAt": 1753120850, "completedAt": null }
parent_id string
Unique identifier of the parent node. Use "None"
to create a top-level node.
name string required
The text content of the new node.
note string
Additional note content for the node. Notes appear below the main text.
layoutMode string
The display mode of the node. Common values include "bullets"
(default), "todo"
, "h1"
, "h2"
, "h3"
.
position string
Where to place the new node. Options: "top"
(default) or "bottom"
.
POST /api/v1/nodes/
curl -X POST https://workflowy.com/api/v1/nodes/ \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [[YOUR_API_KEY]]" \ -d '{ "parent_id": "[[NODE_UUID]]", "name": "Hello API", "position": "top" }' | jq
{ "item_id": "5b401959-4740-4e1a-905a-62a961daa8c9" }
Updates the specified node by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
id string required
The identifier of the node to update.
name string
The text content of the node.
note string
The note content of the node.
layoutMode string
The display mode of the node.
POST /api/v1/nodes/:id
curl -X POST https://workflowy.com/api/v1/nodes/:id \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [[YOUR_API_KEY]]" \ -d '{ "name": "Updated node title" }' | jq
{ "status": "ok" }
Retrieves the details of an existing node. Supply the unique node ID and WorkFlowy will return the corresponding node information.
id string required
The identifier of the node to retrieve.
GET /api/v1/nodes/:id
curl -X GET https://workflowy.com/api/v1/nodes/:id \ -H "Authorization: Bearer [[YOUR_API_KEY]]" | jq
{ "node": { "id": "6ed4b9ca-256c-bf2e-bd70-d8754237b505", "name": "This is a test outline for API examples", "note": null, "priority": 200, "data": { "layoutMode": "bullets" }, "createdAt": 1753120779, "modifiedAt": 1753120850, "completedAt": null } }
Returns a list of child nodes for a given parent. The nodes are returned unordered - you need to sort them yourself based on the priority
field.
parent_id string
The identifier of the parent node. Use "None"
to list top-level nodes.
GET /api/v1/nodes
curl -G https://workflowy.com/api/v1/nodes \ -H "Authorization: Bearer [[YOUR_API_KEY]]" \ -d "parent_id=[[NODE_UUID]]" | jq
{ "nodes": [ { "id": "ee1ac4c4-775e-1983-ae98-a8eeb92b1aca", "name": "Bullet A", "note": null, "priority": 100, "data": { "layoutMode": "bullets" }, "createdAt": 1753120787, "modifiedAt": 1753120815, "completedAt": null } ] }
Permanently deletes a node. This cannot be undone.
id string required
The identifier of the node to delete.
DELETE /api/v1/nodes/:id
curl -X DELETE https://workflowy.com/api/v1/nodes/:id \ -H "Authorization: Bearer [[YOUR_API_KEY]]" | jq
{ "status": "ok" }
Marks a node as completed. This sets the completion timestamp and updates the node's status.
id string required
The identifier of the node to complete.
POST /api/v1/nodes/:id/complete
curl -X POST https://workflowy.com/api/v1/nodes/:id/complete \ -H "Authorization: Bearer [[YOUR_API_KEY]]" | jq
{ "status": "ok" }
Marks a node as not completed. This removes the completion timestamp and updates the node's status.
id string required
The identifier of the node to uncomplete.
POST /api/v1/nodes/:id/uncomplete
curl -X POST https://workflowy.com/api/v1/nodes/:id/uncomplete \ -H "Authorization: Bearer [[YOUR_API_KEY]]" | jq
{ "status": "ok" }