Tasks

The to-dos on the Tasks page: due dates, reminders, assignees, and links to contacts and opportunities.

The to-dos on the Tasks page: due dates, reminders, assignees, and links to contacts and opportunities.

Every route takes Authorization: Bearer <ACCESS_TOKEN> unless the auth line says otherwise. Ids are numbers. Errors use the shape on the errors page.

RouteScopeWhat it does
GET /v1/taskstasks.readA workspace's tasks, soonest due first.
GET /v1/tasks/{id}tasks.readOne task.
POST /v1/taskstasks.writeAdd a task to a workspace.
PATCH /v1/tasks/{id}tasks.writeChange any of its fields.
POST /v1/tasks/{id}/completetasks.writeMark it done.
POST /v1/tasks/{id}/reopentasks.writeMark a completed task open again.
DELETE /v1/tasks/{id}tasks.writeDelete it for good.

List tasks

GET https://api.bluereacher.com/v1/tasks

Auth: Bearer access token. Scope: tasks.read.

A workspace's tasks, soonest due first.

Open tasks by default. Undated tasks come after dated ones.

bucket gives the same groups as the Tasks page: overdue, today, upcoming and no_due (open tasks only; "today" is the UTC day).

Parameters

NameInTypeRequiredDescription
workspace_idquerynumberyesThe workspace.
statusqueryenumnoDefault open.
bucketqueryenumnoOverrides status.
assignee_idquerynumbernoOnly tasks assigned to this team member.
contact_idquerynumbernoOnly this contact's tasks.
opportunity_idquerynumbernoOnly this opportunity's tasks.
searchquerystringnoMatches the title.
pagequerynumbernoDefault 1.
limitquerynumberno1–100, default 25. Anything else is a 400.

Request

curl -X GET "https://api.bluereacher.com/v1/tasks?workspace_id=7&page=1&limit=25" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "data": [
    {
      "id": 300,
      "workspace_id": 7,
      "title": "Call Ann back about the quote",
      "description": null,
      "priority": "high",
      "status": "open",
      "due_at": "2026-11-03T09:00:00.000Z",
      "reminder_minutes_before": 15,
      "reminder_at": "2026-11-03T08:45:00.000Z",
      "assignee_id": 41,
      "contact_id": 1234,
      "contact": {
        "id": 1234,
        "first_name": "Ann",
        "last_name": "Lee",
        "email": "ann@example.com",
        "phone_number": "+61412345678",
        "company_name": "Lee Studio"
      },
      "opportunity_id": null,
      "opportunity": null,
      "completed_at": null,
      "created_at": "2026-10-27T09:00:00.000Z",
      "updated_at": "2026-10-27T09:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "max_limit": 100,
    "total": 1,
    "total_pages": 1
  }
}
StatusWhenMessage
200OK
400workspace_id missing, or a bad status / bucketworkspace_id is required
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): tasks.read. This integration was granted: …
404workspace_id does not exist or is not owned by the installer (same response for both)Workspace not found or not accessible to this token

Response fields

task: Each item in data. Fields:

FieldTypeDescription
idnumberTask id. Example: 300
workspace_idnumberThe workspace it belongs to. Example: 7
titlestringWhat has to be done.
descriptionstring, nullableDetails.
prioritystring"low", "medium" or "high". Example: medium
statusstring"open" or "completed". Example: open
due_atstring (ISO 8601), nullableWhen it is due, UTC.
reminder_minutes_beforenumber, nullableMinutes before due_at the assignee is reminded.
reminder_atstring (ISO 8601), nullableWhen the reminder goes out (worked out from the two above).
assignee_idnumber, nullableThe team member it is assigned to — the account owner or one of its subaccount admins.
contactobject, nullableThe linked contact: id, first_name, last_name, email, phone_number, company_name.
opportunityobject, nullableThe linked opportunity: id, name, status.
completed_atstring (ISO 8601), nullableWhen it was completed.

Get task

GET https://api.bluereacher.com/v1/tasks/{id}

Auth: Bearer access token. Scope: tasks.read.

One task.

Parameters

NameInTypeRequiredDescription
idpathnumberyesTask id.

Request

