---
title: "Create a note"
method: POST
path: "/notes"
tags: ["Notes"]
---

# Create a note

`POST /notes`

Creates a new note. You can optionally link the note to candidates, jobs, applications, companies, client contacts, interviews, or opportunities.

## Request body

- CreateNoteDto
  - `title` string, nullable, required
  - `content` string, required — The content of the note in HTML format.
  - `source` 'phone' | 'phoneInbound' | 'phoneOutbound' | 'inPerson' | 'onlineMeeting' | 'callAttempted'
  - `links` CreateNoteLinkDto[]
    - `entityType` 'candidate' | 'vacancy' | 'client' | 'application' | 'clientContact' | 'interview' | 'opportunity', required
    - `entityId` string, required
  - `meetingId` string
  - `labelIds` string[]

## Response `201`

Note created successfully.

- NoteDto
  - `id` string, required
  - `title` string, nullable, required
  - `content` string, required
  - `createdAt` string, date-time, required
  - `lastEditedAt` string, date-time, required
  - `createdBy` UserBadgeDto, required
    - `id` string, required
    - `name` string, required
    - `avatarUrl` string, nullable, required
    - `deactivatedAt` string, date-time, required
  - `editors` NoteEditorDto[], required
    - `editedBy` UserBadgeDto, required
      - `id` string, required
      - `name` string, required
      - `avatarUrl` string, nullable, required
      - `deactivatedAt` string, date-time, required
    - `editedAt` string, date-time, required
  - `links` NoteLinkDto[], required
    - union
      - object
        - `id` string, required
        - `noteId` string, required
        - `entityType` 'candidate', required
        - `candidate` object, required
          - `id` string, required
          - `firstName` string, required
          - `lastName` string, required
          - `middleName` string, nullable, required
          - `secondLastName` string, nullable, required
          - `avatarUrl` string, nullable, required
      - object
        - `id` string, required
        - `noteId` string, required
        - `entityType` 'vacancy', required
        - `vacancy` object, required
          - `id` string, required
          - `name` string, required
        - `client` ClientBadgeDto, required
          - `id` string, required
          - `name` string, required
          - `logoUrl` string, nullable, required
      - object
        - `id` string, required
        - `noteId` string, required
        - `entityType` 'client', required
        - `client` ClientBadgeDto, required
          - `id` string, required
          - `name` string, required
          - `logoUrl` string, nullable, required
      - object
        - `id` string, required
        - `noteId` string, required
        - `entityType` 'application', required
        - `applicationId` string, required
      - object
        - `id` string, required
        - `noteId` string, required
        - `entityType` 'clientContact', required
        - `clientContact` object, required
          - `id` string, required
          - `firstName` string, required
          - `lastName` string, required
          - `middleName` string, nullable, required
          - `secondLastName` string, nullable, required
          - `avatarUrl` string, nullable, required
          - `candidateId` string, required
          - `companyId` string, required
          - `companyName` string, required
          - `companyLogoUrl` string, nullable, required
      - object
        - `id` string, required
        - `noteId` string, required
        - `entityType` 'interview', required
        - `interviewId` string, required
      - object
        - `id` string, required
        - `noteId` string, required
        - `entityType` 'opportunity', required
        - `opportunity` object, required
          - `id` string, required
          - `name` string, required
          - `company` CompanyBadgeDto, required
            - `id` string, required
            - `name` string, required
            - `logoUrl` string, nullable, required
  - `meeting` NoteLinkedMeetingDto, required
    - `id` string, required
    - `meetingProvider` 'googleMeet' | 'zoom' | 'microsoftTeams' | 'audioFile' | 'null', nullable, required
    - `title` string, required
    - `startTime` string, date-time, required
    - `endTime` string, date-time, required
    - `hasTranscript` boolean, required
  - `call` NoteLinkedCallDto, required
    - `id` string, required
    - `provider` 'TELNYX' | 'AIRCALL' | 'RINGCENTRAL' | 'RINGOVER' | 'VOIPPLAY' | 'DIALPAD', required
    - `startTime` string, date-time, required
    - `endTime` string, date-time, required
    - `hasTranscript` boolean, required
  - `audioRecording` NoteLinkedAudioRecordingDto, required
    - `id` string, required
    - `startTime` string, date-time, required
    - `endTime` string, date-time, required
    - `hasTranscript` boolean, required
  - `type` 'manual' | 'aiSummary', required
  - `source` 'phone' | 'phoneInbound' | 'phoneOutbound' | 'inPerson' | 'onlineMeeting' | 'callAttempted' | 'null', nullable, required
  - `pinned` boolean, required
  - `shouldPoll` boolean, required
  - `labels` object[], required
    - `id` string, required
    - `name` string, required
    - `colorHex` string, required

## Other responses

- `400` — Bad request - missing or invalid required fields
- `401` — Unauthorized - invalid or missing authentication
- `500` — Error response

---

[API](https://skmtc.net/spott/apis/spott-webhooks.md) · [All operations](https://skmtc.net/spott/apis/spott-webhooks/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/spott/spott-webhooks/versions/ad1f8c51cf0a/schema)
