Skip to main content

Notes & Tasks

Attach freeform notes to a contact, company or deal, and track follow-up work with due dates, assignees and an overdue flag.

Overview

Notes are freeform text attached to a contact, company or deal. Tasks are the work someone still has to do — with a title, an optional due date, an assignee and an optional link to a record.

Both show up in the timeline for the record they attach to.

Authentication

Authorization: Bearer cm_your_api_key
OperationScope
Read notescrm_notes:read
Write notescrm_notes:write
Read taskscrm_tasks:read
Write taskscrm_tasks:write

Notes

The note object

{
  "id": "aa22…",
  "tenant_id": "a0b1…",
  "entity_type": "company",
  "entity_id": "5c6d…",
  "body": "Renewal call went well — wants a Hindi voice agent.",
  "author_user_id": "b1f2…",
  "created_at": "2026-08-16T12:00:00Z",
  "updated_at": "2026-08-16T12:00:00Z"
}

author_user_id is the dashboard user who wrote it, and is null when the note was created with an API key — a key is not a person.

GET /api/v1/crm/notes

Newest first. Both entity parameters are required — notes are always read in the context of one record.

ParameterTypeRequiredConstraints
entity_typestringYescontact, company or deal
entity_idUUIDYesMust exist in your tenant
limitintegerNo1 <= limit <= 200, default 50
offsetintegerNo0 <= offset <= 100000, default 0
curl "https://api.callmissed.com/api/v1/crm/notes?entity_type=company&entity_id=5c6d…" \
  -H "Authorization: Bearer cm_your_api_key"

POST /api/v1/crm/notes

FieldTypeRequiredConstraints
entity_typestringYescontact, company or deal
entity_idUUIDYesMust exist in your tenant
bodystringYes1–10,000 characters, not blank

Returns 201. 404 Company not found (or Contact / Deal) when the target is not yours.

PATCH / DELETE /api/v1/crm/notes/{note_id}

PATCH edits body only — a note cannot be re-pointed at a different record, so the audit trail stays honest. DELETE returns 204.


Tasks

The task object

{
  "id": "bb33…",
  "tenant_id": "a0b1…",
  "title": "Send the renewal quote",
  "description": "Include the Hindi voice add-on.",
  "status": "open",
  "due_at": "2026-08-19T10:00:00Z",
  "completed_at": null,
  "assignee_user_id": "b1f2…",
  "entity_type": "company",
  "entity_id": "5c6d…",
  "created_by_user_id": "b1f2…",
  "created_at": "2026-08-16T12:05:00Z",
  "updated_at": "2026-08-16T12:05:00Z",
  "is_overdue": false
}
FieldTypeNotes
statusstringopen or done
completed_atdatetime | nullServer-managed — not accepted on create or update
is_overduebooleanComputed: due_at is in the past and status is open. A done task is never overdue

GET /api/v1/crm/tasks

Ordered by due_at ascending with undated tasks last, then newest first — so the list reads as a work queue.

ParameterTypeConstraints
statusstringopen or done
assignee_user_idUUIDOne person's queue
entity_typestringcontact, company or deal
entity_idUUID
overdueboolean
due_beforedatetime
due_afterdatetime
limitinteger1 <= limit <= 200, default 50
offsetinteger0 <= offset <= 100000, default 0
curl "https://api.callmissed.com/api/v1/crm/tasks?status=open&overdue=true" \
  -H "Authorization: Bearer cm_your_api_key"

POST /api/v1/crm/tasks

FieldTypeRequiredConstraints
titlestringYes1–255 characters, not blank
descriptionstringNoAt most 10,000 characters
statusstringNoopen (default) or done
due_atdatetimeNo
assignee_user_idUUIDNoMust be a user in your tenant
entity_typestringNocontact, company or deal
entity_idUUIDNoMust exist in your tenant

entity_type and entity_id must be sent together — one without the other returns 422 entity_type and entity_id must be sent together. A task with neither is a standalone to-do.

PATCH /api/v1/crm/tasks/{task_id}

Same fields, all optional. The entity link is validated against the merged result, so you can move a task from a contact to a company in one call without tripping the pairing rule.

POST /api/v1/crm/tasks/{task_id}/complete

No body. Marks the task done and stamps completed_at.

Idempotent — completing an already-done task returns it unchanged. Safe to retry.

GET / DELETE /api/v1/crm/tasks/{task_id}

DELETE returns 204. 404 Task not found.


Errors

StatusWhen
403Key is missing the matching crm_notes:* / crm_tasks:* scope
404Note, task, or the linked record is not in your tenant
422Blank body/title, unknown entity_type or status, an entity pair sent half-filled, or an assignee outside your tenant

Nothing on this page consumes credits.