Skip to main content
PATCH
Update a note
The body changes one way per request:
  • body replaces all of it.
  • append adds text at the end. A list item or table row goes on the next line, anything else after a blank line.
  • find with replace_with changes one exact place, such as a table row. find must appear exactly once; otherwise nothing changes and you get 422. An empty replace_with removes the text.
title sets a new title. topic sets the topic, and an empty string clears it. tags replaces all the tags, and an empty list clears them. pinned pins or unpins the note. source never changes. The answer is the note as it is now. Read the note first with Get a note when you change one place, so find matches it exactly. MCP tool: update_note.

Authorizations

Authorization
string
header
required

API key with the vd_sk_ prefix, as Authorization: Bearer vd_sk_.... Create keys in Settings → API Keys.

Headers

Idempotency-Key
string

Any unique string (such as your order id). Resending the same request with the same key within 24 hours returns the first answer (with Idempotent-Replayed: true) and does nothing twice; the same key with a different request is a 422 idempotency_key_reused.

Required string length: 1 - 255

Path Parameters

note_id
string
required

Body

application/json

Only what is sent changes. The body changes one way per call: body (all of it), append (added at the end) or find + replace_with (one exact place).

title
string | null

A new title.

Required string length: 1 - 200
body
string | null

A new body: replaces all of it.

Maximum string length: 20000
append
string | null

Text to add at the end of the body: on the next line when it continues a list or a table, after a blank line otherwise.

Required string length: 1 - 20000
find
string | null

Exact text in the body to change, e.g. a whole table row. It must appear exactly once. Send with replace_with.

Required string length: 1 - 20000
replace_with
string | null

What find becomes; empty removes it.

Maximum string length: 20000
topic
string | null

A new topic; empty clears it.

Maximum string length: 64
tags
string[] | null

The new tags, replacing the old ones; an empty list clears them. Up to 10 short tags (each at most 40 characters). They are kept lowercase, without a leading #, each once.

Maximum array length: 10
Maximum string length: 40
pinned
boolean | null

Pin or unpin it.

Response

The note as it is now.

id
string
required
title
string
required

One line, at most 200 characters.

body
string
required

The note itself, in Markdown (tables and checklists work).

source
enum<string>
required

Who wrote it first: user (you, on the Notes page), igris (the assistant), session (a chat session's agent), brain (a workflow's Brain) or api (the API or an AI assistant you connected).

Available options:
user,
igris,
session,
brain,
api

The path of the note's page in the Valendata app, e.g. /notes/{id}.

topic
string | null

One short topic, e.g. 'Travel'; null when none.

tags
string[]

Short lowercase tags.

pinned
boolean
default:false

Pinned notes come first in the list.

created_at
string<date-time> | null
updated_at
string<date-time> | null