Documentation
Sign In

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/tasks
POST/api/tasks
GET/api/tasks/{id}
PATCH/api/tasks/{id}
DELETE/api/tasks/{id}

GET/api/tasks

Query parameters

FieldTypeDescription
searchstringFull-text search across task titles
assigneeUserIdstringFilter by assignee
dealIdstringFilter to tasks on a specific deal
deliverableIdstringFilter to tasks on a specific deliverable
statusstringFilter by status (see enumeration below)
sortBystringposition, dueDate, or createdAt
sortOrderstringasc or desc
limitintegerPage size (default: 50)
offsetintegerPagination 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

FieldTypeDescription
titlerequiredstringTask title
descriptionstringLonger description
dueDateinteger | stringDue date — Unix ms or ISO string
statusstringTask status (default: open)
assigneeUserIdstringAssigned user
dealIdstringAssociated deal
contactIdstringAssociated contact
deliverableIdstringAssociated deliverable
positionintegerSort position within its column
isInternalbooleanInternal-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

FieldTypeDescription
titlestringTask title
descriptionstringLonger description
dueDateinteger | stringDue date — Unix ms or ISO string
statusstringTask status (default: open)
assigneeUserIdstringAssigned user
dealIdstringAssociated deal
contactIdstringAssociated contact
deliverableIdstringAssociated deliverable
positionintegerSort position within its column
isInternalbooleanInternal-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

  • open
  • in_progress
  • blocked
  • review
  • done