Notes and activities
Update notes
Updates a note on one of the calling user’s contacts. Send only the fields to change. Add files by URL with attachments_attributes or assets_attributes, or remove one by sending its id with _destroy: true. Returns 200 with the note, or 206 when some new files could not be attached. Returns 404 when the note is not on one of your contacts and 422 on validation errors. Requires a rep token or an admin-tier token tied to a user; admin users need the members manage permission (or customers update).
PATCH
/
api
/
notes
/
{id}
Update notes
curl --request PATCH \
--url https://api.fluid.app/api/notes/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": {
"title": "Quote sent to Holly",
"pinned": false
}
}
'import requests
url = "https://api.fluid.app/api/notes/{id}"
payload = { "note": {
"title": "Quote sent to Holly",
"pinned": False
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({note: {title: 'Quote sent to Holly', pinned: false}})
};
fetch('https://api.fluid.app/api/notes/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/notes/{id}",
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([
'note' => [
'title' => 'Quote sent to Holly',
'pinned' => false
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/notes/{id}"
payload := strings.NewReader("{\n \"note\": {\n \"title\": \"Quote sent to Holly\",\n \"pinned\": false\n }\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))
}HttpResponse<String> response = Unirest.patch("https://api.fluid.app/api/notes/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": {\n \"title\": \"Quote sent to Holly\",\n \"pinned\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/notes/{id}")
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 \"note\": {\n \"title\": \"Quote sent to Holly\",\n \"pinned\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"note": {
"id": 27310,
"title": "Quote sent to Holly",
"body": "Holly wants pricing for 10 cases of 20lb copy paper for the Nashua branch.",
"note_type": "follow_up",
"due_date": "2026-09-24",
"due_time": "2000-01-01T14:30:00.000Z",
"pinned": false,
"created_at": "2026-09-18T14:05:22Z",
"updated_at": "2026-09-21T10:18:44Z",
"contact_id": 48213,
"due_at": "SEP 24 2026, 02:30 PM",
"assets": [
{
"id": 6614,
"url": "https://cdn.fluid.app/dunder-mifflin/notes/nashua-paper-quote.pdf",
"filename": "nashua-paper-quote.pdf",
"content_type": "application/pdf",
"content_size": 184320,
"kind": "pdf",
"metadata": {}
}
]
},
"meta": {
"request_id": "9c4e2b7a-51d3-4f8e-a6b0-3d1f72c85e14",
"timestamp": "2026-09-18T14:05:22Z"
}
}{
"note": {
"id": 27310,
"title": "Quote sent to Holly",
"body": "Holly wants pricing for 10 cases of 20lb copy paper for the Nashua branch.",
"note_type": "follow_up",
"due_date": "2026-09-24",
"due_time": "2000-01-01T14:30:00.000Z",
"pinned": false,
"created_at": "2026-09-18T14:05:22Z",
"updated_at": "2026-09-21T10:18:44Z",
"contact_id": 48213,
"due_at": "SEP 24 2026, 02:30 PM",
"assets": [
{
"id": 6614,
"url": "https://cdn.fluid.app/dunder-mifflin/notes/nashua-paper-quote.pdf",
"filename": "nashua-paper-quote.pdf",
"content_type": "application/pdf",
"content_size": 184320,
"kind": "pdf",
"metadata": {}
}
]
},
"meta": {
"request_id": "9c4e2b7a-51d3-4f8e-a6b0-3d1f72c85e14",
"timestamp": "2026-09-18T14:05:22Z",
"attachment_errors": [
"scranton-branch-mug-order.pdf: Upload failed"
]
}
}{
"message": "<string>"
}⌘I
Update notes
curl --request PATCH \
--url https://api.fluid.app/api/notes/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": {
"title": "Quote sent to Holly",
"pinned": false
}
}
'import requests
url = "https://api.fluid.app/api/notes/{id}"
payload = { "note": {
"title": "Quote sent to Holly",
"pinned": False
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({note: {title: 'Quote sent to Holly', pinned: false}})
};
fetch('https://api.fluid.app/api/notes/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/notes/{id}",
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([
'note' => [
'title' => 'Quote sent to Holly',
'pinned' => false
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/notes/{id}"
payload := strings.NewReader("{\n \"note\": {\n \"title\": \"Quote sent to Holly\",\n \"pinned\": false\n }\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))
}HttpResponse<String> response = Unirest.patch("https://api.fluid.app/api/notes/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": {\n \"title\": \"Quote sent to Holly\",\n \"pinned\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/notes/{id}")
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 \"note\": {\n \"title\": \"Quote sent to Holly\",\n \"pinned\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"note": {
"id": 27310,
"title": "Quote sent to Holly",
"body": "Holly wants pricing for 10 cases of 20lb copy paper for the Nashua branch.",
"note_type": "follow_up",
"due_date": "2026-09-24",
"due_time": "2000-01-01T14:30:00.000Z",
"pinned": false,
"created_at": "2026-09-18T14:05:22Z",
"updated_at": "2026-09-21T10:18:44Z",
"contact_id": 48213,
"due_at": "SEP 24 2026, 02:30 PM",
"assets": [
{
"id": 6614,
"url": "https://cdn.fluid.app/dunder-mifflin/notes/nashua-paper-quote.pdf",
"filename": "nashua-paper-quote.pdf",
"content_type": "application/pdf",
"content_size": 184320,
"kind": "pdf",
"metadata": {}
}
]
},
"meta": {
"request_id": "9c4e2b7a-51d3-4f8e-a6b0-3d1f72c85e14",
"timestamp": "2026-09-18T14:05:22Z"
}
}{
"note": {
"id": 27310,
"title": "Quote sent to Holly",
"body": "Holly wants pricing for 10 cases of 20lb copy paper for the Nashua branch.",
"note_type": "follow_up",
"due_date": "2026-09-24",
"due_time": "2000-01-01T14:30:00.000Z",
"pinned": false,
"created_at": "2026-09-18T14:05:22Z",
"updated_at": "2026-09-21T10:18:44Z",
"contact_id": 48213,
"due_at": "SEP 24 2026, 02:30 PM",
"assets": [
{
"id": 6614,
"url": "https://cdn.fluid.app/dunder-mifflin/notes/nashua-paper-quote.pdf",
"filename": "nashua-paper-quote.pdf",
"content_type": "application/pdf",
"content_size": 184320,
"kind": "pdf",
"metadata": {}
}
]
},
"meta": {
"request_id": "9c4e2b7a-51d3-4f8e-a6b0-3d1f72c85e14",
"timestamp": "2026-09-18T14:05:22Z",
"attachment_errors": [
"scranton-branch-mug-order.pdf: Upload failed"
]
}
}{
"message": "<string>"
}