ScribblespaceAgent skillOpen app

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.appv1

Read 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.

shell
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.

json
{
  "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.

shell
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/scribblespace

If 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.

json
{
  "endpoint": "https://api.scribblespace.app",
  "apiKey": "ss_REPLACE_WITH_YOUR_KEY"
}
shell
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

GET/api/v1/notebooksRead

The notebooks in the key’s workspace, with IDs, titles and your current roles.

GET/api/v1/scribblesRead

Search 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.

GET/api/v1/scribbles/{id}Read

Read one scribble by its URL’s ID. Returns scribble (including body and revision), images and references.

GET/api/v1/notebooks/{notebook}/images/{hash}Read

Download the original attachment bytes. Authenticate with the same Bearer key; verify the SHA-256 hash.

POST/api/v1/notebooks/{notebook}/scribblesWrite

Create a scribble. JSON accepts title and body. Returns HTTP 201 with the new scribble.

PATCH/api/v1/scribbles/{id}Write

Change 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

shell
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 ![Caption](attachment:SHA256) 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.

shell
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

StatusWhat to do
400Check the ID, fields or limits.
401Replace the missing, expired or revoked key.
403Use a key and membership with the required permission.
404The resource does not exist in this key’s workspace.
409Fetch the newest revision and merge.
429 / 503Back 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.