Your scribbles, connected
A notebook your agents can read.
Find a scribble, look at its images, follow a reference, or save an edit. The API shares the same permissions and live data as the app.
https://api.scribblespace.appv1Read your first scribble
Create a read-only key in Settings → API keys, choose its workspace and keep the key private. The ID is the last part of a scribble’s app URL.
curl 'https://api.scribblespace.app/api/v1/scribbles/87f1d122-34ea-49a8-b4b6-41f83947404f' \
-H "Authorization: Bearer $SCRIBBLESPACE_API_KEY"The response contains Markdown in scribble.body, attachment paths in images, and linked scribbles in references.
{
"scribble": {
"id": "87f1d122-34ea-49a8-b4b6-41f83947404f",
"notebookId": "…",
"title": "A project plan",
"body": "# A project plan\n\n[Research](scribble:…)",
"revision": "sha256…",
"url": "https://scribblespace.app/notes/87f1d122-34ea-49a8-b4b6-41f83947404f"
},
"images": [
{
"hash": "sha256…",
"path": "/api/v1/notebooks/…/images/…"
}
],
"references": [
{
"id": "…",
"url": "https://scribblespace.app/notes/…"
}
]
}Authentication that stays in your control
Send Authorization: Bearer ss_… on every API request, including image downloads. Each key belongs to one person and one workspace. Access follows that person’s current membership.
Read only
Search, read Markdown, inspect images and follow scribble references. A good default for assistants.
Read and write
Also creates and updates scribbles. Viewers cannot create a write key. Demoting a member immediately limits their keys.
Keys expire after the chosen 1–365 days and can be revoked immediately in Settings. The full key is returned once; the server stores its hash. Key management requires an app session, never another API key.
“Look at this scribble…”
Install the shared skill once for Claude and Codex. Then ask from any repository:
Look at this scribble https://scribblespace.app/notes/87f1d122-34ea-49a8-b4b6-41f83947404f and tell me what you think.
The helper reads the scribble, downloads and verifies its images, and exposes links for the agent to explore when relevant. An agent with image support can inspect every attachment. It does not crawl the whole workspace automatically.
mkdir -p ~/.agents/skills/scribblespace/scripts ~/.claude/skills ~/.codex/skills
curl -fsSL https://scribblespace.app/skills/scribblespace/SKILL.md -o ~/.agents/skills/scribblespace/SKILL.md
curl -fsSL https://scribblespace.app/skills/scribblespace/scripts/scribblespace.py -o ~/.agents/skills/scribblespace/scripts/scribblespace.py
ln -s ~/.agents/skills/scribblespace ~/.claude/skills/scribblespace
ln -s ~/.agents/skills/scribblespace ~/.codex/skills/scribblespaceIf a skill directory already exists, update it rather than creating another copy. Save the key in ~/.config/scribblespace/credentials.json (mode 0600), or provide SCRIBBLESPACE_API_KEY to the agent process. Restart the agent to discover a newly installed skill.
{
"endpoint": "https://api.scribblespace.app",
"apiKey": "ss_REPLACE_WITH_YOUR_KEY"
}python3 ~/.agents/skills/scribblespace/scripts/scribblespace.py search 'Pixpa'
python3 ~/.agents/skills/scribblespace/scripts/scribblespace.py get 'https://scribblespace.app/notes/87f1d122-34ea-49a8-b4b6-41f83947404f'The skill reads only. It treats scribble content as source material and answers in your conversation; reading does not authorize edits or messages.
The API surface
/api/v1/notebooksReadThe notebooks in the key’s workspace, with IDs, titles and your current roles.
/api/v1/scribblesReadSearch and list scribbles. q matches titles and content; notebookId filters a notebook. limit is 1–200 (default 50), offset starts at 0, includeTrash defaults to false. Returns scribbles, total and nextOffset.
/api/v1/scribbles/{id}ReadRead one scribble by its URL’s ID. Returns scribble (including body and revision), images and references.
/api/v1/notebooks/{notebook}/images/{hash}ReadDownload the original attachment bytes. Authenticate with the same Bearer key; verify the SHA-256 hash.
/api/v1/notebooks/{notebook}/scribblesWriteCreate a scribble. JSON accepts title and body. Returns HTTP 201 with the new scribble.
/api/v1/scribbles/{id}WriteChange title, body or deleted. Include ifMatch from the latest revision. Changes commit durably and broadcast to live clients.
Find a scribble by title or content
curl --get 'https://api.scribblespace.app/api/v1/scribbles' \
--data-urlencode 'q=Pixpa' \
--data-urlencode 'limit=20' \
-H "Authorization: Bearer $SCRIBBLESPACE_API_KEY"Images and linked context
Images remain immutable attachments referenced as  in Markdown. Download the response’s authenticated images[].path and inspect the bytes. Images are PNG, JPEG, GIF or WebP, up to 12 MiB. Verify each hash before saving.
The @ picker inserts stable [Title](scribble:UUID) references. A rename does not break them. The API returns linked IDs and app URLs; old [[Title]] links return a search query. Follow only the references you need and keep visited IDs to avoid cycles.
Edit without losing someone else’s work
Fetch the scribble first and keep its revision. Send it as ifMatch alongside the fields you want to change. A stale or missing revision returns 409; fetch again and merge before retrying.
curl -X PATCH 'https://api.scribblespace.app/api/v1/scribbles/87f1d122-34ea-49a8-b4b6-41f83947404f' \
-H "Authorization: Bearer $SCRIBBLESPACE_API_KEY" \
-H 'Content-Type: application/json' \
--data '{"ifMatch":"REVISION_FROM_GET","title":"Updated project plan"}'Set deleted: true to move a scribble to Trash, or deleted: false to restore it. Content is retained. API edits use the same durable commit and live sync as edits in the app.
Errors and limits
| Status | What to do |
|---|---|
| 400 | Check the ID, fields or limits. |
| 401 | Replace the missing, expired or revoked key. |
| 403 | Use a key and membership with the required permission. |
| 404 | The resource does not exist in this key’s workspace. |
| 409 | Fetch the newest revision and merge. |
| 429 / 503 | Back off and retry; respect Retry-After when present. |
JSON errors contain an error message. Titles accept 300 characters, bodies 1 MiB, searches 200 characters, and list pages 200 results. An account can hold 32 keys. API responses are private and are not cached publicly.