Overview
Add Obsidian to any ModuleX agent or workflow. Read, create, update, search, and delete notes in your Obsidian vault via the Obsidian Local REST API plugin. Manage periodic notes, list and execute commands, work with the active file, and patch content at specific headings, block references, or frontmatter fields. The plugin runs locally inside your Obsidian app and is reachable at a base_url you pass on every call (default https://127.0.0.1:27124). Because the plugin serves a self-signed TLS certificate, the HTTP client does not verify the certificate chain.
Categories : Productivity & Collaboration · Note Taking · Knowledge Base · Auth : API Key · Actions : 15
Authentication
API Key Authentication
Authenticate using the API key from the Obsidian Local REST API plugin
Step 1
Install the ‘Local REST API’ community plugin in Obsidian
Step 2
Open the plugin settings and enable it
Step 3
Copy the API key shown in the plugin settings
Step 5
Paste the API key below
Required Credentials
Field Description Required Format Obsidian Local REST API Key API key from the Obsidian Local REST API plugin settings Yes -
Available Actions
list_files — List files and directories in your Obsidian vault.
Parameters Directory path relative to vault root. Leave empty to list the root.
Response {
"$defs" : {
"FileEntry" : {
"additionalProperties" : false ,
"description" : "A single file or directory entry in ``list_files``." ,
"properties" : {
"path" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Path"
},
"type" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Type"
}
},
"title" : "FileEntry" ,
"type" : "object"
}
},
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"files" : {
"items" : {
"$ref" : "#/$defs/FileEntry"
},
"title" : "Files" ,
"type" : "array"
}
},
"required" : [
"success"
],
"title" : "ListFilesOutput" ,
"type" : "object"
}
get_note — Retrieve the content of a note from your Obsidian vault.
Parameters Path to the note relative to vault root (e.g. “folder/note.md”)
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"content" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Content"
},
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
}
},
"required" : [
"success"
],
"title" : "GetNoteOutput" ,
"type" : "object"
}
create_note — Create or replace a note in your Obsidian vault.
Parameters Path for the note relative to vault root (e.g. “folder/note.md”)
Markdown content for the note
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
},
"created" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Created"
}
},
"required" : [
"success"
],
"title" : "CreateNoteOutput" ,
"type" : "object"
}
append_note — Append content to an existing note in your Obsidian vault.
Parameters Path to the note relative to vault root (e.g. “folder/note.md”)
Markdown content to append to the note
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
},
"appended" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Appended"
}
},
"required" : [
"success"
],
"title" : "AppendNoteOutput" ,
"type" : "object"
}
patch_note — Insert or replace content at a specific heading, block reference, or frontmatter field in a note.
Parameters Path to the note relative to vault root (e.g. “folder/note.md”)
Content to insert at the target location
How to insert content: append, prepend, or replace
Type of target: heading, block, or frontmatter
Target identifier (heading text, block reference ID, or frontmatter field name)
Delimiter for nested headings (default: ”::”)
Whether to trim whitespace from target before matching
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
},
"patched" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Patched"
}
},
"required" : [
"success"
],
"title" : "PatchNoteOutput" ,
"type" : "object"
}
delete_note — Delete a note from your Obsidian vault.
Parameters Path to the note to delete relative to vault root
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
},
"deleted" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Deleted"
}
},
"required" : [
"success"
],
"title" : "DeleteNoteOutput" ,
"type" : "object"
}
search — Search for text across notes in your Obsidian vault.
Parameters Text to search for across vault notes
Number of characters of context around each match (default: 100)
Response {
"$defs" : {
"SearchMatch" : {
"additionalProperties" : false ,
"description" : "A single matching context snippet within a search result." ,
"properties" : {
"context" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Context"
}
},
"title" : "SearchMatch" ,
"type" : "object"
},
"SearchResultItem" : {
"additionalProperties" : false ,
"description" : "A single result row in ``search``." ,
"properties" : {
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
},
"score" : {
"anyOf" : [
{
"type" : "number"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Score"
},
"matches" : {
"items" : {
"$ref" : "#/$defs/SearchMatch"
},
"title" : "Matches" ,
"type" : "array"
}
},
"title" : "SearchResultItem" ,
"type" : "object"
}
},
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"results" : {
"items" : {
"$ref" : "#/$defs/SearchResultItem"
},
"title" : "Results" ,
"type" : "array"
}
},
"required" : [
"success"
],
"title" : "SearchOutput" ,
"type" : "object"
}
get_active — Retrieve the content of the currently active file in Obsidian.
Parameters Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"content" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Content"
},
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
}
},
"required" : [
"success"
],
"title" : "GetActiveOutput" ,
"type" : "object"
}
append_active — Append content to the currently active file in Obsidian.
Parameters Markdown content to append to the active file
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"appended" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Appended"
}
},
"required" : [
"success"
],
"title" : "AppendActiveOutput" ,
"type" : "object"
}
patch_active — Insert or replace content at a specific heading, block reference, or frontmatter field in the active file.
Parameters Content to insert at the target location
How to insert content: append, prepend, or replace
Type of target: heading, block, or frontmatter
Target identifier (heading text, block reference ID, or frontmatter field name)
Delimiter for nested headings (default: ”::”)
Whether to trim whitespace from target before matching
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"patched" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Patched"
}
},
"required" : [
"success"
],
"title" : "PatchActiveOutput" ,
"type" : "object"
}
open_file — Open a file in the Obsidian UI (creates the file if it does not exist).
Parameters Path to the file relative to vault root
Whether to open the file in a new leaf/tab
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"filename" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Filename"
},
"opened" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Opened"
}
},
"required" : [
"success"
],
"title" : "OpenFileOutput" ,
"type" : "object"
}
list_commands — List all available commands in Obsidian.
Parameters Response {
"$defs" : {
"CommandItem" : {
"additionalProperties" : false ,
"description" : "A single available command in ``list_commands``." ,
"properties" : {
"id" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Id"
},
"name" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Name"
}
},
"title" : "CommandItem" ,
"type" : "object"
}
},
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"commands" : {
"items" : {
"$ref" : "#/$defs/CommandItem"
},
"title" : "Commands" ,
"type" : "array"
}
},
"required" : [
"success"
],
"title" : "ListCommandsOutput" ,
"type" : "object"
}
execute_command — Execute a command in Obsidian (e.g. open daily note, toggle sidebar).
get_periodic_note — Retrieve the current periodic note (daily, weekly, monthly, quarterly, or yearly).
Parameters Period type: daily, weekly, monthly, quarterly, or yearly
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"content" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Content"
},
"period" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Period"
}
},
"required" : [
"success"
],
"title" : "GetPeriodicNoteOutput" ,
"type" : "object"
}
append_periodic_note — Append content to the current periodic note (daily, weekly, monthly, quarterly, or yearly). Creates the note if it does not exist.
Parameters Period type: daily, weekly, monthly, quarterly, or yearly
Markdown content to append to the periodic note
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"period" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Period"
},
"appended" : {
"anyOf" : [
{
"type" : "boolean"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Appended"
}
},
"required" : [
"success"
],
"title" : "AppendPeriodicNoteOutput" ,
"type" : "object"
}
Limits & Quotas
The Local REST API runs on the user’s own machine, so throughput is
bound only by the local Obsidian instance; there is no vendor rate
limit.
base_url must be reachable from where the runtime executes
(typically the same host). The default https://127.0.0.1:27124 only
works for a co-located process.
Error model : non-2xx responses and timeouts are caught and
returned as success=False + error rather than raising.
Links