curl -X GET "https://api.bluereacher.com/v1/tasks/300" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "data": {
    "id": 300,
    "workspace_id": 7,
    "title": "Call Ann back about the quote",
    "description": null,
    "priority": "high",
    "status": "open",
    "due_at": "2026-11-03T09:00:00.000Z",
    "reminder_minutes_before": 15,
    "reminder_at": "2026-11-03T08:45:00.000Z",
    "assignee_id": 41,
    "contact_id": 1234,
    "contact": {
      "id": 1234,
      "first_name": "Ann",
      "last_name": "Lee",
      "email": "ann@example.com",
      "phone_number": "+61412345678",
      "company_name": "Lee Studio"
    },
    "opportunity_id": null,
    "opportunity": null,
    "completed_at": null,
    "created_at": "2026-10-27T09:00:00.000Z",
    "updated_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): tasks.read. This integration was granted: …
404Task does not exist or is not in a workspace of the installerTask not found or not accessible to this token

Response fields

task. Fields:

FieldTypeDescription
idnumberTask id. Example: 300
workspace_idnumberThe workspace it belongs to. Example: 7
titlestringWhat has to be done.
descriptionstring, nullableDetails.
prioritystring"low", "medium" or "high". Example: medium
statusstring"open" or "completed". Example: open
due_atstring (ISO 8601), nullableWhen it is due, UTC.
reminder_minutes_beforenumber, nullableMinutes before due_at the assignee is reminded.
reminder_atstring (ISO 8601), nullableWhen the reminder goes out (worked out from the two above).
assignee_idnumber, nullableThe team member it is assigned to — the account owner or one of its subaccount admins.
contactobject, nullableThe linked contact: id, first_name, last_name, email, phone_number, company_name.
opportunityobject, nullableThe linked opportunity: id, name, status.
completed_atstring (ISO 8601), nullableWhen it was completed.

Create task

POST https://api.bluereacher.com/v1/tasks

Auth: Bearer access token. Scope: tasks.write.

Add a task to a workspace.

With a due_at and reminder_minutes_before, the assignee (or the account owner) gets the same reminder as for a task made on the dashboard.

Parameters

NameInTypeRequiredDescription
workspace_idbodynumberyesThe workspace.
titlebodystringyesUp to 255 characters.
descriptionbodystringnoDetails, up to 5000 characters.
prioritybodyenumnoDefault medium.
due_atbodystringnoISO 8601. null for no due date.
reminder_minutes_beforebodynumberno0–43200. Needs a due_at. null for no reminder.
assignee_idbodynumbernoThe account owner, or a subaccount admin id from List subaccount admins. null to unassign.
contact_idbodynumbernoA contact in the same workspace. null to unlink.
opportunity_idbodynumbernoAn opportunity in the same workspace. null to unlink.

Request

curl -X POST "https://api.bluereacher.com/v1/tasks" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
  "workspace_id": 7,
  "title": "Call Ann back about the quote",
  "priority": "high",
  "due_at": "2026-11-03T09:00:00Z",
  "reminder_minutes_before": 15,
  "assignee_id": 41,
  "contact_id": 1234
}'

Responses

A 201 reply (Created):

