2025-08-20 17:11:54 +00:00
openapi : 3.1 .0
info :
2025-11-02 18:33:13 +02:00
title : Internal Trilium API
version : 0.99 .3
2025-08-20 17:11:54 +00:00
description : |
This is the internal API used by the Trilium Notes client application.
**Important:** This API is primarily intended for internal use by the Trilium client.
2025-08-20 17:14:44 +00:00
For external integrations, please use the [ETAPI (External Trilium API)](https://github.com/TriliumNext/Trilium/blob/main/docs/User%20Guide/User%20Guide/Advanced%20Usage/ETAPI%20(REST%20API).md#etapi-rest-api) instead.
2025-08-20 17:11:54 +00:00
## Authentication
Most endpoints require session-based authentication. You can authenticate using :
- **Password login** : POST to `/api/login` with password
- **Token authentication** : Generate a token via `/api/login/token`
- **Sync authentication** : Use document secret for sync operations
## Rate Limiting
Authentication endpoints are rate-limited to prevent brute force attacks.
## CSRF Protection
State-changing operations require CSRF tokens when using session authentication.
contact :
2025-11-02 18:33:13 +02:00
name : Trilium Notes Team
email : contact@eliandoran.me
url : https://triliumnotes.org
2025-08-20 17:11:54 +00:00
license :
2025-11-02 18:33:13 +02:00
name : GNU Affero General Public License v3.0 only
url : https://www.gnu.org/licenses/agpl-3.0.en.html
2025-08-20 17:11:54 +00:00
servers :
- url : http://localhost:8080
description : Default local server
- url : https://your-trilium-server.com
description : Your Trilium server
tags :
- name : Authentication
description : Login, logout, and session management
- name : Notes
description : Core note operations
- name : Tree
description : Note tree structure and branches
- name : Attributes
description : Note attributes and metadata
- name : Attachments
description : File attachments
- name : Revisions
description : Note revision history
- name : Search
description : Search and discovery
- name : Import/Export
description : Import and export operations
- name : Sync
description : Synchronization between instances
- name : Scripting
description : Script execution and automation
- name : Configuration
description : System options and settings
- name : Database
description : Database operations
- name : LLM
description : AI/LLM integration
- name : Security
description : Security features (2FA, tokens)
- name : Special Notes
description : Special note types (calendar, inbox)
- name : Visualization
description : Maps and visualizations
- name : External
description : External integrations (clipper, sender)
- name : Utilities
description : Miscellaneous utilities
security :
- sessionAuth : [ ]
- tokenAuth : [ ]
paths :
# Authentication endpoints
/api/login :
post :
tags : [ Authentication]
summary : Login with password
operationId : login
security : [ ]
requestBody :
required : true
content :
application/x-www-form-urlencoded :
schema :
type : object
required : [ password]
properties :
password :
type : string
format : password
totpToken :
type : string
description : TOTP token if 2FA is enabled
responses :
'200' :
description : Login successful
headers :
Set-Cookie :
schema :
type : string
example : trilium.sid=s%3A...
'401' :
description : Invalid credentials or TOTP token
/api/login/token :
post :
tags : [ Authentication]
summary : Generate API token
operationId : generateToken
security : [ ]
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ password]
properties :
password :
type : string
format : password
tokenName :
type : string
description : Optional name for the token
responses :
'201' :
description : Token created
content :
application/json :
schema :
type : object
properties :
authToken :
type : string
description : API authentication token
/api/login/sync :
post :
tags : [ Authentication, Sync]
summary : Sync login using document secret
operationId : loginSync
security : [ ]
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ timestamp, hash, syncVersion]
properties :
timestamp :
type : string
format : date-time
hash :
type : string
description : HMAC hash of document secret and timestamp
syncVersion :
type : integer
responses :
'200' :
description : Login successful
content :
application/json :
schema :
type : object
properties :
instanceId :
type : string
maxEntityChangeId :
type : string
/api/login/protected :
post :
tags : [ Authentication, Security]
summary : Enter protected session
operationId : enterProtectedSession
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ password]
properties :
password :
type : string
format : password
responses :
'200' :
description : Protected session entered
'401' :
description : Invalid password
/api/logout/protected :
post :
tags : [ Authentication, Security]
summary : Exit protected session
operationId : exitProtectedSession
responses :
'204' :
description : Protected session exited
/api/login/protected/touch :
post :
tags : [ Authentication, Security]
summary : Keep protected session alive
operationId : touchProtectedSession
responses :
'204' :
description : Session refreshed
2025-08-20 17:30:26 +00:00
# OAuth endpoints
/api/oauth/status :
get :
tags : [ Authentication]
summary : Get OAuth status
operationId : getOAuthStatus
responses :
'200' :
description : OAuth status
content :
application/json :
schema :
type : object
properties :
enabled :
type : boolean
configured :
type : boolean
providers :
type : array
items :
type : string
/api/oauth/validate :
get :
tags : [ Authentication]
summary : Validate OAuth configuration
operationId : validateOAuth
responses :
'200' :
description : OAuth validation result
content :
application/json :
schema :
type : object
properties :
valid :
type : boolean
errors :
type : array
items :
type : string
2025-08-20 17:11:54 +00:00
# App Info
/api/app-info :
get :
tags : [ Configuration]
summary : Get application information
operationId : getAppInfo
responses :
'200' :
description : Application information
content :
application/json :
schema :
$ref : '#/components/schemas/AppInfo'
# Setup endpoints
/api/setup/status :
get :
tags : [ Configuration]
summary : Get setup status
operationId : getSetupStatus
security : [ ]
responses :
'200' :
description : Setup status
content :
application/json :
schema :
type : object
properties :
isInitialized :
type : boolean
schemaExists :
type : boolean
syncVersion :
type : integer
/api/setup/new-document :
post :
tags : [ Configuration]
summary : Initialize new document
operationId : initNewDocument
security : [ ]
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ password]
properties :
password :
type : string
format : password
theme :
type : string
responses :
'201' :
description : Document initialized
/api/setup/sync-from-server :
post :
tags : [ Configuration, Sync]
summary : Setup sync from server
operationId : setupSyncFromServer
security : [ ]
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ syncServerHost, password]
properties :
syncServerHost :
type : string
format : uri
syncProxy :
type : string
password :
type : string
format : password
responses :
'200' :
description : Sync setup successful
2025-08-20 17:30:26 +00:00
/api/setup/sync-seed :
get :
tags : [ Configuration, Sync]
summary : Get sync seed for setup
operationId : getSyncSeed
security : [ ]
responses :
'200' :
description : Sync seed information
content :
application/json :
schema :
type : object
properties :
syncVersion :
type : integer
schemaVersion :
type : integer
documentSecret :
type : string
maxSyncId :
type : integer
2025-08-20 17:11:54 +00:00
# Note operations
/api/notes/{noteId}:
get :
tags : [ Notes]
summary : Get note metadata
operationId : getNote
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note metadata
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
'404' :
description : Note not found
delete :
tags : [ Notes]
summary : Delete note
operationId : deleteNote
parameters :
- $ref : '#/components/parameters/noteId'
- name : taskId
in : query
required : true
schema :
type : string
- name : eraseNotes
in : query
schema :
type : boolean
default : false
- name : last
in : query
required : true
schema :
type : boolean
responses :
'204' :
description : Note deleted
'404' :
description : Note not found
/api/notes/{noteId}/blob:
get :
tags : [ Notes]
summary : Get note content
operationId : getNoteContent
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note content
content :
text/html :
schema :
type : string
text/plain :
schema :
type : string
application/json :
schema :
type : object
application/octet-stream :
schema :
type : string
format : binary
'404' :
description : Note not found
/api/notes/{noteId}/data:
put :
tags : [ Notes]
summary : Update note content
operationId : updateNoteContent
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ content]
properties :
content :
type : string
attachments :
type : array
items :
$ref : '#/components/schemas/Attachment'
responses :
'204' :
description : Content updated
'404' :
description : Note not found
/api/notes/{noteId}/metadata:
get :
tags : [ Notes]
summary : Get note timestamps
operationId : getNoteMetadata
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note timestamps
content :
application/json :
schema :
$ref : '#/components/schemas/Timestamps'
'404' :
description : Note not found
/api/notes/{noteId}/title:
put :
tags : [ Notes]
summary : Change note title
operationId : updateNoteTitle
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ title]
properties :
title :
type : string
responses :
'204' :
description : Title updated
'404' :
description : Note not found
/api/notes/{noteId}/type:
put :
tags : [ Notes]
summary : Change note type and MIME
operationId : updateNoteType
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ type, mime]
properties :
type :
$ref : '#/components/schemas/NoteType'
mime :
type : string
responses :
'204' :
description : Type updated
'404' :
description : Note not found
/api/notes/{noteId}/protect/{isProtected}:
put :
tags : [ Notes, Security]
summary : Protect or unprotect note
operationId : protectNote
parameters :
- $ref : '#/components/parameters/noteId'
- name : isProtected
in : path
required : true
schema :
type : boolean
- name : subtree
in : query
schema :
type : boolean
default : false
responses :
'204' :
description : Protection status updated
'404' :
description : Note not found
/api/notes/{noteId}/undelete:
put :
tags : [ Notes]
summary : Undelete note
operationId : undeleteNote
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'204' :
description : Note undeleted
'404' :
description : Note not found
/api/notes/{parentNoteId}/children:
post :
tags : [ Notes, Tree]
summary : Create new note
operationId : createNote
parameters :
- name : parentNoteId
in : path
required : true
schema :
type : string
- name : target
in : query
schema :
type : string
enum : [ after, into]
- name : targetBranchId
in : query
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
$ref : '#/components/schemas/CreateNoteRequest'
responses :
'201' :
description : Note created
content :
application/json :
schema :
type : object
properties :
note :
$ref : '#/components/schemas/Note'
branch :
$ref : '#/components/schemas/Branch'
/api/notes/{noteId}/duplicate/{parentNoteId}:
post :
tags : [ Notes, Tree]
summary : Duplicate note subtree
operationId : duplicateNote
parameters :
- $ref : '#/components/parameters/noteId'
- name : parentNoteId
in : path
required : true
schema :
type : string
responses :
'201' :
description : Note duplicated
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/notes/{noteId}/revision:
post :
tags : [ Notes, Revisions]
summary : Force save revision
operationId : saveRevision
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'201' :
description : Revision saved
content :
application/json :
schema :
$ref : '#/components/schemas/Revision'
/api/notes/{noteId}/sort-children:
put :
tags : [ Notes, Tree]
summary : Sort child notes
operationId : sortChildren
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
sortBy :
type : string
enum : [ title, dateCreated, dateModified]
sortDirection :
type : string
enum : [ asc, desc]
foldersFirst :
type : boolean
sortNatural :
type : boolean
sortLocale :
type : string
responses :
'204' :
description : Children sorted
/api/notes/{noteId}/convert-to-attachment:
post :
tags : [ Notes, Attachments]
summary : Convert note to attachment
operationId : convertToAttachment
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note converted to attachment
content :
application/json :
schema :
$ref : '#/components/schemas/Attachment'
# File operations
/api/notes/{noteId}/file:
put :
tags : [ Notes]
summary : Upload file to note
operationId : uploadFileToNote
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : string
format : binary
responses :
'204' :
description : File uploaded
/api/notes/{noteId}/open:
get :
tags : [ Notes]
summary : Open file note
operationId : openFileNote
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : File content
content :
application/octet-stream :
schema :
type : string
format : binary
2025-08-20 17:30:26 +00:00
/api/notes/download/{noteId}:
2025-08-20 17:11:54 +00:00
get :
tags : [ Notes]
summary : Download file note
operationId : downloadFileNote
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : File content
headers :
Content-Disposition :
schema :
type : string
example : attachment; filename="document.pdf"
content :
application/octet-stream :
schema :
type : string
format : binary
2025-08-20 17:30:26 +00:00
/api/notes/{noteId}/download:
2025-08-20 17:11:54 +00:00
get :
tags : [ Notes]
2025-08-20 17:30:26 +00:00
summary : Download file note (alternative path)
operationId : downloadFileNoteAlt
2025-08-20 17:11:54 +00:00
parameters :
- $ref : '#/components/parameters/noteId'
2025-08-20 17:30:26 +00:00
responses :
'200' :
description : File content
headers :
Content-Disposition :
schema :
type : string
example : attachment; filename="document.pdf"
content :
application/octet-stream :
schema :
type : string
format : binary
/api/attachments/{attachmentId}/open-partial:
get :
tags : [ Attachments]
summary : Stream file with partial content support
operationId : openPartialFileAttachment
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
2025-08-20 17:11:54 +00:00
- name : Range
in : header
schema :
type : string
example : bytes=0-1023
responses :
'206' :
description : Partial content
headers :
Content-Range :
schema :
type : string
example : bytes 0-1023/146515
content :
application/octet-stream :
schema :
type : string
format : binary
/api/notes/{noteId}/save-to-tmp-dir:
post :
tags : [ Notes]
summary : Save note to temp directory
operationId : saveToTmpDir
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : File saved to temp directory
content :
application/json :
schema :
type : object
properties :
filePath :
type : string
/api/notes/{noteId}/upload-modified-file:
post :
tags : [ Notes]
summary : Update note from modified temp file
operationId : uploadModifiedFile
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ filePath]
properties :
filePath :
type : string
responses :
'204' :
description : Note updated from file
# Tree and branch operations
/api/tree :
get :
tags : [ Tree]
summary : Get tree structure
operationId : getTree
parameters :
- name : subTreeNoteId
in : query
schema :
type : string
description : Limit tree to this note and descendants
responses :
'200' :
description : Tree structure
content :
application/json :
schema :
type : object
properties :
notes :
type : array
items :
$ref : '#/components/schemas/Note'
branches :
type : array
items :
$ref : '#/components/schemas/Branch'
attributes :
type : array
items :
$ref : '#/components/schemas/Attribute'
/api/tree/load :
post :
tags : [ Tree]
summary : Load specific notes
operationId : loadNotes
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ noteIds]
properties :
noteIds :
type : array
items :
type : string
responses :
'200' :
description : Loaded notes
content :
application/json :
schema :
type : object
properties :
notes :
type : array
items :
$ref : '#/components/schemas/Note'
branches :
type : array
items :
$ref : '#/components/schemas/Branch'
attributes :
type : array
items :
$ref : '#/components/schemas/Attribute'
/api/branches/{branchId}:
delete :
tags : [ Tree]
summary : Delete branch
operationId : deleteBranch
parameters :
- name : branchId
in : path
required : true
schema :
type : string
- name : taskId
in : query
required : true
schema :
type : string
- name : eraseNotes
in : query
schema :
type : boolean
- name : last
in : query
required : true
schema :
type : boolean
responses :
'200' :
description : Branch deleted
content :
application/json :
schema :
type : object
properties :
noteDeleted :
type : boolean
/api/branches/{branchId}/move-to/{parentBranchId}:
put :
tags : [ Tree]
summary : Move branch to new parent
operationId : moveBranchToParent
parameters :
- name : branchId
in : path
required : true
schema :
type : string
- name : parentBranchId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Branch moved
/api/branches/{branchId}/move-before/{beforeBranchId}:
put :
tags : [ Tree]
summary : Move branch before another
operationId : moveBranchBefore
parameters :
- name : branchId
in : path
required : true
schema :
type : string
- name : beforeBranchId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Branch moved
/api/branches/{branchId}/move-after/{afterBranchId}:
put :
tags : [ Tree]
summary : Move branch after another
operationId : moveBranchAfter
parameters :
- name : branchId
in : path
required : true
schema :
type : string
- name : afterBranchId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Branch moved
/api/branches/{branchId}/expanded/{expanded}:
put :
tags : [ Tree]
summary : Set branch expanded state
operationId : setBranchExpanded
parameters :
- name : branchId
in : path
required : true
schema :
type : string
- name : expanded
in : path
required : true
schema :
type : boolean
responses :
'204' :
description : Expanded state updated
/api/branches/{branchId}/expanded-subtree/{expanded}:
put :
tags : [ Tree]
summary : Set subtree expanded state
operationId : setSubtreeExpanded
parameters :
- name : branchId
in : path
required : true
schema :
type : string
- name : expanded
in : path
required : true
schema :
type : boolean
responses :
'204' :
description : Subtree expanded state updated
/api/branches/{branchId}/set-prefix:
put :
tags : [ Tree]
summary : Set branch prefix
operationId : setBranchPrefix
parameters :
- name : branchId
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
prefix :
type : string
nullable : true
responses :
'204' :
description : Prefix updated
# Cloning operations
/api/notes/{noteId}/clone-to-branch/{parentBranchId}:
put :
tags : [ Tree, Notes]
summary : Clone note to branch
operationId : cloneToBranch
parameters :
- $ref : '#/components/parameters/noteId'
- name : parentBranchId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Note cloned
content :
application/json :
schema :
$ref : '#/components/schemas/Branch'
/api/notes/{noteId}/clone-to-note/{parentNoteId}:
put :
tags : [ Tree, Notes]
summary : Clone note to parent note
operationId : cloneToNote
parameters :
- $ref : '#/components/parameters/noteId'
- name : parentNoteId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Note cloned
content :
application/json :
schema :
$ref : '#/components/schemas/Branch'
/api/notes/{noteId}/clone-after/{afterBranchId}:
put :
tags : [ Tree, Notes]
summary : Clone note after branch
operationId : cloneAfterBranch
parameters :
- $ref : '#/components/parameters/noteId'
- name : afterBranchId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Note cloned
content :
application/json :
schema :
$ref : '#/components/schemas/Branch'
/api/notes/{noteId}/toggle-in-parent/{parentNoteId}/{present}:
put :
tags : [ Tree, Notes]
summary : Toggle note presence in parent
operationId : toggleInParent
parameters :
- $ref : '#/components/parameters/noteId'
- name : parentNoteId
in : path
required : true
schema :
type : string
- name : present
in : path
required : true
schema :
type : boolean
responses :
'204' :
description : Presence toggled
# Attributes
/api/notes/{noteId}/attributes:
get :
tags : [ Attributes]
summary : Get effective note attributes
operationId : getNoteAttributes
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note attributes
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Attribute'
post :
tags : [ Attributes]
summary : Add note attribute
operationId : addNoteAttribute
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
$ref : '#/components/schemas/Attribute'
responses :
'201' :
description : Attribute added
content :
application/json :
schema :
$ref : '#/components/schemas/Attribute'
put :
tags : [ Attributes]
summary : Update all note attributes
operationId : updateNoteAttributes
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Attribute'
responses :
'204' :
description : Attributes updated
/api/notes/{noteId}/attributes/{attributeId}:
delete :
tags : [ Attributes]
summary : Delete attribute
operationId : deleteAttribute
parameters :
- $ref : '#/components/parameters/noteId'
- name : attributeId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Attribute deleted
/api/notes/{noteId}/attribute:
put :
tags : [ Attributes]
summary : Update single attribute
operationId : updateAttribute
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
$ref : '#/components/schemas/Attribute'
responses :
'204' :
description : Attribute updated
/api/notes/{noteId}/set-attribute:
put :
tags : [ Attributes]
summary : Set attribute value
operationId : setAttribute
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ type, name, value]
properties :
type :
type : string
enum : [ label, relation]
name :
type : string
value :
type : string
responses :
'204' :
description : Attribute set
/api/notes/{noteId}/relations/{name}/to/{targetNoteId}:
put :
tags : [ Attributes]
summary : Create relation
operationId : createRelation
parameters :
- $ref : '#/components/parameters/noteId'
- name : name
in : path
required : true
schema :
type : string
- name : targetNoteId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Relation created
delete :
tags : [ Attributes]
summary : Delete relation
operationId : deleteRelation
parameters :
- $ref : '#/components/parameters/noteId'
- name : name
in : path
required : true
schema :
type : string
- name : targetNoteId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Relation deleted
/api/attribute-names :
get :
tags : [ Attributes]
summary : Get attribute name suggestions
operationId : getAttributeNames
parameters :
- name : type
in : query
required : true
schema :
type : string
enum : [ label, relation]
- name : query
in : query
schema :
type : string
responses :
'200' :
description : Attribute names
content :
application/json :
schema :
type : array
items :
type : string
/api/attribute-values/{attributeName}:
get :
tags : [ Attributes]
summary : Get values for attribute
operationId : getAttributeValues
parameters :
- name : attributeName
in : path
required : true
schema :
type : string
responses :
'200' :
description : Attribute values
content :
application/json :
schema :
type : array
items :
type : string
# Attachments
/api/notes/{noteId}/attachments:
get :
tags : [ Attachments]
summary : Get note attachments
operationId : getNoteAttachments
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note attachments
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Attachment'
post :
tags : [ Attachments]
summary : Save attachment
operationId : saveAttachment
parameters :
- $ref : '#/components/parameters/noteId'
- name : matchBy
in : query
schema :
type : string
enum : [ attachmentId, title]
requestBody :
required : true
content :
application/json :
schema :
$ref : '#/components/schemas/Attachment'
responses :
'201' :
description : Attachment saved
content :
application/json :
schema :
$ref : '#/components/schemas/Attachment'
/api/notes/{noteId}/attachments/upload:
post :
tags : [ Attachments]
summary : Upload attachment file
operationId : uploadAttachment
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : string
format : binary
responses :
'201' :
description : Attachment uploaded
content :
application/json :
schema :
$ref : '#/components/schemas/Attachment'
/api/attachments/{attachmentId}:
get :
tags : [ Attachments]
summary : Get attachment metadata
operationId : getAttachment
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Attachment metadata
content :
application/json :
schema :
$ref : '#/components/schemas/Attachment'
delete :
tags : [ Attachments]
summary : Delete attachment
operationId : deleteAttachment
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Attachment deleted
/api/attachments/{attachmentId}/blob:
get :
tags : [ Attachments]
summary : Get attachment content
operationId : getAttachmentBlob
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
- name : preview
in : query
schema :
type : boolean
responses :
'200' :
description : Attachment content
content :
application/octet-stream :
schema :
type : string
format : binary
/api/attachments/{attachmentId}/rename:
put :
tags : [ Attachments]
summary : Rename attachment
operationId : renameAttachment
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ title]
properties :
title :
type : string
responses :
'204' :
description : Attachment renamed
/api/attachments/{attachmentId}/convert-to-note:
post :
tags : [ Attachments, Notes]
summary : Convert attachment to note
operationId : convertAttachmentToNote
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Attachment converted to note
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/attachments/{attachmentId}/file:
put :
tags : [ Attachments]
summary : Update attachment file
operationId : updateAttachmentFile
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : string
format : binary
responses :
'204' :
description : Attachment file updated
/api/attachments/{attachmentId}/open:
get :
tags : [ Attachments]
summary : Open attachment
operationId : openAttachment
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Attachment content
content :
application/octet-stream :
schema :
type : string
format : binary
2025-08-20 17:30:26 +00:00
/api/attachments/download/{attachmentId}:
2025-08-20 17:11:54 +00:00
get :
tags : [ Attachments]
summary : Download attachment
operationId : downloadAttachment
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Attachment content
headers :
Content-Disposition :
schema :
type : string
example : attachment; filename="document.pdf"
content :
application/octet-stream :
schema :
type : string
format : binary
2025-08-20 17:30:26 +00:00
/api/attachments/{attachmentId}/download:
get :
tags : [ Attachments]
summary : Download attachment (alternative path)
operationId : downloadAttachmentAlt
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Attachment content
headers :
Content-Disposition :
schema :
type : string
example : attachment; filename="document.pdf"
content :
application/octet-stream :
schema :
type : string
format : binary
/api/attachments/{attachmentId}/all:
get :
tags : [ Attachments]
summary : Get all attachment information
operationId : getAllAttachmentInfo
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Complete attachment information
content :
application/json :
schema :
type : object
properties :
attachmentId :
type : string
title :
type : string
mime :
type : string
isProtected :
type : boolean
position :
type : integer
contentLength :
type : integer
ownerId :
type : string
dateCreated :
type : string
format : date-time
dateModified :
type : string
format : date-time
/api/attachments/{attachmentId}/save-to-tmp-dir:
post :
tags : [ Attachments]
summary : Save attachment to temporary directory
operationId : saveAttachmentToTmpDir
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Attachment saved to temporary directory
content :
application/json :
schema :
type : object
properties :
tmpPath :
type : string
description : Path to temporary file
success :
type : boolean
/api/attachments/{attachmentId}/upload-modified-file:
post :
tags : [ Attachments]
summary : Upload modified attachment file
operationId : uploadModifiedAttachmentFile
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : string
format : binary
responses :
'200' :
description : Modified file uploaded
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
2025-08-20 17:11:54 +00:00
# Revisions
/api/notes/{noteId}/revisions:
get :
tags : [ Revisions]
summary : Get note revisions
operationId : getNoteRevisions
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note revisions
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Revision'
delete :
tags : [ Revisions]
summary : Erase all note revisions
operationId : eraseNoteRevisions
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'204' :
description : Revisions erased
/api/revisions/{revisionId}:
get :
tags : [ Revisions]
summary : Get revision details
operationId : getRevision
parameters :
- name : revisionId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Revision details
content :
application/json :
schema :
$ref : '#/components/schemas/Revision'
delete :
tags : [ Revisions]
summary : Erase revision
operationId : eraseRevision
parameters :
- name : revisionId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Revision erased
/api/revisions/{revisionId}/blob:
get :
tags : [ Revisions]
summary : Get revision content
operationId : getRevisionBlob
parameters :
- name : revisionId
in : path
required : true
schema :
type : string
- name : preview
in : query
schema :
type : boolean
responses :
'200' :
description : Revision content
content :
text/html :
schema :
type : string
text/plain :
schema :
type : string
application/octet-stream :
schema :
type : string
format : binary
/api/revisions/{revisionId}/restore:
post :
tags : [ Revisions, Notes]
summary : Restore revision
operationId : restoreRevision
parameters :
- name : revisionId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Revision restored
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/revisions/{revisionId}/download:
get :
tags : [ Revisions]
summary : Download revision
operationId : downloadRevision
parameters :
- name : revisionId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Revision content
headers :
Content-Disposition :
schema :
type : string
content :
application/octet-stream :
schema :
type : string
format : binary
/api/revisions/erase-all-excess-revisions :
post :
tags : [ Revisions]
summary : Cleanup old revisions
operationId : eraseExcessRevisions
responses :
'204' :
description : Excess revisions erased
/api/edited-notes/{date}:
get :
tags : [ Revisions]
summary : Get notes edited on date
operationId : getEditedNotes
parameters :
- name : date
in : path
required : true
schema :
type : string
format : date
example : '2024-01-15'
responses :
'200' :
description : Edited notes
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Note'
# Search
/api/search/{searchString}:
get :
tags : [ Search]
summary : Full text search
operationId : search
parameters :
- name : searchString
in : path
required : true
schema :
type : string
responses :
'200' :
description : Search results
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/SearchResult'
/api/quick-search/{searchString}:
get :
tags : [ Search]
summary : Quick search with highlighting
operationId : quickSearch
parameters :
- name : searchString
in : path
required : true
schema :
type : string
responses :
'200' :
description : Quick search results
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/SearchResult'
/api/search-note/{noteId}:
get :
tags : [ Search]
summary : Execute search note
operationId : executeSearchNote
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Search results
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/SearchResult'
/api/search-and-execute-note/{noteId}:
post :
tags : [ Search, Scripting]
summary : Search and execute actions
operationId : searchAndExecute
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Execution results
/api/search-related :
post :
tags : [ Search]
summary : Find related notes by attributes
operationId : searchRelated
requestBody :
required : true
content :
application/json :
schema :
$ref : '#/components/schemas/Attribute'
responses :
'200' :
description : Related notes
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Note'
/api/search-templates :
get :
tags : [ Search]
summary : Search template notes
operationId : searchTemplates
responses :
'200' :
description : Template notes
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Note'
/api/autocomplete :
get :
tags : [ Search]
summary : Get autocomplete suggestions
operationId : autocomplete
parameters :
- name : query
in : query
required : true
schema :
type : string
- name : fastSearch
in : query
schema :
type : boolean
- name : activeNoteId
in : query
schema :
type : string
responses :
'200' :
description : Autocomplete suggestions
content :
application/json :
schema :
type : array
items :
type : object
properties :
noteId :
type : string
title :
type : string
path :
type : string
/api/autocomplete/notesCount :
get :
tags : [ Search]
summary : Get total notes count
operationId : getNotesCount
responses :
'200' :
description : Notes count
content :
application/json :
schema :
type : object
properties :
count :
type : integer
/api/similar-notes/{noteId}:
get :
tags : [ Search]
summary : Find similar notes
operationId : findSimilarNotes
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Similar notes
content :
application/json :
schema :
type : array
items :
type : object
properties :
noteId :
type : string
title :
type : string
similarity :
type : number
# Images
/api/images/{noteId}/{filename}:
get :
tags : [ Notes]
summary : Get image from note
operationId : getNoteImage
parameters :
- $ref : '#/components/parameters/noteId'
- name : filename
in : path
required : true
schema :
type : string
responses :
'200' :
description : Image content
content :
image/* :
schema :
type : string
format : binary
/api/images/{noteId}:
put :
tags : [ Notes]
summary : Update image note
operationId : updateImageNote
parameters :
- $ref : '#/components/parameters/noteId'
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : string
format : binary
responses :
'204' :
description : Image updated
/api/attachments/{attachmentId}/image/{filename}:
get :
tags : [ Attachments]
summary : Get attached image
operationId : getAttachmentImage
parameters :
- name : attachmentId
in : path
required : true
schema :
type : string
- name : filename
in : path
required : true
schema :
type : string
responses :
'200' :
description : Image content
content :
image/* :
schema :
type : string
format : binary
/api/revisions/{revisionId}/image/{filename}:
get :
tags : [ Revisions]
summary : Get image from revision
operationId : getRevisionImage
parameters :
- name : revisionId
in : path
required : true
schema :
type : string
- name : filename
in : path
required : true
schema :
type : string
responses :
'200' :
description : Image content
content :
image/* :
schema :
type : string
format : binary
# Import/Export
/api/branches/{branchId}/export/{type}/{format}/{version}/{taskId}:
get :
tags : [ Import/Export]
summary : Export branch
operationId : exportBranch
parameters :
- name : branchId
in : path
required : true
schema :
type : string
- name : type
in : path
required : true
schema :
type : string
enum : [ subtree, single]
- name : format
in : path
required : true
schema :
type : string
enum : [ html, markdown, opml]
- name : version
in : path
required : true
schema :
type : string
- name : taskId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Exported content
content :
application/octet-stream :
schema :
type : string
format : binary
/api/notes/{parentNoteId}/notes-import:
post :
tags : [ Import/Export]
summary : Import notes
operationId : importNotes
parameters :
- name : parentNoteId
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : string
format : binary
safeImport :
type : boolean
shrinkImages :
type : boolean
textImportedAsText :
type : boolean
codeImportedAsCode :
type : boolean
explodeArchives :
type : boolean
replaceUnderscoresWithSpaces :
type : boolean
responses :
'200' :
description : Import results
content :
application/json :
schema :
type : object
properties :
noteId :
type : string
note :
$ref : '#/components/schemas/Note'
/api/notes/{parentNoteId}/attachments-import:
post :
tags : [ Import/Export, Attachments]
summary : Import attachments
operationId : importAttachments
parameters :
- name : parentNoteId
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : array
items :
type : string
format : binary
responses :
'200' :
description : Import results
# Options
/api/options :
get :
tags : [ Configuration]
summary : Get system options
operationId : getOptions
responses :
'200' :
description : System options
content :
application/json :
schema :
type : object
additionalProperties :
type : string
put :
tags : [ Configuration]
summary : Update multiple options
operationId : updateOptions
requestBody :
required : true
content :
application/json :
schema :
type : object
additionalProperties :
type : string
responses :
'204' :
description : Options updated
/api/options/{name}/{value}:
put :
tags : [ Configuration]
summary : Update single option
operationId : updateOption
parameters :
- name : name
in : path
required : true
schema :
type : string
- name : value
in : path
required : true
schema :
type : string
responses :
'204' :
description : Option updated
/api/options/user-themes :
get :
tags : [ Configuration]
summary : Get user-defined themes
operationId : getUserThemes
responses :
'200' :
description : User themes
content :
application/json :
schema :
type : array
items :
type : object
properties :
name :
type : string
label :
type : string
/api/options/locales :
get :
tags : [ Configuration]
summary : Get supported locales
operationId : getLocales
responses :
'200' :
description : Supported locales
content :
application/json :
schema :
type : array
items :
type : object
properties :
code :
type : string
name :
type : string
# Password management
/api/password/change :
post :
tags : [ Security]
summary : Change password
operationId : changePassword
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ new_password]
properties :
current_password :
type : string
format : password
new_password :
type : string
format : password
responses :
'204' :
description : Password changed
/api/password/reset :
post :
tags : [ Security]
summary : Reset password (destructive)
operationId : resetPassword
parameters :
- name : really
in : query
required : true
schema :
type : string
example : yesIReallyWantToResetMyPassword
responses :
'204' :
description : Password reset
# Sync
/api/sync/test :
post :
tags : [ Sync]
summary : Test sync connection
operationId : testSync
responses :
'200' :
description : Sync test results
/api/sync/now :
post :
tags : [ Sync]
summary : Trigger sync now
operationId : syncNow
responses :
'200' :
description : Sync started
/api/sync/check :
get :
tags : [ Sync]
summary : Get sync status
operationId : checkSync
responses :
'200' :
description : Sync status
content :
application/json :
schema :
type : object
properties :
synced :
type : boolean
lastSyncedPush :
type : string
format : date-time
lastSyncedPull :
type : string
format : date-time
/api/sync/changed :
get :
tags : [ Sync]
summary : Get sync changes
operationId : getSyncChanges
parameters :
- name : instanceId
in : query
required : true
schema :
type : string
- name : lastEntityChangeId
in : query
required : true
schema :
type : integer
- name : logMarkerId
in : query
required : true
schema :
type : string
responses :
'200' :
description : Sync changes
content :
application/json :
schema :
type : object
properties :
entityChanges :
type : array
items :
$ref : '#/components/schemas/EntityChange'
lastEntityChangeId :
type : integer
outstandingPullCount :
type : integer
/api/sync/update :
put :
tags : [ Sync]
summary : Push sync changes
operationId : pushSyncChanges
parameters :
- name : logMarkerId
in : query
required : true
schema :
type : string
- name : pageCount
in : header
required : true
schema :
type : integer
- name : pageIndex
in : header
required : true
schema :
type : integer
- name : requestId
in : header
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
instanceId :
type : string
entities :
type : array
items :
$ref : '#/components/schemas/EntityChange'
responses :
'200' :
description : Changes processed
/api/sync/finished :
post :
tags : [ Sync]
summary : Mark sync as finished
operationId : finishSync
responses :
'204' :
description : Sync finished
/api/sync/stats :
get :
tags : [ Sync]
summary : Get sync statistics
operationId : getSyncStats
security : [ ]
responses :
'200' :
description : Sync statistics
content :
application/json :
schema :
type : object
properties :
initialized :
type : boolean
stats :
type : object
/api/sync/fill-entity-changes :
post :
tags : [ Sync]
summary : Fill entity changes
operationId : fillEntityChanges
responses :
'204' :
description : Entity changes filled
/api/sync/force-full-sync :
post :
tags : [ Sync]
summary : Force full sync
operationId : forceFullSync
responses :
'204' :
description : Full sync forced
/api/sync/check-entity-changes :
post :
tags : [ Sync]
summary : Check entity changes consistency
operationId : checkEntityChanges
responses :
'200' :
description : Consistency check results
/api/sync/queue-sector/{entityName}/{sector}:
post :
tags : [ Sync]
summary : Queue sector for sync
operationId : queueSyncSector
parameters :
- name : entityName
in : path
required : true
schema :
type : string
- name : sector
in : path
required : true
schema :
type : string
responses :
'204' :
description : Sector queued
# Scripting
/api/script/exec :
post :
tags : [ Scripting]
summary : Execute script
operationId : executeScript
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ script]
properties :
script :
type : string
params :
type : array
items :
type : string
startNoteId :
type : string
currentNoteId :
type : string
originEntityName :
type : string
originEntityId :
type : string
transactional :
type : boolean
responses :
'200' :
description : Script execution results
content :
application/json :
schema :
type : object
/api/script/run/{noteId}:
post :
tags : [ Scripting]
summary : Run script note
operationId : runScriptNote
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Script execution results
/api/script/startup :
get :
tags : [ Scripting]
summary : Get startup script bundles
operationId : getStartupScripts
parameters :
- name : mobile
in : query
schema :
type : boolean
responses :
'200' :
description : Startup scripts
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/ScriptBundle'
/api/script/widgets :
get :
tags : [ Scripting]
summary : Get widget script bundles
operationId : getWidgetScripts
responses :
'200' :
description : Widget scripts
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/ScriptBundle'
/api/script/bundle/{noteId}:
post :
tags : [ Scripting]
summary : Get script bundle for note
operationId : getScriptBundle
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Script bundle
content :
application/json :
schema :
$ref : '#/components/schemas/ScriptBundle'
/api/script/relation/{noteId}/{relationName}:
get :
tags : [ Scripting]
summary : Get relation script bundles
operationId : getRelationScripts
parameters :
- $ref : '#/components/parameters/noteId'
- name : relationName
in : path
required : true
schema :
type : string
responses :
'200' :
description : Relation scripts
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/ScriptBundle'
# Database
/api/sql/schema :
get :
tags : [ Database]
summary : Get database schema
operationId : getDatabaseSchema
responses :
'200' :
description : Database schema
content :
text/plain :
schema :
type : string
/api/sql/execute/{noteId}:
post :
tags : [ Database]
summary : Execute SQL from note
operationId : executeSql
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : SQL execution results
content :
application/json :
schema :
type : array
items :
type : object
/api/database/backup-database :
post :
tags : [ Database]
summary : Create database backup
operationId : backupDatabase
responses :
'204' :
description : Backup created
/api/database/backups :
get :
tags : [ Database]
summary : List existing backups
operationId : listBackups
responses :
'200' :
description : Backup list
content :
application/json :
schema :
type : array
items :
type : string
/api/database/vacuum-database :
post :
tags : [ Database]
summary : Vacuum database
operationId : vacuumDatabase
responses :
'204' :
description : Database vacuumed
/api/database/anonymize/{type}:
post :
tags : [ Database]
summary : Anonymize database
operationId : anonymizeDatabase
parameters :
- name : type
in : path
required : true
schema :
type : string
enum : [ save-as-file, save-and-send]
responses :
'200' :
description : Anonymization results
/api/database/anonymized-databases :
get :
tags : [ Database]
summary : List anonymized databases
operationId : listAnonymizedDatabases
responses :
'200' :
description : Anonymized database list
content :
application/json :
schema :
type : array
items :
type : string
/api/database/find-and-fix-consistency-issues :
post :
tags : [ Database]
summary : Fix consistency issues
operationId : fixConsistencyIssues
responses :
'200' :
description : Consistency check results
/api/database/check-integrity :
get :
tags : [ Database]
summary : Check database integrity
operationId : checkIntegrity
responses :
'200' :
description : Integrity check results
content :
application/json :
schema :
type : object
properties :
results :
type : array
items :
type : string
# System
/api/metrics :
get :
tags : [ Utilities]
summary : Get system metrics
operationId : getMetrics
parameters :
- name : format
in : query
schema :
type : string
enum : [ prometheus, json]
default : json
responses :
'200' :
description : System metrics
content :
application/json :
schema :
type : object
text/plain :
schema :
type : string
/api/system-checks :
get :
tags : [ Utilities]
summary : Run system diagnostics
operationId : runSystemChecks
responses :
'200' :
description : System check results
content :
application/json :
schema :
type : array
items :
type : object
properties :
name :
type : string
status :
type : string
enum : [ pass, fail]
message :
type : string
/api/health-check :
get :
tags : [ Utilities]
summary : Health check endpoint
operationId : healthCheck
security : [ ]
responses :
'200' :
description : Service is healthy
content :
text/plain :
schema :
type : string
example : OK
/api/backend-log :
get :
tags : [ Utilities]
summary : Get backend log
operationId : getBackendLog
responses :
'200' :
description : Backend log entries
content :
application/json :
schema :
type : array
items :
type : object
properties :
timestamp :
type : string
format : date-time
level :
type : string
message :
type : string
# Bulk operations
/api/bulk-action/execute :
post :
tags : [ Notes]
summary : Execute bulk action
operationId : executeBulkAction
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
action :
type : string
noteIds :
type : array
items :
type : string
responses :
'200' :
description : Bulk action results
/api/bulk-action/affected-notes :
post :
tags : [ Notes]
summary : Get affected notes count
operationId : getAffectedNotesCount
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
action :
type : string
noteIds :
type : array
items :
type : string
responses :
'200' :
description : Affected notes count
content :
application/json :
schema :
type : object
properties :
count :
type : integer
/api/delete-notes-preview :
post :
tags : [ Notes]
summary : Preview note deletion
operationId : previewNoteDeletion
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
branchIdsToDelete :
type : array
items :
type : string
deleteAllClones :
type : boolean
responses :
'200' :
description : Deletion preview
content :
application/json :
schema :
type : object
properties :
notesToDelete :
type : array
items :
type : string
/api/notes/erase-deleted-notes-now :
post :
tags : [ Notes]
summary : Erase deleted notes
operationId : eraseDeletedNotes
responses :
'204' :
description : Deleted notes erased
/api/notes/erase-unused-attachments-now :
post :
tags : [ Attachments]
summary : Erase unused attachments
operationId : eraseUnusedAttachments
responses :
'204' :
description : Unused attachments erased
# Special notes
/api/special-notes/inbox/{date}:
get :
tags : [ Special Notes]
summary : Get/create inbox note
operationId : getInboxNote
parameters :
- name : date
in : path
required : true
schema :
type : string
format : date
responses :
'200' :
description : Inbox note
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/days/{date}:
get :
tags : [ Special Notes]
summary : Get/create day note
operationId : getDayNote
parameters :
- name : date
in : path
required : true
schema :
type : string
format : date
responses :
'200' :
description : Day note
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/weeks/{week}:
get :
tags : [ Special Notes]
summary : Get/create week note
operationId : getWeekNote
parameters :
- name : week
in : path
required : true
schema :
type : string
pattern : ^\d{4}-\d{2}$
example : '2024-03'
responses :
'200' :
description : Week note
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/months/{month}:
get :
tags : [ Special Notes]
summary : Get/create month note
operationId : getMonthNote
parameters :
- name : month
in : path
required : true
schema :
type : string
pattern : ^\d{4}-\d{2}$
example : '2024-01'
responses :
'200' :
description : Month note
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/years/{year}:
get :
tags : [ Special Notes]
summary : Get/create year note
operationId : getYearNote
parameters :
- name : year
in : path
required : true
schema :
type : string
pattern : ^\d{4}$
example : '2024'
responses :
'200' :
description : Year note
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/sql-console :
post :
tags : [ Special Notes, Database]
summary : Create SQL console note
operationId : createSqlConsole
responses :
'201' :
description : SQL console created
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/search-note :
post :
tags : [ Special Notes, Search]
summary : Create search note
operationId : createSearchNote
responses :
'201' :
description : Search note created
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/launchers/{parentNoteId}/{launcherType}:
post :
tags : [ Special Notes]
summary : Create launcher
operationId : createLauncher
parameters :
- name : parentNoteId
in : path
required : true
schema :
type : string
- name : launcherType
in : path
required : true
schema :
type : string
responses :
'201' :
description : Launcher created
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
2025-08-20 17:30:26 +00:00
/api/special-notes/notes-for-month/{month}:
get :
tags : [ Special Notes]
summary : Get notes for specific month
operationId : getNotesForMonth
parameters :
- name : month
in : path
required : true
schema :
type : string
example : "2024-03"
responses :
'200' :
description : Notes for the month
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Note'
/api/special-notes/quarters/{quarter}:
get :
tags : [ Special Notes]
summary : Get quarter note
operationId : getQuarter
parameters :
- name : quarter
in : path
required : true
schema :
type : string
example : "2024-Q1"
responses :
'200' :
description : Quarter note
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/week-first-day/{date}:
get :
tags : [ Special Notes]
summary : Get first day of week for date
operationId : getWeekFirstDay
parameters :
- name : date
in : path
required : true
schema :
type : string
format : date
example : "2024-03-15"
responses :
'200' :
description : First day of week
content :
application/json :
schema :
type : object
properties :
date :
type : string
format : date
/api/special-notes/launchers/{noteId}/reset:
post :
tags : [ Special Notes]
summary : Reset launcher note
operationId : resetLauncher
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Launcher reset
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/save-search-note :
post :
tags : [ Special Notes]
summary : Save search note
operationId : saveSearchNote
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
query :
type : string
title :
type : string
responses :
'201' :
description : Search note saved
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/save-sql-console :
post :
tags : [ Special Notes]
summary : Save SQL console note
operationId : saveSqlConsole
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
sql :
type : string
title :
type : string
responses :
'201' :
description : SQL console saved
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/special-notes/api-script-launcher :
put :
tags : [ Special Notes]
summary : Update API script launcher
operationId : updateApiScriptLauncher
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
code :
type : string
description : Script code
responses :
'200' :
description : API script launcher updated
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
2025-08-20 17:11:54 +00:00
# Maps
/api/note-map/{noteId}/tree:
post :
tags : [ Visualization]
summary : Get tree map
operationId : getTreeMap
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Tree map data
content :
application/json :
schema :
type : object
/api/note-map/{noteId}/link:
post :
tags : [ Visualization]
summary : Get link map
operationId : getLinkMap
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Link map data
content :
application/json :
schema :
type : object
/api/note-map/{noteId}/backlinks:
get :
tags : [ Visualization]
summary : Get backlinks
operationId : getBacklinks
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Backlinks
content :
application/json :
schema :
type : array
items :
type : object
properties :
noteId :
type : string
title :
type : string
2025-08-20 17:30:26 +00:00
/api/note-map/{noteId}/backlink-count:
get :
tags : [ Visualization]
summary : Get backlink count for note
operationId : getBacklinkCount
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Backlink count
content :
application/json :
schema :
type : object
properties :
count :
type : integer
description : Number of backlinks to this note
2025-08-20 17:11:54 +00:00
/api/relation-map :
post :
tags : [ Visualization]
summary : Get relation map data
operationId : getRelationMap
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
noteId :
type : string
maxDepth :
type : integer
excludeArchived :
type : boolean
responses :
'200' :
description : Relation map data
content :
application/json :
schema :
type : object
# External integrations
/api/clipper/handshake :
get :
tags : [ External]
summary : Clipper handshake
operationId : clipperHandshake
responses :
'200' :
description : Handshake successful
content :
application/json :
schema :
type : object
properties :
protocolVersion :
type : string
/api/clipper/clippings :
post :
tags : [ External]
summary : Add web clipping
operationId : addClipping
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
title :
type : string
content :
type : string
url :
type : string
responses :
'201' :
description : Clipping created
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/clipper/notes :
post :
tags : [ External]
summary : Create clipper note
operationId : createClipperNote
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
title :
type : string
content :
type : string
parentNoteId :
type : string
responses :
'201' :
description : Note created
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
2025-08-20 17:30:26 +00:00
/api/clipper/open/{noteId}:
post :
tags : [ External]
summary : Open note in clipper
operationId : openNoteInClipper
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note opened in clipper
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
url :
type : string
description : URL to open in clipper
2025-08-20 17:11:54 +00:00
/api/sender/login :
post :
tags : [ External]
summary : Sender login
operationId : senderLogin
security : [ ]
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ username, password]
properties :
username :
type : string
password :
type : string
responses :
'200' :
description : Login successful
content :
application/json :
schema :
type : object
properties :
token :
type : string
/api/sender/image :
post :
tags : [ External]
summary : Upload image from sender
operationId : uploadSenderImage
requestBody :
required : true
content :
multipart/form-data :
schema :
type : object
properties :
upload :
type : string
format : binary
responses :
'201' :
description : Image uploaded
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
/api/sender/note :
post :
tags : [ External]
summary : Save note from sender
operationId : saveSenderNote
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
title :
type : string
content :
type : string
responses :
'201' :
description : Note saved
content :
application/json :
schema :
$ref : '#/components/schemas/Note'
# LLM endpoints
/api/llm/chat :
post :
tags : [ LLM]
summary : Create new chat session
operationId : createChatSession
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
title :
type : string
systemPrompt :
type : string
temperature :
type : number
minimum : 0
maximum : 1
maxTokens :
type : integer
model :
type : string
provider :
type : string
enum : [ openai, anthropic, ollama]
contextNoteId :
type : string
responses :
'201' :
description : Chat session created
content :
application/json :
schema :
$ref : '#/components/schemas/ChatSession'
get :
tags : [ LLM]
summary : List all chat sessions
operationId : listChatSessions
responses :
'200' :
description : Chat sessions
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/ChatSession'
2025-08-20 17:30:26 +00:00
/api/llm/chat/{sessionId}:
2025-08-20 17:11:54 +00:00
get :
tags : [ LLM]
summary : Get specific chat session
operationId : getChatSession
parameters :
2025-08-20 17:30:26 +00:00
- name : sessionId
2025-08-20 17:11:54 +00:00
in : path
required : true
schema :
type : string
responses :
'200' :
description : Chat session details
content :
application/json :
schema :
$ref : '#/components/schemas/ChatSession'
patch :
tags : [ LLM]
summary : Update chat session
operationId : updateChatSession
parameters :
2025-08-20 17:30:26 +00:00
- name : sessionId
2025-08-20 17:11:54 +00:00
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
title :
type : string
systemPrompt :
type : string
temperature :
type : number
maxTokens :
type : integer
model :
type : string
provider :
type : string
contextNoteId :
type : string
responses :
'200' :
description : Session updated
content :
application/json :
schema :
$ref : '#/components/schemas/ChatSession'
2025-08-20 17:30:26 +00:00
/api/llm/chat/{chatNoteId}:
2025-08-20 17:11:54 +00:00
delete :
tags : [ LLM]
summary : Delete chat session
operationId : deleteChatSession
parameters :
- name : chatNoteId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Session deleted
/api/llm/chat/{chatNoteId}/messages:
post :
tags : [ LLM]
summary : Send message to LLM
operationId : sendChatMessage
parameters :
2025-08-20 17:30:26 +00:00
- name : sessionId
2025-08-20 17:11:54 +00:00
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ message]
properties :
message :
type : string
options :
type : object
properties :
temperature :
type : number
maxTokens :
type : integer
model :
type : string
provider :
type : string
includeContext :
type : boolean
useNoteContext :
type : boolean
responses :
'200' :
description : LLM response
content :
application/json :
schema :
type : object
properties :
response :
type : string
sources :
type : array
items :
type : object
properties :
noteId :
type : string
title :
type : string
similarity :
type : number
/api/llm/chat/{chatNoteId}/messages/stream:
post :
tags : [ LLM]
summary : Stream message to LLM
operationId : streamChatMessage
parameters :
2025-08-20 17:30:26 +00:00
- name : sessionId
2025-08-20 17:11:54 +00:00
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ content]
properties :
content :
type : string
useAdvancedContext :
type : boolean
showThinking :
type : boolean
mentions :
type : array
items :
type : string
responses :
'200' :
description : Streaming started
/api/llm/providers/ollama/models :
get :
tags : [ LLM]
summary : List Ollama models
operationId : listOllamaModels
parameters :
- name : baseUrl
in : query
schema :
type : string
responses :
'200' :
description : Ollama models
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
models :
type : array
items :
type : object
/api/llm/providers/openai/models :
get :
tags : [ LLM]
summary : List OpenAI models
operationId : listOpenAIModels
responses :
'200' :
description : OpenAI models
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
chatModels :
type : array
items :
type : object
properties :
id :
type : string
name :
type : string
type :
type : string
embeddingModels :
type : array
items :
type : object
properties :
id :
type : string
name :
type : string
type :
type : string
/api/llm/providers/anthropic/models :
get :
tags : [ LLM]
summary : List Anthropic models
operationId : listAnthropicModels
responses :
'200' :
description : Anthropic models
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
chatModels :
type : array
items :
type : object
properties :
id :
type : string
name :
type : string
type :
type : string
# TOTP/2FA
/api/totp/generate :
get :
tags : [ Security]
summary : Generate TOTP secret
operationId : generateTotpSecret
responses :
'200' :
description : TOTP secret generated
content :
application/json :
schema :
type : object
properties :
secret :
type : string
qrCode :
type : string
/api/totp/status :
get :
tags : [ Security]
summary : Get TOTP status
operationId : getTotpStatus
responses :
'200' :
description : TOTP status
content :
application/json :
schema :
type : object
properties :
enabled :
type : boolean
2025-08-20 17:30:26 +00:00
/api/totp/get :
get :
tags : [ Security]
summary : Get TOTP configuration
operationId : getTotpConfig
responses :
'200' :
description : TOTP configuration
content :
application/json :
schema :
type : object
properties :
secret :
type : string
qrCode :
type : string
backupCodes :
type : array
items :
type : string
/api/totp_recovery/enabled :
get :
tags : [ Security]
summary : Check if TOTP recovery is enabled
operationId : isTotpRecoveryEnabled
responses :
'200' :
description : TOTP recovery status
content :
application/json :
schema :
type : object
properties :
enabled :
type : boolean
/api/totp_recovery/generate :
get :
tags : [ Security]
summary : Generate TOTP recovery codes
operationId : generateTotpRecoveryCodes
responses :
'200' :
description : Generated recovery codes
content :
application/json :
schema :
type : object
properties :
codes :
type : array
items :
type : string
/api/totp_recovery/used :
get :
tags : [ Security]
summary : Get used TOTP recovery codes
operationId : getUsedTotpRecoveryCodes
responses :
'200' :
description : Used recovery codes
content :
application/json :
schema :
type : object
properties :
usedCodes :
type : array
items :
type : string
/api/totp_recovery/set :
post :
tags : [ Security]
summary : Set TOTP recovery codes
operationId : setTotpRecoveryCodes
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
codes :
type : array
items :
type : string
responses :
'200' :
description : Recovery codes set
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
/api/totp_recovery/verify :
post :
tags : [ Security]
summary : Verify TOTP recovery code
operationId : verifyTotpRecoveryCode
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
code :
type : string
responses :
'200' :
description : Verification result
content :
application/json :
schema :
type : object
properties :
valid :
type : boolean
2025-08-20 17:11:54 +00:00
# ETAPI tokens
/api/etapi-tokens :
get :
tags : [ Security]
summary : List ETAPI tokens
operationId : listEtapiTokens
responses :
'200' :
description : ETAPI tokens
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/EtapiToken'
post :
tags : [ Security]
summary : Create ETAPI token
operationId : createEtapiToken
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ name]
properties :
name :
type : string
responses :
'201' :
description : Token created
content :
application/json :
schema :
$ref : '#/components/schemas/EtapiToken'
/api/etapi-tokens/{etapiTokenId}:
patch :
tags : [ Security]
summary : Update ETAPI token
operationId : updateEtapiToken
parameters :
- name : etapiTokenId
in : path
required : true
schema :
type : string
requestBody :
required : true
content :
application/json :
schema :
type : object
properties :
name :
type : string
responses :
'200' :
description : Token updated
content :
application/json :
schema :
$ref : '#/components/schemas/EtapiToken'
delete :
tags : [ Security]
summary : Delete ETAPI token
operationId : deleteEtapiToken
parameters :
- name : etapiTokenId
in : path
required : true
schema :
type : string
responses :
'204' :
description : Token deleted
# Other utilities
/api/stats/note-size/{noteId}:
get :
tags : [ Utilities]
summary : Get note size
operationId : getNoteSize
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Note size
content :
application/json :
schema :
type : object
properties :
size :
type : integer
/api/stats/subtree-size/{noteId}:
get :
tags : [ Utilities]
summary : Get subtree size
operationId : getSubtreeSize
parameters :
- $ref : '#/components/parameters/noteId'
responses :
'200' :
description : Subtree size
content :
application/json :
schema :
type : object
properties :
size :
type : integer
/api/keyboard-actions :
get :
tags : [ Utilities]
summary : Get keyboard actions
operationId : getKeyboardActions
responses :
'200' :
description : Keyboard actions
content :
application/json :
schema :
type : array
items :
type : object
properties :
actionName :
type : string
shortcut :
type : string
description :
type : string
2025-08-20 17:30:26 +00:00
/api/keyboard-shortcuts-for-notes :
get :
tags : [ Utilities]
summary : Get keyboard shortcuts for notes
operationId : getKeyboardShortcutsForNotes
responses :
'200' :
description : Keyboard shortcuts for notes
content :
application/json :
schema :
type : array
items :
type : object
properties :
noteId :
type : string
shortcut :
type : string
title :
type : string
2025-08-20 17:11:54 +00:00
/api/fonts :
get :
tags : [ Utilities]
summary : Get font CSS
operationId : getFonts
responses :
'200' :
description : Font CSS
content :
text/css :
schema :
type : string
/api/recent-notes :
post :
tags : [ Utilities]
summary : Add recent note
operationId : addRecentNote
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ noteId]
properties :
noteId :
type : string
responses :
'204' :
description : Note added to recent
/api/recent-changes/{ancestorNoteId}:
get :
tags : [ Utilities]
summary : Get recent changes
operationId : getRecentChanges
parameters :
- name : ancestorNoteId
in : path
required : true
schema :
type : string
responses :
'200' :
description : Recent changes
content :
application/json :
schema :
type : array
items :
type : object
properties :
noteId :
type : string
title :
type : string
dateModified :
type : string
format : date-time
/api/other/icon-usage :
get :
tags : [ Utilities]
summary : Get icon usage statistics
operationId : getIconUsage
responses :
'200' :
description : Icon usage stats
content :
application/json :
schema :
type : object
additionalProperties :
type : integer
/api/other/render-markdown :
post :
tags : [ Utilities]
summary : Render markdown to HTML
operationId : renderMarkdown
requestBody :
required : true
content :
application/json :
schema :
type : object
required : [ markdownContent]
properties :
markdownContent :
type : string
responses :
'200' :
description : Rendered HTML
content :
text/html :
schema :
type : string
components :
securitySchemes :
sessionAuth :
type : apiKey
in : cookie
name : trilium.sid
description : Session cookie obtained from login
tokenAuth :
type : apiKey
in : header
name : Authorization
description : API token in format "Bearer {token}"
parameters :
noteId :
name : noteId
in : path
required : true
schema :
type : string
description : 12 -character note ID
schemas :
Note :
type : object
required :
- noteId
- title
- type
- mime
- isProtected
properties :
noteId :
type : string
description : 12 -character note ID
example : ur11rSfHkzeV
title :
type : string
description : Note title
type :
$ref : '#/components/schemas/NoteType'
mime :
type : string
description : MIME type
example : text/html
isProtected :
type : boolean
description : Whether note is protected
blobId :
type : string
description : ID of content blob
dateCreated :
type : string
format : date-time
dateModified :
type : string
format : date-time
utcDateCreated :
type : string
format : date-time
utcDateModified :
type : string
format : date-time
NoteType :
type : string
enum :
- text
- code
- render
- file
- image
- search
- relationMap
- book
- noteMap
- mermaid
- canvas
- webView
- launcher
- doc
- contentWidget
- mindMap
- geoMap
Branch :
type : object
required :
- branchId
- noteId
- parentNoteId
- notePosition
properties :
branchId :
type : string
description : Branch ID (parentNoteId_noteId)
noteId :
type : string
parentNoteId :
type : string
notePosition :
type : integer
prefix :
type : string
nullable : true
isExpanded :
type : boolean
Attribute :
type : object
required :
- attributeId
- noteId
- type
- name
- value
properties :
attributeId :
type : string
noteId :
type : string
type :
type : string
enum : [ label, relation]
name :
type : string
value :
type : string
position :
type : integer
isInheritable :
type : boolean
Attachment :
type : object
required :
- attachmentId
- ownerId
- role
- mime
- title
properties :
attachmentId :
type : string
ownerId :
type : string
role :
type : string
enum : [ image, file]
mime :
type : string
title :
type : string
blobId :
type : string
dateModified :
type : string
format : date-time
utcDateModified :
type : string
format : date-time
Revision :
type : object
properties :
revisionId :
type : string
noteId :
type : string
title :
type : string
type :
$ref : '#/components/schemas/NoteType'
mime :
type : string
dateCreated :
type : string
format : date-time
utcDateCreated :
type : string
format : date-time
SearchResult :
type : object
properties :
noteId :
type : string
title :
type : string
path :
type : string
score :
type : number
highlights :
type : array
items :
type : string
EntityChange :
type : object
properties :
entityChange :
type : object
properties :
entityName :
type : string
changeId :
type : string
entity :
type : object
Timestamps :
type : object
properties :
dateCreated :
type : string
format : date-time
dateModified :
type : string
format : date-time
utcDateCreated :
type : string
format : date-time
utcDateModified :
type : string
format : date-time
CreateNoteRequest :
type : object
required :
- title
- type
properties :
title :
type : string
content :
type : string
type :
$ref : '#/components/schemas/NoteType'
mime :
type : string
isProtected :
type : boolean
isExpanded :
type : boolean
notePosition :
type : integer
prefix :
type : string
parentNoteId :
type : string
templateNoteId :
type : string
ScriptBundle :
type : object
properties :
noteId :
type : string
script :
type : string
html :
type : string
css :
type : string
AppInfo :
type : object
properties :
appVersion :
type : string
example : 0.91 .6
dbVersion :
type : integer
example : 228
nodeVersion :
type : string
syncVersion :
type : integer
example : 34
buildDate :
type : string
format : date-time
buildRevision :
type : string
dataDirectory :
type : string
clipperProtocolVersion :
type : string
utcDateTime :
type : string
format : date-time
ChatSession :
type : object
properties :
sessionId :
type : string
title :
type : string
messages :
type : array
items :
type : object
properties :
role :
type : string
enum : [ user, assistant, system]
content :
type : string
timestamp :
type : string
format : date-time
createdAt :
type : string
format : date-time
lastActive :
type : string
format : date-time
messageCount :
type : integer
EtapiToken :
type : object
properties :
etapiTokenId :
type : string
name :
type : string
token :
type : string
dateCreated :
type : string
format : date-time
isDeleted :
2025-08-20 17:14:44 +00:00
type : boolean