We’ve got several API endpoints going:
/api/beta/get-item/
/api/beta/list-children/
/api/beta/complete-item/
/api/beta/uncomplete-item/
/api/beta/create-item/
/api/beta/edit-item/
/api/beta/delete-item/
If you are interested in WorkFlowy having an API, please try to build what you want using this API.
Please show me examples of your own code, in the language you prefer — show me how you interact or how you want to interact with the API, where the API works and where it’s falling short.
Even if you can’t build what you want with the current API — show me how you imagine the code would look like in the ideal world.
Your API key can be found here: https://beta.workflowy.com/api-key/.
UUIDs of the items (nodes) can be found by inspecting the DOM:
Examples
All examples were executed against this outline:
Get an item details
curl -X POST https://beta.workflowy.com/api/beta/get-item/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"item_id": "<UUID_OF_AN_ITEM>"}' | jq
{
"item": {
"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
}
}
Get children of your Home (Root) item
curl -X POST https://beta.workflowy.com/api/beta/list-children/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"item_id": "None"}' | jq
{
"items": [
// ...
]
}
Get children of an item
curl -X POST https://beta.workflowy.com/api/beta/list-children/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"item_id": "<UUID_OF_AN_ITEM>"}' | jq
{
"items": [
{
"id": "ee1ac4c4-775e-1983-ae98-a8eeb92b1aca",
"name": "Bullet A",
"note": null,
"priority": 100,
"data": {
"layoutMode": "bullets"
},
"createdAt": 1753120787,
"modifiedAt": 1753120815,
"completedAt": null
},
{
"id": "967ae17d-33d5-31d9-4c6a-0c191001e74a",
"name": "Bullet B",
"note": null,
"priority": 200,
"data": {
"layoutMode": "bullets"
},
"createdAt": 1753120789,
"modifiedAt": 1753120817,
"completedAt": null
},
{
"id": "17d78cb4-8c38-d400-d626-308f438ad7d3",
"name": "Completed",
"note": null,
"priority": 350,
"data": {
"layoutMode": "bullets"
},
"createdAt": 1753120845,
"modifiedAt": 1753120850,
"completedAt": 1753120846
},
{
"id": "88729243-d7bd-a57e-a3f5-d676ad0f7e2b",
"name": "Paragraph",
"note": null,
"priority": 500,
"data": {
"layoutMode": "p"
},
"createdAt": 1753120822,
"modifiedAt": 1753120825,
"completedAt": null
},
{
"id": "73c34c19-81bf-e6c7-fe3c-6b944888ff78",
"name": "H3 ",
"note": null,
"priority": 600,
"data": {
"layoutMode": "h3"
},
"createdAt": 1753120825,
"modifiedAt": 1753120833,
"completedAt": null
},
{
"id": "d5d6ca34-70c6-fa48-cb95-629bd6b2e333",
"name": "Bullet C ",
"note": null,
"priority": 300,
"data": {
"layoutMode": "bullets"
},
"createdAt": 1753120790,
"modifiedAt": 1753120821,
"completedAt": null
},
{
"id": "30bf0f45-4f2a-b0e5-8a70-10acf59be645",
"name": "Task",
"note": null,
"priority": 400,
"data": {
"layoutMode": "todo"
},
"createdAt": 1753120799,
"modifiedAt": 1753120822,
"completedAt": null
}
]
}
NOTE: The list isn’t ordered, you need to order it yourself based on the priority field.
Complete an item
curl -X POST https://beta.workflowy.com/api/beta/complete-item/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"item_id": "<UUID_OF_AN_ITEM>"}' | jq
{
"status": "ok"
}
Un-complete an item
curl -X POST https://beta.workflowy.com/api/beta/uncomplete-item/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"item_id": "<UUID_OF_AN_ITEM>"}' | jq
{
"status": "ok"
}
Add a child to the top of an item
curl -X POST https://beta.workflowy.com/api/beta/create-item/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"parent_id": "<UUID_OF_AN_ITEM>", "name": "Hello API", "position": "top"}' | jq
{
"item_id": "5b401959-4740-4e1a-905a-62a961daa8c9"
}
Add a child to the bottom of an item
curl -X POST https://beta.workflowy.com/api/beta/create-item/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"parent_id": "<UUID_OF_AN_ITEM>", "name": "Hello API", "position": "bottom"}' | jq
{
"item_id": "5b401959-4740-4e1a-905a-62a961daa8c9"
}
Edit an existing item
curl -X POST https://beta.workflowy.com/api/beta/edit-item/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"item_id": "<UUID_OF_AN_ITEM>", "name": "New Name"}' | jq
{
"status": "ok"
}
Delete an item
curl -X POST https://beta.workflowy.com/api/beta/delete-item/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"item_id": "<UUID_OF_AN_ITEM>"}' | jq
{
"status": "ok"
}

