I’ve seen that the export call has a 1 minute rate limit, which is helpful. But I don’t see anywhere documented what the other limits are. Specially if I want to create a bunch of items or do other operations it would be extremely helpful to know which endpoint has how many requests per what time frame before triggering the rate limit. This way I can already code my application to follow those limits and not just hit it then retry forever.
I’ve done some gentle testing. From what I see happening my conclusion is as follows:
The WorkFlowy API uses a bucket-based rate limit:
- Each **bucket** is **60 seconds** long.
- Within a bucket, you can make **60 requests**.
- If you exceed the limit, the API returns **HTTP 429** with a message indicating how long until the current bucket resets and you can make requests again. Like this: {“error”: “Rate limit exceeded”, “retry_after”: 31}
- Because buckets are fixed time windows (not sliding windows), up to **120 requests** can succeed within ~20 seconds if timed across a bucket boundary — 60 at the end of one bucket plus 60 at the start of the next.
- The `/nodes-export` endpoint has a stricter limit of **1 request per bucket**.
All endpoints share this rate limit.
Maybe someone can official confirm this or not, this is just my best guess from about 500 requests I made over the last 2 hours.