Update a note
curl --request PATCH \
--url https://api.folk.app/v1/notes/{noteId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "This is a note about **John Doe**"
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({content: 'This is a note about **John Doe**'})
};
fetch('https://api.folk.app/v1/notes/{noteId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.folk.app/v1/notes/{noteId}"
payload = { "content": "This is a note about **John Doe**" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://api.folk.app/v1/notes/{noteId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"This is a note about **John Doe**\"\n}"
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.folk.app/v1/notes/{noteId}"
payload := strings.NewReader("{\n \"content\": \"This is a note about **John Doe**\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.folk.app/v1/notes/{noteId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'content' => 'This is a note about **John Doe**'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"id": "nte_91118b73-5a75-480b-b8e3-a33671c35cdc",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"visibility": "public",
"content": "This is a note about John Doe",
"author": {
"type": "user",
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com",
"deleted": false
},
"createdAt": "2021-01-01T00:00:00.000Z",
"parentNote": {
"id": "nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"content": "This is a parent note about John Doe",
"visibility": "public",
"author": {
"type": "user",
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com",
"deleted": false
},
"createdAt": "2021-01-01T00:00:00.000Z",
"deleted": false
}
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "The rate limit has been exceeded.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#rate-limiting",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z",
"details": {
"limit": 1000,
"remaining": 0,
"retryAfter": "2025-10-01T12:00:00Z"
}
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#internal-server-error",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}Notes
Update a note
Update an existing note in the workspace.
PATCH
/
v1
/
notes
/
{noteId}
Update a note
curl --request PATCH \
--url https://api.folk.app/v1/notes/{noteId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "This is a note about **John Doe**"
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({content: 'This is a note about **John Doe**'})
};
fetch('https://api.folk.app/v1/notes/{noteId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.folk.app/v1/notes/{noteId}"
payload = { "content": "This is a note about **John Doe**" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://api.folk.app/v1/notes/{noteId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"This is a note about **John Doe**\"\n}"
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.folk.app/v1/notes/{noteId}"
payload := strings.NewReader("{\n \"content\": \"This is a note about **John Doe**\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.folk.app/v1/notes/{noteId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'content' => 'This is a note about **John Doe**'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"id": "nte_91118b73-5a75-480b-b8e3-a33671c35cdc",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"visibility": "public",
"content": "This is a note about John Doe",
"author": {
"type": "user",
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com",
"deleted": false
},
"createdAt": "2021-01-01T00:00:00.000Z",
"parentNote": {
"id": "nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"content": "This is a parent note about John Doe",
"visibility": "public",
"author": {
"type": "user",
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com",
"deleted": false
},
"createdAt": "2021-01-01T00:00:00.000Z",
"deleted": false
}
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "The rate limit has been exceeded.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#rate-limiting",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z",
"details": {
"limit": 1000,
"remaining": 0,
"retryAfter": "2025-10-01T12:00:00Z"
}
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#internal-server-error",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}Update an existing note linked to a person, company or deal, updating only the provided fields and leaving the rest of the note’s data unchanged.
For example, to mention user
To retrieve the user ID, you can use the GET /v1/users endpoint.
Visibility
The visibility of the note can be set topublic or private.
public: The note is visible to all users in the workspace.private: The note is visible only to the current user.
Content
The content of the note can be in plain text or in markdown format. We support the full CommonMark basic syntax, including:- Headings
- Bold
- Italic
- Lists
- Links
- Images
- Blockquotes
- Horizontal rules
- Code
Mentions
We also support mentioning workspace members using a simple markdown link to the GET /v1/users/{userId} endpoint.[<user_name>](https://api.folk.app/v1/users/<user_id>)
John Doe with ID usr_6526333c-1502-46e3-aa01-8f6130f69814:
This is a note mentioning [John Doe](https://api.folk.app/v1/users/usr_6526333c-1502-46e3-aa01-8f6130f69814)
You can use any value as the user name. Our system will always replace it with the real user name of the workspace member mentioned.Providing an invalid link, a wrong user id, or a user id that does not exist will not trigger any error.
Always respect the syntax and use ids retrieved from the API to make sure the
mention is valid and the workspace member is notified.
Attachments
We currently do not support direct attachment upload. However, you can use any bucket storage service to upload files and reference them in the note content using a link, as long as the file is publicly accessible. Example:[PDF link](https://my-bucket.s3.eu-west-1.amazonaws.com/my-file.pdf)
Authorizations
API key for authentication
Path Parameters
The ID of the note to update.
Required string length:
40Body
application/json
The content of the note. Can be in plain text or in markdown format.
Required string length:
1 - 100000Example:
"This is a note about **John Doe**"
The visibility of the note.
public: The note is visible to all users in the workspace.private: The note is visible only to the current user.
Available options:
public, private Response
The updated note in the workspace.
A note linked to an entity.
Show child attributes
Show child attributes
Example:
{
"id": "nte_91118b73-5a75-480b-b8e3-a33671c35cdc",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"visibility": "public",
"content": "This is a note about John Doe",
"author": {
"type": "user",
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com",
"deleted": false
},
"createdAt": "2021-01-01T00:00:00.000Z",
"parentNote": {
"id": "nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"content": "This is a parent note about John Doe",
"visibility": "public",
"author": {
"type": "user",
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com",
"deleted": false
},
"createdAt": "2021-01-01T00:00:00.000Z",
"deleted": false
}
}
Example:
["This field is deprecated"]
⌘I