> ## 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.

# List Notes

> Looks up the person or company by the provided identifiers and returns the notes attached to it. Resolve-only: returns 404 if no matching record exists (nothing is created on read). Notes are sorted pinned first, then by createdAt descending. For a person, supply at least one of linkedin_url, email, crm_id, or phone. For a company, supply at least one of website_url or name.

Returns the notes attached to a **person** (Contact) or a **company** (Company), resolved from the identifiers you provide.

This is **resolve-only**: unlike [Create a Note](/api-reference/endpoint/create-note), it never creates a record. If no matching person or company exists, it returns `404`.

Notes come back sorted **pinned first**, then by `createdAt` descending.

### Query Parameters

| Parameter | Type   | Required | Description                                                             |
| --------- | ------ | -------- | ----------------------------------------------------------------------- |
| `type`    | string | Yes      | `person` or `company`. Determines which identifier params are required. |

#### Person identifiers (`type=person`)

Supply **at least one** of `linkedin_url`, `email`, `crm_id`, or `phone`.

| Parameter      | Type   | Description                  |
| -------------- | ------ | ---------------------------- |
| `linkedin_url` | string | LinkedIn profile URL         |
| `email`        | string | Email address                |
| `crm_id`       | string | External CRM identifier      |
| `phone`        | string | Phone number in E.164 format |

#### Company identifiers (`type=company`)

Supply **at least one** of `website_url` or `name`.

| Parameter     | Type   | Description                     |
| ------------- | ------ | ------------------------------- |
| `website_url` | string | Company website URL             |
| `name`        | string | Company name (case-insensitive) |

### Response

| Field        | Type           | Description                                                                                         |
| ------------ | -------------- | --------------------------------------------------------------------------------------------------- |
| `type`       | string         | Target type echoed from the request (`person` or `company`).                                        |
| `contact_id` | string \| null | Resolved unified Contact ID. Present when `type=person`. Stable across reimports and dialer drains. |
| `company_id` | string \| null | Resolved unified Company ID. Present when `type=company`.                                           |
| `notes`      | array          | Array of [note objects](#note-object), pinned first then by creation date descending.               |

#### Note Object

| Field       | Type           | Description                                                                                                  |
| ----------- | -------------- | ------------------------------------------------------------------------------------------------------------ |
| `_id`       | string         | Note ID                                                                                                      |
| `team`      | string         | Team that owns the note                                                                                      |
| `author`    | object         | Author (`_id`, `first_name`, `last_name`, `email`, `image`). Populated when available; otherwise just `_id`. |
| `content`   | string         | Plain text content of the note                                                                               |
| `is_pinned` | boolean        | Whether the note is pinned to the top                                                                        |
| `pinned_at` | string \| null | When the note was pinned (ISO 8601)                                                                          |
| `pinned_by` | string \| null | ID of the member who pinned it                                                                               |
| `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         | Creation timestamp (ISO 8601)                                                                                |
| `updatedAt` | string         | Last update timestamp (ISO 8601)                                                                             |

### Example Request

```bash theme={null}
GET /v2/notes?type=person&email=john@example.com
```

### Errors

| Status | Description                         |
| ------ | ----------------------------------- |
| 404    | No matching person or company found |


## OpenAPI

````yaml GET /v2/notes
openapi: 3.0.1
info:
  title: Salesfinity API
  description: API documentation for Salesfinity platform
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://client-api.salesfinity.co
security:
  - ApiKeyAuth: []
paths:
  /v2/notes:
    get:
      tags:
        - Notes
      summary: List notes for a person or company
      description: >-
        Looks up the person or company by the provided identifiers and returns
        the notes attached to it. Resolve-only: returns 404 if no matching
        record exists (nothing is created on read). Notes are sorted pinned
        first, then by createdAt descending. For a person, supply at least one
        of linkedin_url, email, crm_id, or phone. For a company, supply at least
        one of website_url or name.
      operationId: list-notes
      parameters:
        - name: type
          in: query
          required: true
          schema:
            type: string
            enum:
              - person
              - company
          description: Target type. Determines which identifier fields are required.
        - name: linkedin_url
          in: query
          required: false
          schema:
            type: string
          description: LinkedIn profile URL (person only)
        - name: email
          in: query
          required: false
          schema:
            type: string
          description: Email address (person only)
        - name: crm_id
          in: query
          required: false
          schema:
            type: string
          description: External CRM identifier (person only)
        - name: phone
          in: query
          required: false
          schema:
            type: string
          description: Phone number in E.164 format (person only)
        - name: website_url
          in: query
          required: false
          schema:
            type: string
          description: Company website URL (company only)
        - name: name
          in: query
          required: false
          schema:
            type: string
          description: Company name (company only)
      responses:
        '200':
          description: Notes retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotesListResponseDTO'
        '404':
          description: No matching person or company found
components:
  schemas:
    NotesListResponseDTO:
      type: object
      properties:
        type:
          type: string
          enum:
            - person
            - company
          description: Target type echoed from the request
        contact_id:
          type: string
          nullable: true
          example: 507f1f77bcf86cd799439011
          description: >-
            Resolved unified Contact ID (present when type=person). Stable
            across reimports and dialer drains.
        company_id:
          type: string
          nullable: true
          example: 507f1f77bcf86cd799439012
          description: Resolved unified Company ID (present when type=company).
        notes:
          type: array
          description: >-
            Notes attached to the resolved target, pinned first then by creation
            date descending
          items:
            $ref: '#/components/schemas/NoteDTO'
    NoteDTO:
      type: object
      properties:
        _id:
          type: string
          example: 507f1f77bcf86cd799439011
        team:
          type: string
          example: 507f1f77bcf86cd799439012
        author:
          allOf:
            - $ref: '#/components/schemas/NoteAuthorDTO'
          description: >-
            Note author. Populated when available; otherwise just the user ID
            under _id.
        content:
          type: string
          description: Plain text content of the note
        is_pinned:
          type: boolean
          description: Whether this note is pinned to the top
        pinned_at:
          type: string
          format: date-time
          nullable: true
        pinned_by:
          type: string
          nullable: true
        contact:
          type: string
          nullable: true
          description: Contact this note is attached to (mutually exclusive with company)
        company:
          type: string
          nullable: true
          description: Company this note is attached to (mutually exclusive with contact)
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    NoteAuthorDTO:
      type: object
      properties:
        _id:
          type: string
          example: 507f1f77bcf86cd799439011
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
        image:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````