Add a note
Creates a user note. data is a TipTap document (type: "doc"). See UserNoteData for supported block types (paragraph, heading, lists, task lists, etc.) and inline marks (bold, italic, link, …). Idempotent via Idempotency-Key header. Scoped to your integration’s institution via Basic Auth credentials.
/users/{id}/notesAuthorizationBasic auth · headerrequiredBasic Auth with clientId as username and clientSecret as password
idstringrequiredIdempotency-KeystringrequiredUnique key to prevent duplicate side effects; replay returns the original response
application/jsonnoteNamestringrequireddataUserNoteDatarequiredTipTap/ProseMirror JSON document stored in data. Root type must be "doc". The Fuxam dashboard user-notes editor uses the formatted-textarea stack (StarterKit + lists, task lists, alignment, colors, links, etc.). The API stores valid TipTap JSON as-is; nodes the dashboard cannot render may be preserved but not editable in the UI.
Show propertiesHide properties
typestringrequiredRoot document type. Only "doc" is supported.
doccontentobject[]requiredTop-level block nodes inside the document. Supported block type values:
paragraph— plain text block; may includeattrs.textAlign(left,center,right,justify) and inlinetext/hardBreakchildren.heading— heading block; setattrs.levelto1,2, or3(dashboard headings).bulletList/orderedList— lists containinglistItemnodes.listItem— list row; usually wraps one or moreparagraphnodes.taskList/taskItem— checklist;taskItemsupportsattrs.checked(true/false).blockquote— quoted paragraph(s).horizontalRule— divider line (nocontent).
Not exposed in the dashboard notes slash menu (avoid via API unless you accept limited UI support): codeBlock, image, file, table, youtube, columns.
Show propertiesHide properties
objecttypestringrequiredBlock node type. See content array description for supported values.
attrsobject | nullBlock attributes. Common keys: textAlign on paragraph/heading; level (1–3) on heading; checked on taskItem.
Show propertiesHide properties
classstring | nulltextAlignstring | nullleftcenterrightjustifylevelinteger | nullHeading level (heading blocks only).
checkedboolean | nullChecked state (taskItem blocks only).
contentobject[]Child nodes. For paragraph/heading: inline text and hardBreak. For lists: listItem or taskItem. For listItem/taskItem: usually nested paragraph blocks.
Show propertiesHide properties
objecttypestringrequiredInline node text (with optional marks) or block hardBreak. List blocks nest listItem / taskItem here.
textstringPlain text (type: "text" only).
marksobject[]Inline formatting on a text node. Supported mark type values: bold, italic, strike, code, underline, highlight, subscript, superscript, link (attrs.href), textStyle (attrs.color, attrs.fontSize).
Show propertiesHide properties
objecttypestringrequiredattrsobject{
"noteName": "Onboarding notes",
"data": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Student prefers morning sessions."
}
]
}
]
}
}{
"noteName": "Onboarding notes",
"data": {
"type": "doc",
"content": [
{
"type": "heading",
"attrs": {
"level": 2
},
"content": [
{
"type": "text",
"text": "Onboarding"
}
]
},
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Prefers "
},
{
"type": "text",
"marks": [
{
"type": "bold"
}
],
"text": "morning"
},
{
"type": "text",
"text": " sessions."
}
]
},
{
"type": "bulletList",
"content": [
{
"type": "listItem",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Bring laptop"
}
]
}
]
}
]
}
]
}
}Note added
dataUserNoterequiredShow propertiesHide properties
idstringrequirednoteNamestringrequireddataUserNoteDatarequiredTipTap/ProseMirror JSON document stored in data. Root type must be "doc". The Fuxam dashboard user-notes editor uses the formatted-textarea stack (StarterKit + lists, task lists, alignment, colors, links, etc.). The API stores valid TipTap JSON as-is; nodes the dashboard cannot render may be preserved but not editable in the UI.
Show propertiesHide properties
typestringrequiredRoot document type. Only "doc" is supported.
doccontentobject[]requiredTop-level block nodes inside the document. Supported block type values:
paragraph— plain text block; may includeattrs.textAlign(left,center,right,justify) and inlinetext/hardBreakchildren.heading— heading block; setattrs.levelto1,2, or3(dashboard headings).bulletList/orderedList— lists containinglistItemnodes.listItem— list row; usually wraps one or moreparagraphnodes.taskList/taskItem— checklist;taskItemsupportsattrs.checked(true/false).blockquote— quoted paragraph(s).horizontalRule— divider line (nocontent).
Not exposed in the dashboard notes slash menu (avoid via API unless you accept limited UI support): codeBlock, image, file, table, youtube, columns.
Show propertiesHide properties
objecttypestringrequiredBlock node type. See content array description for supported values.
attrsobject | nullBlock attributes. Common keys: textAlign on paragraph/heading; level (1–3) on heading; checked on taskItem.
Show propertiesHide properties
classstring | nulltextAlignstring | nullleftcenterrightjustifylevelinteger | nullHeading level (heading blocks only).
checkedboolean | nullChecked state (taskItem blocks only).
contentobject[]Child nodes. For paragraph/heading: inline text and hardBreak. For lists: listItem or taskItem. For listItem/taskItem: usually nested paragraph blocks.
Show propertiesHide properties
objecttypestringrequiredInline node text (with optional marks) or block hardBreak. List blocks nest listItem / taskItem here.
textstringPlain text (type: "text" only).
marksobject[]Inline formatting on a text node. Supported mark type values: bold, italic, strike, code, underline, highlight, subscript, superscript, link (attrs.href), textStyle (attrs.color, attrs.fontSize).
Show propertiesHide properties
objecttypestringrequiredattrsobjectcreatorNamestringrequiredcreatedAtstring<date-time>requiredupdatedAtstring<date-time>requiredmetaResponseMetarequiredShow propertiesHide properties
requestIdstringrequiredtimestampstring<date-time>requiredversionstringrequiredv4watermarkstring<date-time>Present on GET /users?updatedSince= pages. Taken at the first page minus a 60s overlap. Bound into pagination.next_cursor. Use it as the next updatedSince after deduping by user id. Delivery is inclusive >= and at-least-once.
Bad Request
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredUnauthorized
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredNot Found
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredConflict — duplicate email or membership code (body includes existingUserId when known), a time-tracking session that is already running (activeSession), a time-tracking interval that overlaps an existing log (conflictingLog), idempotency key reused with a different body (idempotency_key_reused), or concurrent request with the same key still in progress (idempotency_key_in_progress)
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredToo Many Requests — 1000 requests per minute per institution. Includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (ISO-8601), and Retry-After (seconds).
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredInternal Server Error
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredService unavailable — idempotency store temporarily unreachable, or the database is busy (lock wait, transaction timeout, or exhausted serialization/deadlock retries). Database contention includes Retry-After: 1. The idempotency key is released. Retry the same key (service_unavailable).
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequired