Overview#
The Tasks & Activities API enables you to manage the tasks that live in your projects — the ones you see under Projects → Tasks. You can create tasks, assign them to team members, set priorities and due dates, and mark them complete. Every task belongs to a project, so you need the project's ID before you create one; it appears in the project's URL in the app (/projects/<id>). Activities (calls, emails, meetings, and notes logged on customer records) are covered at the end of this guide. Every request needs an API key in the Authorization header; see API Overview & Authentication.
Tasks#
List Tasks#
GET /api/tasksQuery Parameters#
- status (string) — Filter:
todo,in_progress,review,completed,cancelled. - project_id (string) — Filter by project.
- limit (integer) — Records per page. Default: 50.
- offset (integer) — Records to skip. Default: 0.
Tasks are returned newest first.
Example Request#
curl -X GET "https://app.automatenexuscrm.com/functions/v1/api/tasks?status=todo&project_id=0c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f&limit=25" \
-H "Authorization: Bearer YOUR_API_KEY"Example Response#
{
"data": [
{
"id": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b",
"title": "Follow up with Acme Corp",
"description": "Send proposal revision based on feedback",
"status": "todo",
"priority": "high",
"due_date": "2026-03-25T17:00:00Z",
"assigned_to": "b7e3c1d2-5f6a-4b8c-9d0e-1f2a3b4c5d6e",
"project_id": "0c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
"parent_task_id": null,
"dependencies": null,
"tags": ["proposal"],
"estimated_hours": 2,
"actual_hours": null,
"recurrence": "none",
"completed_at": null,
"created_by": "b7e3c1d2-5f6a-4b8c-9d0e-1f2a3b4c5d6e",
"created_at": "2026-03-20T10:00:00Z",
"updated_at": "2026-03-20T10:00:00Z",
"project": {
"id": "0c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
"title": "Acme Corp rollout"
},
"assignee": {
"id": "b7e3c1d2-5f6a-4b8c-9d0e-1f2a3b4c5d6e",
"first_name": "Sarah",
"last_name": "Johnson",
"username": "sarah"
}
}
],
"count": 1,
"total": null
}Each task embeds its project (id, title) and assignee (id, first_name, last_name, username). count is the number of records in this page; total is not computed for tasks and is always null, so request further pages until a page returns fewer records than limit.
Get a Task#
GET /api/tasks/:idReturns a single task with the same fields and embedded objects. Returns 404 when no task with that ID exists in your organization.
Create a Task#
POST /api/tasksRequest Body
- title (string, required) — Task title.
- project_id (string, required) — ID of the project the task belongs to.
- description (string) — Detailed description.
- status (string) —
todo,in_progress,review,completed, orcancelled. Default:todo. - priority (string) —
low,medium,high, orurgent. Default:medium. - due_date (string) — Due date in ISO 8601 format.
- assigned_to (string) — User ID of the assignee.
- estimated_hours, actual_hours (number) — Time estimates and actuals.
- tags (array) — Array of tag strings.
- parent_task_id (string) — ID of a parent task, to create a subtask.
- dependencies (array) — IDs of tasks this task depends on.
- recurrence (string) —
none,daily,weekly, ormonthly. Default:none.
Fields that are not part of the task record are rejected with 400. The response is 201 with the created task.
Example#
curl -X POST "https://app.automatenexuscrm.com/functions/v1/api/tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Send contract to TechStart",
"project_id": "0c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
"assigned_to": "b7e3c1d2-5f6a-4b8c-9d0e-1f2a3b4c5d6e",
"due_date": "2026-03-28T10:00:00Z",
"priority": "high",
"tags": ["contract"]
}'Update a Task#
PUT /api/tasks/:idUpdate task properties. Only include fields you want to change. The response is the updated task.
Complete a Task#
Completing a task is an update of its status. Send completed_at in the same request if you want the completion time recorded:
curl -X PUT "https://app.automatenexuscrm.com/functions/v1/api/tasks/9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "completed", "completed_at": "2026-03-27T15:30:00Z"}'Delete a Task#
DELETE /api/tasks/:idPermanently deletes the task. The response is {"message": "Task deleted successfully"}.
Search, Bulk, and Export#
- Search:
GET /api/search?q=contract&entities=tasksmatches task titles and descriptions and returns up tolimittasks (default 10) underresults.tasks. - Bulk:
POST /api/bulkwith"entity_type": "tasks","operation": "create"or"update", and adataarray (updates need each task'sid) creates or updates many tasks in one request and reportssuccess_countanderror_count. - Export:
POST /api/exportwith"entity_type": "tasks"and"format": "json"or"csv"returns every task, optionally filtered, for example"filters": {"status": "completed"}.
Activities#
Activities are the calls, emails, meetings, and notes logged on contacts, companies, customers, and deals; you see them under CRM → Activities and on each record's timeline. The REST API has no activities resource: activities cannot be listed or created through /api.
To attach a written record to a contact, company, deal, or customer through the API, create a note instead:
curl -X POST "https://app.automatenexuscrm.com/functions/v1/api/notes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Discovery call with Jane Smith",
"body_text": "Discussed requirements for the Q2 rollout. Interested in the enterprise plan.",
"target_type": "deal",
"target_id": "6d2f8b4a-1c3e-4f5a-9b7c-8d9e0f1a2b3c"
}'target_type may be contact, company, deal, or customer, and target_id must be a record in your organization. Provide at least a title or body_text. GET /api/notes?target_type=deal&target_id=<id> lists the notes on that record, newest first.
Troubleshooting#
- 400 mentioning
project_id: Every task needs aproject_id. Copy it from the project's URL in the app (/projects/<id>). - 400 mentioning
statusorpriority: Use one of the values listed above; they are lowercase with underscores (in_progress). - Task not appearing for assignee:
assigned_tomust be the user's ID — the same value theassignee.idfield returns for existing tasks. - Note not linking to a record:
target_typeandtarget_idmust both be present, and the record must exist in your organization; otherwise the request returns400or404and no note is created.