curl --request PUT \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/{userUuid}/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>' \
--data '
{
"notes": "<string>"
}
'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/{userUuid}/notes"
payload = { "notes": "<string>" }
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({notes: '<string>'})
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/{userUuid}/notes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"notes": "Prefers evening messages. Birthday on 12 March.",
"updatedAt": "2024-01-15T00:00:00.000Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Update a creator's notes about a fan
Replaces the specified creator’s notes about a fan on their behalf and returns the stored result.
These are the notes the creator keeps on a fan in the Fanvue chat sidebar and contact list. Only the manually written notes are exposed; automatically generated fan summaries are never returned. Notes do not require an existing conversation with the fan.
The body replaces the notes in full, so send the complete text rather than a delta. Pass null (or an empty string) to clear them. Returns 400 if userUuid is the creator’s own UUID and 404 if the user does not exist.
curl --request PUT \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/{userUuid}/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>' \
--data '
{
"notes": "<string>"
}
'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/{userUuid}/notes"
payload = { "notes": "<string>" }
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({notes: '<string>'})
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/{userUuid}/notes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"notes": "Prefers evening messages. Birthday on 12 March.",
"updatedAt": "2024-01-15T00:00:00.000Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}write:chat— Create new chats and send messages. This scope is required for any chat-related actions that modify data.read:creator— Access creator profiles, content, and creator-specific information.
Authorizations
OAuth 2.0 access token, presented as a JWT bearer token in the Authorization header. Obtain a token via the authorization-code flow; the scopes granted to the token determine which operations it may call.
Headers
API version to use for the request
"2025-06-26"
Body
The full replacement notes (max 5000 characters). Pass null or an empty string to clear them.
5000Response
The stored notes
The notes kept about this fan, or null when none have been written. Only the manually written notes are returned; automatically generated summaries are never included.
When the notes were last changed, or null when no notes are stored. The timestamp belongs to the fan's customisation record, so other changes to that record, including a nickname edit or internal updates, also move it.
Was this page helpful?