https://github.com/karelklima/workflowy
WorkFlowy API for Deno and Node
https://github.com/karelklima/workflowy
api client workflowy
Last synced: 5 months ago
JSON representation
WorkFlowy API for Deno and Node
- Host: GitHub
- URL: https://github.com/karelklima/workflowy
- Owner: karelklima
- License: mit
- Created: 2023-05-05T07:07:11.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-08-10T15:41:55.000Z (10 months ago)
- Last Synced: 2025-08-10T16:06:20.960Z (10 months ago)
- Topics: api, client, workflowy
- Language: TypeScript
- Homepage: https://jsr.io/@workflowy/workflowy
- Size: 78.1 KB
- Stars: 45
- Watchers: 3
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# WorkFlowy API
This is a [WorkFlowy](https://workflowy.com) client for Deno and Node. The goal
of this library is to enable WorkFlowy power users to access WorkFlowy lists
programatically and perhaps create some new automations and integrations.
## Features
- Reading and updating WorkFlowy lists
- Export of lists to JSON or formatted plain text
- Basic search of items in lists
- Support for live copies (mirrors)
## Basic usage
### Authentication
In order to access WorkFlowy content, you need to provide your WorkFlowy
username and password. Authentication via one-time code or two-factor
authentication are not supported because of technical limitations of WorkFlowy
API.
### Fetching a WorkFlowy document
```typescript
import { WorkFlowy } from "workflowy";
// Log in with your username and password
const workflowy = new WorkFlowy("your@email.com", "your-password");
// Load WorkFlowy outline into an interactive document structure
const document = await workflowy.getDocument();
```
### Finding lists in a document
```typescript
const rootList = document.root;
const topLevelLists = document.items; // array of lists in the root
const myList = topLevelLists[0];
myList.findOne(/^Needle/); // Finds a sublist using a RegExp
myList.findAll(/^Needle/); // Finds all sublists using a RegExp
```
### Accessing basic list properties
```typescript
const rootList = document.root;
const myList = document.items[0];
myList.name; // name of the list
myList.note; // note of the list
myList.isCompleted; // whether or not the list or item is completed
myList.items; // items and sublists
```
### Editing lists
```typescript
myList.setName("New name").setNote("New note"); // sets a name and a note
const sublist = myList.createList(); // Creates a sublist
const subitem = myList.createItem(); // Alias for createList
myList.move(targetList); // moves a list or item to a different list
myList.delete(); // deletes the list
```
### Saving the changes to WorkFlowy
```typescript
if (document.isDirty()) {
// Saves the changes if there are any
await document.save();
}
```
## Installation
### From `npm` (Node/Bun)
```
npm install workflowy # npm
yarn add workflowy # yarn
bun add workflowy # bun
pnpm add workflowy # pnpm
```
### From `deno.land/x` (Deno)
Unlike Node, Deno relies on direct URL imports instead of a package manager like
NPM. The latest Deno version can be imported like so:
```typescript
import { WorkFlowy } from "https://deno.land/x/workflowy/mod.ts";
```
## Acknowledgements
Big thanks to [Mike Robertson](https://github.com/mikerobe) for providing the
`workflowy` NPM package name!
## License
MIT