Skip to main content
POST
/
v2
/
notes
Create a note
curl --request POST \
  --url https://client-api.salesfinity.co/v2/notes \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "type": "person",
  "user_id": "507f1f77bcf86cd799439011",
  "content": "Mentioned moving back from Lisbon next quarter.",
  "linkedin_url": "https://linkedin.com/in/johndoe",
  "email": "[email protected]",
  "crm_id": "salesforce:003XXX",
  "phone": "+14155552671",
  "company_name": "Acme Corp",
  "company_website": "https://acme.com",
  "website_url": "https://acme.com",
  "name": "Acme Corp"
}
'
{
  "_id": "507f1f77bcf86cd799439011",
  "team": "507f1f77bcf86cd799439012",
  "author": {
    "_id": "507f1f77bcf86cd799439011",
    "first_name": "<string>",
    "last_name": "<string>",
    "email": "<string>",
    "image": "<string>"
  },
  "content": "<string>",
  "is_pinned": true,
  "pinned_at": "2023-11-07T05:31:56Z",
  "pinned_by": "<string>",
  "contact": "<string>",
  "company": "<string>",
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt

Use this file to discover all available pages before exploring further.

Creates a note attached to a person (Contact) or a company (Company). Unlike the older list-scoped endpoints, v2 notes are addressed by domain identifiers rather than by contact-list and contact IDs — so you can attach a note without first looking the person up in a list. The target is resolved from the identifiers you provide. If no matching record exists yet, a minimal Contact or Company is created on the fly and the note is attached to its stable ID.

Request Body

FieldTypeRequiredMax LengthDescription
typestringYesperson or company. Determines which identifier fields are required.
user_idstringYesID of the team member authoring the note. Must be a member of the team that owns the API key.
contentstringYes10,000Plain text content of the note.

Person identifiers (type: "person")

Supply at least one of:
FieldTypeMax LengthDescription
linkedin_urlstring500LinkedIn profile URL. Username is extracted automatically.
emailstring320Email address.
crm_idstring200External CRM identifier (e.g. salesforce:003XXX).
phonestring50Phone number in E.164 format.
Optionally, link a company when a new Contact has to be created (ignored if the person already exists):
FieldTypeMax LengthDescription
company_namestring300Company name to link to the person.
company_websitestring500Company website to link to the person.

Company identifiers (type: "company")

Supply at least one of:
FieldTypeMax LengthDescription
website_urlstring500Company website URL. Normalized to hostname for matching.
namestring300Company name. Case-insensitive match against the company name list.

Example Request — person

{
  "type": "person",
  "user_id": "507f1f77bcf86cd799439033",
  "content": "Mentioned moving back from Lisbon next quarter.",
  "email": "[email protected]",
  "company_name": "Acme Corp"
}

Example Request — company

{
  "type": "company",
  "user_id": "507f1f77bcf86cd799439033",
  "content": "Renewal owner is the new VP of Ops — loop in before Q3.",
  "website_url": "https://acme.com"
}

Response (201)

Returns the created note object. For a person note, contact is set; for a company note, company is set.

Errors

StatusDescription
400Validation failed (e.g. no identifier supplied for the chosen type), or user_id is not a member of the team

Authorizations

x-api-key
string
header
required

Body

application/json
type
enum<string>
required

Target type. Determines which identifier fields are required.

Available options:
person,
company
Example:

"person"

user_id
string
required

ID of the team member authoring the note. Must be a member of the team that owns the API key.

Example:

"507f1f77bcf86cd799439011"

content
string
required

Plain text content of the note

Maximum string length: 10000
Example:

"Mentioned moving back from Lisbon next quarter."

linkedin_url
string

LinkedIn profile URL (person only). Username is extracted automatically. Person notes require at least one of linkedin_url, email, crm_id, or phone.

Maximum string length: 500
Example:

"https://linkedin.com/in/johndoe"

email
string<email>

Email address (person only)

Maximum string length: 320
crm_id
string

External CRM identifier (person only)

Maximum string length: 200
Example:

"salesforce:003XXX"

phone
string

Phone number in E.164 format (person only)

Maximum string length: 50
Example:

"+14155552671"

company_name
string

Company name to link to the person if a new Contact is created. Ignored if the person already exists. (person only)

Maximum string length: 300
Example:

"Acme Corp"

company_website
string

Company website to link to the person if a new Contact is created. Ignored if the person already exists. (person only)

Maximum string length: 500
Example:

"https://acme.com"

website_url
string

Company website URL (company only). Normalized to hostname for matching. Company notes require at least one of website_url or name.

Maximum string length: 500
Example:

"https://acme.com"

name
string

Company name (company only). Case-insensitive match against the company name list.

Maximum string length: 300
Example:

"Acme Corp"

Response

Note created successfully

_id
string
Example:

"507f1f77bcf86cd799439011"

team
string
Example:

"507f1f77bcf86cd799439012"

author
object

Note author. Populated when available; otherwise just the user ID under _id.

content
string

Plain text content of the note

is_pinned
boolean

Whether this note is pinned to the top

pinned_at
string<date-time> | null
pinned_by
string | null
contact
string | null

Contact this note is attached to (mutually exclusive with company)

company
string | null

Company this note is attached to (mutually exclusive with contact)

createdAt
string<date-time>
updatedAt
string<date-time>