eva crm Public API
Leads

Notes and tasks

Read the notes written against a lead and the tasks raised on it, as staff see them in the CRM.

Notes and tasks are read-only through the API. Staff write them in the CRM, and the CRM adds its own: an email logged against the lead becomes an auto-generated note, and a stage move can raise a task or leave a note when the workflow is set up that way. Contracts have the same two endpoints under /v1/contracts/{id}; see contracts.

GET List notes

GET/v1/leads/{id}/notes

Every note on the lead, newest first, with cursor paging. body is HTML as the CRM's editor stores it. stage is where the lead was when the note was written.

Path parameters
idstring · uuidRequired

The lead's id.

Query parameters
limitinteger · 1 to 100

Out of range is a 422, never silently clamped.

Default: 50
cursorstring

From a previous nextCursor. Opaque; never construct one.

orderstring
Valid values: createdAt:desc, createdAt:asc
Default: createdAt:desc
createdSincestring · date or date-time

Read in your timezone unless it carries an offset.

createdBeforestring · date or date-time

Exclusive.

autostring

Notes the CRM generated itself, chiefly logged emails. exclude leaves what people wrote.

Valid values: include, exclude, only
Default: include
internalstring

Staff-only notes the CRM keeps off customer-facing views. Honour the flag if you show notes to the customer.

Valid values: include, exclude, only
Default: include
pinnedboolean

true for the pinned note only, false for the rest.

Responses
200
`data`, the notes, with `hasMore` and `nextCursor`. The `lead` the notes belong to is echoed.
404
No such lead in your organisation.
422
An unknown parameter, a bad value, or a cursor that no longer matches the filters. `fields` names it.
Example request
curl "https://api.evacrm.co.uk/v1/leads/1e4e3f90-4384-42ce-90c3-540db5343964/notes?auto=exclude" \
  -H "Authorization: Bearer sk_..."
Example response · 200
{
  "object": "list",
  "lead": { "id": "1e4e3f90-4384-42ce-90c3-540db5343964", "code": "L013898" },
  "data": [
    {
      "id": "6a2f9c1d-…",
      "body": "<p>Called, no answer. Left a voicemail about the revised quote.</p>",
      "action": "Call Mobile",
      "internal": false,
      "pinned": false,
      "autoGenerated": false,
      "stage": { "id": "c0d7…", "name": "Quote Sent" },
      "createdBy": { "id": "cd9356b7-…", "name": "Sam Rep", "email": "sam@example.com" },
      "externalRef": null,
      "source": null,
      "createdAt": "2026-09-02T14:05:11.208+01:00",
      "updatedAt": "2026-09-02T14:05:11.208+01:00"
    },
    {
      "id": "0b41…",
      "body": "Email received</br>From: jane@example.com</br>To: sam@example.com</br>Subject: Re: Your quotation</br>",
      "action": null,
      "internal": false,
      "pinned": false,
      "autoGenerated": true,
      "stage": { "id": "c0d7…", "name": "Quote Sent" },
      "createdBy": { "id": "cd9356b7-…", "name": "Sam Rep", "email": "sam@example.com" },
      "externalRef": null,
      "source": null,
      "createdAt": "2026-09-01T16:40:02.913+01:00",
      "updatedAt": "2026-09-01T16:40:02.913+01:00"
    }
  ],
  "hasMore": false,
  "nextCursor": null
}
  • action is the note type staff picked, such as Call Mobile, Email or Text Message, or null for a plain note.
  • createdBy is the staff member whose account wrote the note. For an auto-generated note that is whoever's mailbox or action produced it.
  • Paging follows the same guarantees as leads: keyset cursors, and a 422 if the filters change mid-crawl.

GET List tasks

GET/v1/leads/{id}/tasks

Every task raised on the lead, soonest due first. A task is for one person or one team, and overdue is set once an open task's due date is behind today in your timezone; a task due today is not overdue yet.

Path parameters
idstring · uuidRequired

The lead's id.

Query parameters
limitinteger · 1 to 100
Default: 50
cursorstring

From a previous nextCursor.

orderstring
Valid values: dueDate:asc, dueDate:desc, createdAt:desc
Default: dueDate:asc
statusstring · list

One or both. Both by default.

Valid values: open, completed
dueSincestring · date or date-time

Due on or after. A due date set from the CRM's date picker is midnight in your timezone, so a bare date works; tasks can also carry a time.

dueBeforestring · date or date-time

Exclusive. status=open&dueBefore=<today> is the overdue list.

Responses
200
`data`, the tasks, with `hasMore` and `nextCursor`. The `lead` is echoed.
404
No such lead in your organisation.
422
An unknown parameter, a bad value, or a stale cursor. `fields` names it.
Example request
curl "https://api.evacrm.co.uk/v1/leads/1e4e3f90-4384-42ce-90c3-540db5343964/tasks?status=open" \
  -H "Authorization: Bearer sk_..."
Example response · 200
{
  "object": "list",
  "lead": { "id": "1e4e3f90-4384-42ce-90c3-540db5343964", "code": "L013898" },
  "data": [
    {
      "id": "8d3e…",
      "body": "Chase the customer about the revised quote",
      "dueAt": "2026-09-03T00:00:00.000+01:00",
      "completed": false,
      "overdue": true,
      "completedAt": null,
      "completedBy": null,
      "assignee": { "id": "cd9356b7-…", "name": "Sam Rep", "email": "sam@example.com" },
      "assignedTeam": null,
      "autoCreated": false,
      "stage": { "id": "c0d7…", "name": "Quote Sent" },
      "createdBy": { "id": "7f1a…", "name": "Sales Manager", "email": "manager@example.com" },
      "externalRef": null,
      "source": null,
      "createdAt": "2026-09-01T09:12:44.001+01:00",
      "updatedAt": "2026-09-01T09:12:44.001+01:00"
    },
    {
      "id": "5c9b…",
      "body": "Book the survey",
      "dueAt": "2026-09-10T00:00:00.000+01:00",
      "completed": true,
      "overdue": false,
      "completedAt": "2026-09-02T10:30:15.442+01:00",
      "completedBy": { "id": "cd9356b7-…", "name": "Sam Rep", "email": "sam@example.com" },
      "assignee": null,
      "assignedTeam": { "id": "3b2c…", "name": "Surveyors" },
      "autoCreated": true,
      "stage": { "id": "…", "name": "Appointed" },
      "createdBy": { "id": "cd9356b7-…", "name": "Sam Rep", "email": "sam@example.com" },
      "externalRef": null,
      "source": null,
      "createdAt": "2026-08-30T15:00:00.000+01:00",
      "updatedAt": "2026-09-02T10:30:15.442+01:00"
    }
  ],
  "hasMore": false,
  "nextCursor": null
}
  • autoCreated marks tasks a stage action raised rather than a person.
  • stage is where the lead was when the task was raised, when the CRM recorded it.
  • Task forms the CRM attaches to some tasks are not returned.

On this page