Tasks
Manage work items. Tasks can be assigned, linked to deals and deliverables, and tracked through a simple status workflow.
Required scopes:tasks:readtasks:write
All endpoints require authentication with an API key via Authorization: Bearer anch_... — see Authentication. A :write scope implicitly includes its :read scope.
Quick example
curl "https://your-domain.com/api/tasks?status=in_progress&assigneeUserId=usr_123" \
-H "Authorization: Bearer anch_your_api_key"Endpoints
GET
/api/tasksPOST
/api/tasksGET
/api/tasks/{id}PATCH
/api/tasks/{id}DELETE
/api/tasks/{id}GET/api/tasks
Query parameters
| Field | Type | Description |
|---|---|---|
search | string | Full-text search across task titles |
assigneeUserId | string | Filter by assignee |
dealId | string | Filter to tasks on a specific deal |
deliverableId | string | Filter to tasks on a specific deliverable |
status | string | Filter by status (see enumeration below) |
sortBy | string | position, dueDate, or createdAt |
sortOrder | string | asc or desc |
limit | integer | Page size (default: 50) |
offset | integer | Pagination offset (default: 0) |
Response (200)
{
"data": [ { "id": "tsk_...", "title": "Draft proposal", "status": "open", ... } ],
"meta": { "total": 64, "limit": 50, "offset": 0 }
}POST/api/tasks
Body fields
| Field | Type | Description |
|---|---|---|
titlerequired | string | Task title |
description | string | Longer description |
dueDate | integer | string | Due date — Unix ms or ISO string |
status | string | Task status (default: open) |
assigneeUserId | string | Assigned user |
dealId | string | Associated deal |
contactId | string | Associated contact |
deliverableId | string | Associated deliverable |
position | integer | Sort position within its column |
isInternal | boolean | Internal-only task (default: false) |
Response (201)
{ "id": "tsk_V1StGXR8Z5jdHi6B" }GET/api/tasks/{id}
Response (200)
{
"data": {
"id": "tsk_V1StGXR8Z5jdHi6B",
"organizationId": "org_4f90...",
"title": "Draft proposal",
"description": "Initial scope and pricing",
"status": "in_progress",
"dueDate": 1739577600000,
"assigneeUserId": "usr_...",
"dealId": "dl_...",
"position": 2,
"isInternal": false,
"createdAt": 1736899200000,
"updatedAt": 1736899200000,
"deletedAt": null
}
}PATCH/api/tasks/{id}
PUT is also accepted. All fields are optional; only provided fields are updated.
Body fields
| Field | Type | Description |
|---|---|---|
title | string | Task title |
description | string | Longer description |
dueDate | integer | string | Due date — Unix ms or ISO string |
status | string | Task status (default: open) |
assigneeUserId | string | Assigned user |
dealId | string | Associated deal |
contactId | string | Associated contact |
deliverableId | string | Associated deliverable |
position | integer | Sort position within its column |
isInternal | boolean | Internal-only task (default: false) |
Response (200)
{ "ok": true }DELETE/api/tasks/{id}
Tasks are soft-deleted. Deleting a task cascades to its time entries.
Response (200)
{ "ok": true }Enumerations
Task statuses
openin_progressblockedreviewdone