Build on your notepads
A REST API for reading and writing your notepads.
Handy for scripts, agents, and integrations.
Authentication
Every request is authenticated with a personal access token, sent as a bearer token. Generate one from Account → API Tokens while logged in - the plaintext token is shown once, so store it somewhere safe.
Authorization: Bearer <your-token>
Tokens are scoped to two abilities: notepads:read and notepads:write. Every token created from your account gets both. The API only ever reads or writes notepads the token's owning user actually owns - not notepads shared with them by someone else.
Base URL
https://rnote.org/api/v1
Rate limits
Requests are limited to 60 per minute per token. If you go over, you'll get a 429 Too Many Requests response.
Endpoints
List your notepads.
Requires ability: notepads:read
Example request
curl https://rnote.org/api/v1/notepads \
-H "Authorization: Bearer <your-token>"
Example response
{
"status": "success",
"notepads": [
{
"uid": "8f2c1a3e-...",
"title": "Groceries",
"type": 1,
"color": "#0d42dd",
"updated_at": "2026-07-29T09:12:03+00:00"
}
]
}
Fetch a single notepad, including its content.
Requires ability: notepads:read
Example request
curl https://rnote.org/api/v1/notepads/8f2c1a3e-... \
-H "Authorization: Bearer <your-token>"
Example response
{
"status": "success",
"uid": "8f2c1a3e-...",
"title": "Groceries",
"content": "- Milk\n- Eggs\n- Bread",
"type": 1,
"markdown_view": 1,
"color": "#0d42dd",
"archived": false,
"order": 1,
"updated_at": "2026-07-29T09:12:03+00:00"
}
Not found
// 404
{
"status": "error",
"message": "Notepad not found"
}
Create a new notepad.
Requires ability: notepads:write
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
title | string, max 255 | No | Defaults to a generated name like "New 3". |
type | integer | No | 1 = plain text, 2 = Markdown, 3 = rich text (HTML). Defaults to 1. |
content | string | No | Defaults to empty. For type 3, this is HTML and is sanitized on save (a safe subset of formatting tags is kept; scripts, styles, images and event handlers are stripped). |
Example request
curl https://rnote.org/api/v1/notepads \
-X POST \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{"title": "Trip planning", "type": 2, "content": "# Trip\n\n- [ ] Book flights"}'
Example response
// 201
{
"status": "success",
"uid": "3b91d0c4-...",
"title": "Trip planning",
"type": 2,
"color": "#0d42dd"
}
Replace or append to a notepad's content.
Requires ability: notepads:write
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
content | string | Yes | New content, or text to append. For rich-text (type 3) notepads this is HTML and is sanitized on save. |
append | boolean | No | When true, adds to the end of the existing content instead of replacing it. Defaults to false. |
Example request
curl https://rnote.org/api/v1/notepads/3b91d0c4-.../content \
-X PATCH \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{"content": "\n- [ ] Pack sunscreen", "append": true}'
Example response
{
"status": "success",
"uid": "3b91d0c4-...",
"content": "# Trip\n\n- [ ] Book flights\n- [ ] Pack sunscreen",
"updated_at": "2026-07-29T09:14:51+00:00"
}
Errors
Errors always have a JSON body with "status": "error".
| Status | Meaning |
|---|---|
401 | Missing or invalid token. |
403 | Token doesn't have the required ability. |
404 | Notepad not found, or not owned by the token's user. |
422 | Validation failed - the response includes an errors object. |
429 | Rate limit exceeded. |
Ready to connect something?
Create your account, generate a token, and start reading and writing notepads.