Skip to content

Tasks & Activities API

Updated

On this page15

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/tasks

Query 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/:id

Returns 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/tasks

Request 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, or cancelled. Default: todo.
  • priority (string) — low, medium, high, or urgent. 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, or monthly. 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/:id

Update 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/:id

Permanently deletes the task. The response is {"message": "Task deleted successfully"}.

Search, Bulk, and Export#

  • Search: GET /api/search?q=contract&entities=tasks matches task titles and descriptions and returns up to limit tasks (default 10) under results.tasks.
  • Bulk: POST /api/bulk with "entity_type": "tasks", "operation": "create" or "update", and a data array (updates need each task's id) creates or updates many tasks in one request and reports success_count and error_count.
  • Export: POST /api/export with "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 a project_id. Copy it from the project's URL in the app (/projects/<id>).
  • 400 mentioning status or priority: Use one of the values listed above; they are lowercase with underscores (in_progress).
  • Task not appearing for assignee: assigned_to must be the user's ID — the same value the assignee.id field returns for existing tasks.
  • Note not linking to a record: target_type and target_id must both be present, and the record must exist in your organization; otherwise the request returns 400 or 404 and no note is created.

Was this page helpful?