{
  "success": true,
  "message": "Task created",
  "data": {
    "id": 300,
    "workspace_id": 7,
    "title": "Call Ann back about the quote",
    "description": null,
    "priority": "high",
    "status": "open",
    "due_at": "2026-11-03T09:00:00.000Z",
    "reminder_minutes_before": 15,
    "reminder_at": "2026-11-03T08:45:00.000Z",
    "assignee_id": 41,
    "contact_id": 1234,
    "contact": {
      "id": 1234,
      "first_name": "Ann",
      "last_name": "Lee",
      "email": "ann@example.com",
      "phone_number": "+61412345678",
      "company_name": "Lee Studio"
    },
    "opportunity_id": null,
    "opportunity": null,
    "completed_at": null,
    "created_at": "2026-10-27T09:00:00.000Z",
    "updated_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
201Created
400Missing or invalid fieldpriority must be one of: low, medium, high
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): tasks.write. This integration was granted: …
404workspace_id does not exist or is not owned by the installer (same response for both)Workspace not found or not accessible to this token

Response fields

task. Fields:

FieldTypeDescription
idnumberTask id. Example: 300
workspace_idnumberThe workspace it belongs to. Example: 7
titlestringWhat has to be done.
descriptionstring, nullableDetails.
prioritystring"low", "medium" or "high". Example: medium
statusstring"open" or "completed". Example: open
due_atstring (ISO 8601), nullableWhen it is due, UTC.
reminder_minutes_beforenumber, nullableMinutes before due_at the assignee is reminded.
reminder_atstring (ISO 8601), nullableWhen the reminder goes out (worked out from the two above).
assignee_idnumber, nullableThe team member it is assigned to — the account owner or one of its subaccount admins.
contactobject, nullableThe linked contact: id, first_name, last_name, email, phone_number, company_name.
opportunityobject, nullableThe linked opportunity: id, name, status.
completed_atstring (ISO 8601), nullableWhen it was completed.

Update task

PATCH https://api.bluereacher.com/v1/tasks/{id}

Auth: Bearer access token. Scope: tasks.write.

Change any of its fields.

Send only what changes. Changing due_at or reminder_minutes_before sets the reminder again. To complete or reopen, use the endpoints below.

Parameters

NameInTypeRequiredDescription
idpathnumberyesTask id.
titlebodystringnoUp to 255 characters.
descriptionbodystringnoDetails, up to 5000 characters.
prioritybodyenumnoDefault medium.
due_atbodystringnoISO 8601. null for no due date.
reminder_minutes_beforebodynumberno0–43200. Needs a due_at. null for no reminder.
assignee_idbodynumbernoThe account owner, or a subaccount admin id from List subaccount admins. null to unassign.
contact_idbodynumbernoA contact in the same workspace. null to unlink.
opportunity_idbodynumbernoAn opportunity in the same workspace. null to unlink.

Request

curl -X PATCH "https://api.bluereacher.com/v1/tasks/300" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
  "due_at": "2026-11-04T09:00:00Z",
  "priority": "medium"
}'

Responses

A 200 reply (OK):

