Obsidian Local REST API
SkillFiles & storageLets your agent move, rename, overwrite, and open Obsidian notes and run Obsidian commands via a local API.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Obsidian Local REST API skill
About this capability
Call the Obsidian Local REST API directly (over HTTP) for vault operations the mcp__obsidian__* tools do NOT expose — move/rename a note, overwrite a whole file atomically (PUT), act on the currently-open active file, run an Obsidian command, open a note in the UI, list all tags, or do date-specific
What this skill tells your AI
The instructions your AI receives, as published by davepoon/buildwithclaude in plugins/all-skills/skills/obsidian-rest-api/SKILL.md and read by ahel’s review.
The connected obsidian MCP server exposes only a subset of the Obsidian
Local REST API
(plugin obsidian-local-rest-api). This skill provides the full API surface plus
an authenticated request wrapper, so a missing MCP method is called over HTTP
instead of being worked around with hacks (e.g. delete+recreate to rename a note).
When to Use This Skill
Use the mcp__obsidian__* tools first for read, append, patch, delete, and search.
Fall back to this skill only for operations that have no MCP tool:
- Move / rename a note (preserves history, updates internal links)
- Overwrite a whole file atomically (PUT) instead of delete+recreate
- Act on the currently-open "active" file in the Obsidian UI
- Run an Obsidian command from the command palette
- Open / focus a note in the UI
- List all vault tags with counts
- Create/update/delete date-specific periodic notes
What This Skill Does
- Resolves the API host, port, and key from the connected obsidian MCP server
config (
~/.claude.json) orOBSIDIAN_*env vars — no hardcoded secrets. - Handles the plugin's self-signed TLS certificate.
- Exposes every endpoint of the Local REST API (see
references/api_reference.md), with the header enums (Operation, Target-Type, Target-Scope), the customMOVEcontract, and the search (JsonLogic/Dataview) formats.
How to Use
Call the wrapper scripts/olrapi.sh <METHOD> <path> [curl args...]:
S=scripts/olrapi.sh # adjust to the skill's install path
# rename/move a note (the most common reason to reach for this skill)
"$S" MOVE "/vault/Path/To/Old Name.md" -H 'Destination: Path/To/New Name.md'
# move into a folder, keeping the filename (trailing slash on Destination)
"$S" MOVE "/vault/Inbox/todo.md" -H 'Destination: Archive/'
# atomically overwrite a whole note
"$S" PUT "/vault/Path/Note.md" -H 'Content-Type: text/markdown' --data-binary @/tmp/body.md
# read a note as structured JSON (frontmatter + tags + stat)
"$S" GET "/vault/Path/Note.md" -H 'Accept: application/vnd.olrapi.note+json'
# list tags, run a command, open a note in the UI
"$S" GET /tags/
"$S" POST "/commands/editor:toggle-bold/"
"$S" POST "/open/Path/Note.md?newLeaf=true"
The wrapper prints <<HTTP nnn>> after the body. Success: 200/204.
On MOVE, 409 means the destination exists — add -H 'Allow-Overwrite: true' to force.
For non-trivial calls, load references/api_reference.md.
Path & encoding rules
{filename}is vault-relative (no leading slash on the vault path).- Percent-encode non-ASCII in URL paths and in the
MOVEDestinationheader (e.g.r%C3%A9sum%C3%A9.md).Destinationrejects absolute (/…) paths. - Target a sub-part of a note with
Target-Type(heading|block|frontmatter)Targetheaders on GET/PATCH/POST.
Example
User: "Rename 3-Resources/Draft.md to 3-Resources/Final.md in my vault."
Output:
scripts/olrapi.sh MOVE "/vault/3-Resources/Draft.md" \
-H 'Destination: 3-Resources/Final.md'
# <<HTTP 204>> — moved, history preserved, internal links updated
Tips
- Regenerate the reference against the live plugin if it was updated:
scripts/olrapi.sh GET /openapi.yaml.GET /shows the plugin version. - Prefer
PUTover delete+recreate for whole-file overwrites — it is atomic and keeps the file's identity. - The API serves HTTPS on port 27124 (self-signed →
curl -k) and HTTP on 27123.
Signals
- GitHub stars
- 3k
- Forks
- 500
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
obsidian-rest-api- Source
- github.com/davepoon/buildwithclaude