Everything
One list of tasks across every project the caller can read, with filters, grouping, sorting and a cursor, and the caller's saved views of that list.
List tasks across projects
POST /api/v2/tasks/everything · beta
Lists tasks from every project the caller can read, filtered, grouped, sorted and paged.
It is a read sent as a POST, so a token needs the write scope. Every key of the body is optional, and an unknown key at any level is a 400.
Whatever the body says, the server reads only projects the caller can open and whose task list their role may read, leaves out closed, archived and restricted projects, other people's personal lists, private lists the caller is not on, and deleted or archived tasks.
| Auth | Session or API token with the write scope |
| Token limited to projects | Accepted, and held to its projects |
Body
| Field | Type | Required | Description |
|---|---|---|---|
filter.status | array | Up to 100 status names or whole-number keys. Names match exactly. | |
filter.statusType | string[] | Any of default_active, active, done, close, default_close. | |
filter.assignee | array | Up to 100 user ids, or unassigned. | |
filter.priority | string[] | Up to 100 priority names. | |
filter.dueDate | object | { from, to, none }. from and to are ISO dates or times in milliseconds. none: true means "no due date" and cannot be combined with a range. | |
filter.taskType | array | Up to 100 task type names or keys. | |
filter.tags | string[] | Up to 100 tag ids. | |
filter.search | string | Text of at most 200 characters. | |
filter.projectIds | id[] | Up to 500 project ids. It can only narrow what the caller may read. | |
filter.sprintIds | id[] | Up to 100 list ids: tasks that live in one of them or were added to one. A list the caller cannot open is ignored. | |
group | string | none, status, assignee, project, priority or dueDate. none when left out. | |
sort | object | { by, dir }. by is updatedAt or DueDate; dir is asc or desc. Newest update first when left out; DueDate defaults to asc. | |
cursor | string | The nextCursor of the page before. | |
limit | number | A whole number from 1. 50 when left out, and never more than 100. | |
includeSubtasks | boolean | false when left out: top-level tasks only. | |
includeClosedProjects | boolean | false when left out. true adds back closed projects only. | |
timezone | string | An IANA timezone name, used for due-date groups. UTC when left out. |
Request
POST /api/v2/tasks/everything
Authorization: Bearer <token>
companyid: <company id>
Content-Type: application/json
{
"filter": { "statusType": ["default_active", "active"], "assignee": ["<user id>"] },
"sort": { "by": "DueDate", "dir": "asc" },
"limit": 50
}Response
{
"status": true,
"statusText": "Tasks fetched successfully.",
"data": {
"rows": [
{
"_id": "<task id>",
"TaskName": "Write the release notes",
"TaskKey": "WEB-12",
"status": { "key": 2, "text": "Doing", "type": "active" },
"statusKey": 2,
"statusType": "active",
"Task_Priority": "HIGH",
"AssigneeUserId": ["<user id>"],
"DueDate": "2026-10-03T00:00:00.000Z",
"ProjectID": "<project id>",
"sprintId": "<list id>",
"TaskType": "task",
"TaskTypeKey": 1,
"tagsArray": [],
"subTasks": 0,
"ancestors": [],
"ParentTaskId": "",
"isParentTask": true,
"createdAt": "2026-10-01T09:30:00.000Z",
"updatedAt": "2026-10-01T09:30:00.000Z"
}
],
"groups": [{ "key": null, "count": 37 }],
"nextCursor": "<cursor>",
"projects": {
"<project id>": {
"_id": "<project id>",
"ProjectName": "Website",
"ProjectCode": "WEB",
"taskStatusData": [],
"taskTypeCounts": [],
"apps": [],
"isPersonal": false,
"edit": { "status": true, "priority": true }
}
}
}
}| Field | Description |
|---|---|
rows | Up to limit tasks. Each carries _id, TaskName, TaskKey, status, statusKey, statusType, Task_Priority, AssigneeUserId, DueDate, startDate, ProjectID, sprintId, folderObjId, TaskType, TaskTypeKey, tagsArray, subTasks, ancestors, ParentTaskId, isParentTask, createdAt, updatedAt and sprintArray (the list the task lives in, with its name). A task that was added to other lists also carries extraLists: each entry has projectId, sprintId, addedBy and addedAt, and name and projectName only for a list the caller can open. No custom field values. |
groups | On the first page, a list of { key, count } for the chosen group, counted over the same filter. key is null for "no value". With group: none it holds one entry with the total. On a later page it is null. |
nextCursor | A string when more rows exist, otherwise null. |
projects | A map by project id, for the projects the rows name. Each carries _id, ProjectName, ProjectCode, projectIcon, taskStatusData, taskTypeCounts, apps, statusType, isPersonal and edit: { status, priority }, which says whether the caller may change those two fields on that project's tasks. With group: project it also names every project counted; one that has no row on the page carries only _id, ProjectName, ProjectCode, projectIcon, statusType and isPersonal. |
Paging
Cursor. Send nextCursor back as cursor. A cursor is good only for the same workspace, person, filter, sort and the two include switches; with anything else it is a 400. The page size and the grouping may change between pages. Rows with no value for the sort key come last, in both directions.
Errors
| Status | When |
|---|---|
| 400 | An unknown key, a wrong type, a value out of range, or a cursor that does not fit the request. The body is { status: false, statusText: "Request refused", message, field }. |
| 401 | No token, a token that is invalid, expired or revoked, or no valid companyid header. |
| 403 | The token lacks the write scope, or its person is no longer a member of the workspace. The person holds no active seat in the workspace. |
| 429 | Too many requests from this address. Wait retryAfter seconds and send it again. |
List saved views
GET /api/v2/tasks/everything/views · beta
Lists the caller's own saved views of the Everything list, by name.
Any signed-in person with an active seat in the workspace may call it, and it lists only the views that person saved. Answers with data, sorted by name, each view with _id, name, settings, isDefault and updatedAt.
| Auth | Session or API token with the read scope |
| Token limited to projects | Refused |
Request
GET /api/v2/tasks/everything/views
Authorization: Bearer <token>
companyid: <company id>Response
{
"status": true,
"statusText": "Views fetched successfully.",
"data": [
{
"_id": "<view id>",
"name": "My open work",
"settings": {
"mode": "list",
"hideDone": true,
"group": "project",
"sortBy": "DueDate",
"sortDir": "asc"
},
"isDefault": false,
"updatedAt": "2026-10-01T09:30:00.000Z"
}
]
}Errors
| Status | When |
|---|---|
| 401 | No token, a token that is invalid, expired or revoked, or no valid companyid header. |
| 403 | The token lacks the read scope, or its person is no longer a member of the workspace. A token limited to projects is refused here. The person holds no active seat in the workspace. |
| 429 | Too many requests from this address. Wait retryAfter seconds and send it again. |
Save a view
POST /api/v2/tasks/everything/views · beta
Saves a view: a name and the settings of the Everything list.
A view belongs to the person who made it. A person can keep at most 50.
| Auth | Session or API token with the write scope |
| Token limited to projects | Refused |
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | 1 to 80 characters. |
settings | object | yes | An object with any of: mode (list, board, table), search (up to 200 characters), status, assignee, priority, taskType (lists of up to 100), projectIds (up to 500 ids), due (overdue, today, week, later, none or empty), group (none, status, assignee, project, priority, dueDate), sortBy (updatedAt, DueDate), sortDir (asc, desc), showSubtasks, hideDone, includeClosed (each true or false). An unknown key is refused. |
isDefault | boolean | Makes this the view the page opens with. Only one view is the default. |
Request
POST /api/v2/tasks/everything/views
Authorization: Bearer <token>
companyid: <company id>
Content-Type: application/json
{
"name": "My open work",
"settings": {
"mode": "list",
"hideDone": true,
"group": "project",
"sortBy": "DueDate",
"sortDir": "asc"
}
}Response
{
"status": true,
"statusText": "View saved.",
"data": {
"_id": "<view id>",
"name": "My open work",
"settings": {
"mode": "list",
"hideDone": true,
"group": "project",
"sortBy": "DueDate",
"sortDir": "asc"
},
"isDefault": false,
"updatedAt": "2026-10-01T09:30:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 400 | An unknown key, a missing or malformed field, or a value a setting does not take. The body names the field. |
| 401 | No token, a token that is invalid, expired or revoked, or no valid companyid header. |
| 403 | The token lacks the write scope, or its person is no longer a member of the workspace. A token limited to projects is refused here. The person holds no active seat in the workspace. |
| 429 | Too many requests from this address. Wait retryAfter seconds and send it again. |
Change a saved view
PATCH /api/v2/tasks/everything/views/:id · beta
Changes the name, the settings or the default mark of one of the caller's views.
Any signed-in person with an active seat in the workspace may call it, on a view that person saved; any other id answers 404. Reads name (string), settings (object) and isDefault (boolean) from the body, and changes the ones sent. Making a view the default clears the mark on the caller's other views. Answers with data: the view as it is now.
| Auth | Session or API token with the write scope |
| Token limited to projects | Refused |
Path parameters
| Name | Type | Description |
|---|---|---|
id | id | The view. |
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | 1 to 80 characters. | |
settings | object | Replaces the stored settings. The same keys as when saving a view. | |
isDefault | boolean | Makes this the default view, or stops it being the default. |
At least one of the three is required.
Request
PATCH /api/v2/tasks/everything/views/<id>
Authorization: Bearer <token>
companyid: <company id>
Content-Type: application/json
{ "name": "My open work, by due date" }Response
{
"status": true,
"statusText": "View saved.",
"data": {
"_id": "<view id>",
"name": "My open work, by due date",
"settings": {
"mode": "list",
"hideDone": true,
"group": "project",
"sortBy": "DueDate",
"sortDir": "asc"
},
"isDefault": false,
"updatedAt": "2026-10-01T09:30:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 400 | An unknown key, a missing or malformed field, or a value a setting does not take. The body names the field. |
| 401 | No token, a token that is invalid, expired or revoked, or no valid companyid header. |
| 403 | The token lacks the write scope, or its person is no longer a member of the workspace. A token limited to projects is refused here. The person holds no active seat in the workspace. |
| 404 | The view does not exist, or is someone else's. |
| 429 | Too many requests from this address. Wait retryAfter seconds and send it again. |
Delete a saved view
DELETE /api/v2/tasks/everything/views/:id · beta
Deletes one of the caller's views.
Any signed-in person with an active seat in the workspace may call it, on a view that person saved; any other id answers 404. The view is marked deleted and leaves the list, and its default mark is cleared. Answers with statusText View deleted. and no data.
| Auth | Session or API token with the write scope |
| Token limited to projects | Refused |
Path parameters
| Name | Type | Description |
|---|---|---|
id | id | The view. |
Request
DELETE /api/v2/tasks/everything/views/<id>
Authorization: Bearer <token>
companyid: <company id>Response
{ "status": true, "statusText": "View deleted." }Errors
| Status | When |
|---|---|
| 401 | No token, a token that is invalid, expired or revoked, or no valid companyid header. |
| 403 | The token lacks the write scope, or its person is no longer a member of the workspace. A token limited to projects is refused here. The person holds no active seat in the workspace. |
| 404 | The view does not exist, or is someone else's. |
| 429 | Too many requests from this address. Wait retryAfter seconds and send it again. |