{
  "success": true,
  "message": "Task updated",
  "data": {
    "id": 300,
    "workspace_id": 7,
    "title": "Call Ann back about the quote",
    "description": null,
    "priority": "medium",
    "status": "open",
    "due_at": "2026-11-04T09:00:00.000Z",
    "reminder_minutes_before": 15,
    "reminder_at": "2026-11-04T08:45:00.000Z",
    "assignee_id": 41,
    "contact_id": 1234,
    "contact": {
      "id": 1234,
      "first_name": "Ann",
      "last_name": "Lee",
      "email": "ann@example.com",
      "phone_number": "+61412345678",
      "company_name": "Lee Studio"
    },
    "opportunity_id": null,
    "opportunity": null,
    "completed_at": null,
    "created_at": "2026-10-27T09:00:00.000Z",
    "updated_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
200OK
400Nothing to update, or an invalid fieldassignee_id must be a member of this account
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): tasks.write. This integration was granted: …
404Task does not exist or is not in a workspace of the installerTask not found or not accessible to this token

Response fields

task. Fields:

FieldTypeDescription
idnumberTask id. Example: 300
workspace_idnumberThe workspace it belongs to. Example: 7
titlestringWhat has to be done.
descriptionstring, nullableDetails.
prioritystring"low", "medium" or "high". Example: medium
statusstring"open" or "completed". Example: open
due_atstring (ISO 8601), nullableWhen it is due, UTC.
reminder_minutes_beforenumber, nullableMinutes before due_at the assignee is reminded.
reminder_atstring (ISO 8601), nullableWhen the reminder goes out (worked out from the two above).
assignee_idnumber, nullableThe team member it is assigned to — the account owner or one of its subaccount admins.
contactobject, nullableThe linked contact: id, first_name, last_name, email, phone_number, company_name.
opportunityobject, nullableThe linked opportunity: id, name, status.
completed_atstring (ISO 8601), nullableWhen it was completed.

Complete task

POST https://api.bluereacher.com/v1/tasks/{id}/complete

Auth: Bearer access token. Scope: tasks.write.

Mark it done.

A reminder that has not gone out yet is cancelled.

Parameters

NameInTypeRequiredDescription
idpathnumberyesTask id.

Request

curl -X POST "https://api.bluereacher.com/v1/tasks/300/complete" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "message": "Task completed",
  "data": {
    "id": 300,
    "workspace_id": 7,
    "title": "Call Ann back about the quote",
    "description": null,
    "priority": "high",
    "status": "completed",
    "due_at": "2026-11-03T09:00:00.000Z",
    "reminder_minutes_before": 15,
    "reminder_at": "2026-11-03T08:45:00.000Z",
    "assignee_id": 41,
    "contact_id": 1234,
    "contact": {
      "id": 1234,
      "first_name": "Ann",
      "last_name": "Lee",
      "email": "ann@example.com",
      "phone_number": "+61412345678",
      "company_name": "Lee Studio"
    },
    "opportunity_id": null,
    "opportunity": null,
    "completed_at": "2026-10-27T11:00:00.000Z",
    "created_at": "2026-10-27T09:00:00.000Z",
    "updated_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): tasks.write. This integration was granted: …
404Task does not exist or is not in a workspace of the installerTask not found or not accessible to this token

Response fields

task. Fields:

FieldTypeDescription
idnumberTask id. Example: 300
workspace_idnumberThe workspace it belongs to. Example: 7
titlestringWhat has to be done.
descriptionstring, nullableDetails.
prioritystring"low", "medium" or "high". Example: medium
statusstring"open" or "completed". Example: open
due_atstring (ISO 8601), nullableWhen it is due, UTC.
reminder_minutes_beforenumber, nullableMinutes before due_at the assignee is reminded.
reminder_atstring (ISO 8601), nullableWhen the reminder goes out (worked out from the two above).
assignee_idnumber, nullableThe team member it is assigned to — the account owner or one of its subaccount admins.
contactobject, nullableThe linked contact: id, first_name, last_name, email, phone_number, company_name.
opportunityobject, nullableThe linked opportunity: id, name, status.
completed_atstring (ISO 8601), nullableWhen it was completed.

Reopen task

POST https://api.bluereacher.com/v1/tasks/{id}/reopen

Auth: Bearer access token. Scope: tasks.write.

Mark a completed task open again.

Its reminder is set again when it is still in the future.

Parameters

NameInTypeRequiredDescription
idpathnumberyesTask id.

Request

curl -X POST "https://api.bluereacher.com/v1/tasks/300/reopen" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "message": "Task reopened",
  "data": {
    "id": 300,
    "workspace_id": 7,
    "title": "Call Ann back about the quote",
    "description": null,
    "priority": "high",
    "status": "open",
    "due_at": "2026-11-03T09:00:00.000Z",
    "reminder_minutes_before": 15,
    "reminder_at": "2026-11-03T08:45:00.000Z",
    "assignee_id": 41,
    "contact_id": 1234,
    "contact": {
      "id": 1234,
      "first_name": "Ann",
      "last_name": "Lee",
      "email": "ann@example.com",
      "phone_number": "+61412345678",
      "company_name": "Lee Studio"
    },
    "opportunity_id": null,
    "opportunity": null,
    "completed_at": null,
    "created_at": "2026-10-27T09:00:00.000Z",
    "updated_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): tasks.write. This integration was granted: …
404Task does not exist or is not in a workspace of the installerTask not found or not accessible to this token

Response fields

task. Fields:

FieldTypeDescription
idnumberTask id. Example: 300
workspace_idnumberThe workspace it belongs to. Example: 7
titlestringWhat has to be done.
descriptionstring, nullableDetails.
prioritystring"low", "medium" or "high". Example: medium
statusstring"open" or "completed". Example: open
due_atstring (ISO 8601), nullableWhen it is due, UTC.
reminder_minutes_beforenumber, nullableMinutes before due_at the assignee is reminded.
reminder_atstring (ISO 8601), nullableWhen the reminder goes out (worked out from the two above).
assignee_idnumber, nullableThe team member it is assigned to — the account owner or one of its subaccount admins.
contactobject, nullableThe linked contact: id, first_name, last_name, email, phone_number, company_name.
opportunityobject, nullableThe linked opportunity: id, name, status.
completed_atstring (ISO 8601), nullableWhen it was completed.

Delete task

DELETE https://api.bluereacher.com/v1/tasks/{id}

Auth: Bearer access token. Scope: tasks.write.

Delete it for good.

Parameters

NameInTypeRequiredDescription
idpathnumberyesTask id.

Request

curl -X DELETE "https://api.bluereacher.com/v1/tasks/300" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "message": "Task deleted"
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): tasks.write. This integration was granted: …
404Task does not exist or is not in a workspace of the installerTask not found or not accessible to this token

On this page