List tasks
/v1/tasksPaginated list of tasks for the authenticated workspace. Filter by status (comma list), executor_type, source, priority, assigned_to (UUID), action_type (comma list); plus sort and pagination. Assignees/creators sideloaded under included. ## Filtering & sorting Filter via `POST /v1/records/query` (root `tasks`) or the `filters` model; operators are gated by each field's data type. See [Filtering & sorting](../filtering-and-sorting). **Filterable fields** | Field | Type | Allowed operators | |---|---|---| | `company_ref_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_subtasks_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `confidence_score` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `conversation_thread_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `created_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `deleted_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `description` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `done_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `due_date` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `executor_type` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `pk` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `priority` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `provider_ref_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `score` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `source` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `status` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `task_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `title` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `token_reward` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `updated_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `visible_date` | date | `eq` `lt` `gt` `is_null` `is_not_null` | **Sortable fields:** `company_ref_id`, `composite_subtasks_list`, `confidence_score`, `conversation_thread_id`, `created_at`, `deleted_at`, `description`, `done_at`, `due_date`, `executor_type`, `pk`, `priority`, `provider_ref_id`, `score`, `source`, `status`, `task_id`, `title`, `token_reward`, `updated_at`, `visible_date` (via `orderBy` / `sort`, `asc`|`desc`).
Requires a bearer token: Authorization: Bearer <token>.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| page | string | No | 1-based page number.e.g. Page |
| limit | string | No | Page size (1-1000).e.g. Limit |
| sort | string | No | Comma-separated sort fields (created_at, updated_at, due_date, title, status, source, priority); prefix - for desc.e.g. Sort |
| include_children | string | No | Include children.e.g. true |
| filter[status] | string | No | Comma list of: ice_log, open, in_progress, done, blocked, cancelled, archived.e.g. Filter[status] |
| filter[executor_type] | string | No | Executor type.e.g. human |
| filter[source] | string | No | Source.e.g. user |
| filter[priority] | string | No | Priority.e.g. low |
| filter[assigned_to] | string <uuid> | No | Assigned to.e.g. 00000000-0000-4000-8000-000000000000 |
| filter[action_type] | string | No | Comma list; unknown values dropped.e.g. Filter[action type] |
Request
curl -X GET https://api.wellapp.ai/v1/tasks \
-H "Authorization: Bearer $WELL_API_TOKEN"Responses
200 — Paginated task list (data, included people, meta.pagination).
{
"data": {}
}400 — Invalid query parameters.
{
"code": "BAD_REQUEST",
"status": 400,
"title": "Bad Request",
"message": "See title.",
"meta": {
"trace_id": "a1b2c3",
"log_id": "a1b2c3"
}
}401 — Missing or invalid Bearer token.
{
"code": "UNAUTHORIZED",
"status": 401,
"title": "Unauthorized",
"message": "See title.",
"meta": {
"trace_id": "a1b2c3",
"log_id": "a1b2c3"
}
}Filtering & sorting on related objects
This resource's related objects (the ones you can include) and how to filter or sort on each:
| Relationship | Cardinality | Filter on a field | Sort by a field |
|---|---|---|---|
workspace | to-one (workspace) | { "workspace": { "name": { "_eq": … } } } | "field": "workspace.name" ✅ |
template | to-one (task_template) | { "template": { "field_name": { "_eq": … } } } | "field": "template.field_name" ✅ |
parent_task | to-one (task) | { "parent_task": { "field_name": { "_eq": … } } } | "field": "parent_task.field_name" ✅ |
subtasks | to-many (task) | { "subtasks": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
assigned_to | to-one (people) | { "assigned_to": { "full_name": { "_eq": … } } } | "field": "assigned_to.full_name" ✅ |
created_by | to-one (people) | { "created_by": { "full_name": { "_eq": … } } } | "field": "created_by.full_name" ✅ |
Replace field_name with any field of the related object. See its object-reference page for the full field list.
Filter by a to-one relation (and sort by it):
{
"root": "tasks",
"whereClause": { "workspace": { "name": { "_ilike": "%acme%" } } },
"orderBy": { "field": "workspace.name", "direction": "asc" }
}Filter by a to-many relation (quantified — bare nesting is invalid):
{
"root": "tasks",
"whereClause": { "subtasks": { "_some": { "field_name": { "_gt": 0 } } } }
}