Raw schema
{
"type": "object",
"properties": {
"assignee_user_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Filter tasks by assignee."
},
"completed_after": {
"description": "Only include tasks completed at or after this moment; the boundary itself matches. Setting it narrows the result to completed tasks. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole day in UTC.",
"examples": [
"2026-08-03",
"2026-08-03T14:30:00Z"
],
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"format": "date"
}
]
},
"completed_before": {
"description": "Only include tasks completed at or before this moment; the boundary itself matches. Setting it narrows the result to completed tasks. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole day in UTC.",
"examples": [
"2026-08-03",
"2026-08-03T14:30:00Z"
],
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"format": "date"
}
]
},
"count_only": {
"type": "boolean",
"description": "If true, return only {\"count\": N}: the exact number of matching tasks, no rows โ use for \"how many\". Ignores page, page_size, verbose, fields.",
"default": false
},
"created_after": {
"description": "Only include tasks created at or after this moment; the boundary itself matches. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole day in UTC.",
"examples": [
"2026-08-03",
"2026-08-03T14:30:00Z"
],
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"format": "date"
}
]
},
"created_before": {
"description": "Only include tasks created at or before this moment; the boundary itself matches. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole day in UTC.",
"examples": [
"2026-08-03",
"2026-08-03T14:30:00Z"
],
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"format": "date"
}
]
},
"created_by_user_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Filter tasks by creator."
},
"date_filter": {
"type": "string",
"description": "Where the task's dates fall relative to today, in your own timezone. This is the filter for \"late\", \"overdue\", \"due today\", \"started\" and \"upcoming\"; omit it for no date restriction. overdue: due before today and not completed โ this is \"late\", and it never returns completed tasks whatever show_completed says. today: due today, without adding the overdue ones. thisweek: the calendar week containing today, the days of it already past included. upcoming: due today or later. started: the start date has arrived and the due date has not passed โ start date on or before today, and either no due date at all or one falling today or later. within7, within14, within30, within365: due between today and that many days from today, both days included. nodate: no start date, no due date and no milestone. anytime: no date restriction, what the endpoint applies when this is omitted. Completed tasks stay hidden unless show_completed is true, and overdue never returns one even then; for completed work alone use only_completed, which combines with any value here except overdue. A task with no due date of its own is matched on its milestone's.",
"enum": [
"anytime",
"overdue",
"today",
"tomorrow",
"yesterday",
"thisweek",
"upcoming",
"started",
"within7",
"within14",
"within30",
"within365",
"nodate",
"noduedate",
"nostartdate",
"hasdate"
]
},
"due_after": {
"type": "string",
"description": "Only include tasks due after this date, excluding the day itself โ unless due_before is set too, which makes both bounds inclusive. A task with no due date is matched on its milestone's.",
"examples": [
"2023-01-01"
],
"format": "date"
},
"due_before": {
"type": "string",
"description": "Only include tasks due before this date, excluding the day itself โ unless due_after is set too, which makes both bounds inclusive. A task with no due date is matched on its milestone's.",
"examples": [
"2023-12-31"
],
"format": "date"
},
"exclude_assignee_user_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Leave out tasks assigned to any of these users. A task is dropped when any one of the listed users is assigned to it, even when it also carries assignees you did not exclude. A user reached only through a team, company or job-role assignment on the task is not matched. Combines with assignee_user_ids and every other filter."
},
"fields": {
"type": "array",
"items": {
"type": "string",
"enum": [
"id",
"name",
"description",
"descriptionContentType",
"priority",
"progress",
"startDate",
"dueDate",
"estimateMinutes",
"tasklist",
"parentTask",
"assignees",
"tags",
"attachments",
"predecessors",
"subTaskIds",
"workflowStages",
"createdBy",
"createdAt",
"updatedBy",
"updatedAt",
"deletedBy",
"deletedAt",
"completedBy",
"completedAt",
"status"
]
},
"description": "The attributes to return for each task, from the listed names."
},
"match_all_tags": {
"type": "boolean",
"description": "If true, match all tags; if false, match any.",
"default": false
},
"only_completed": {
"type": "boolean",
"description": "If true, return only completed tasks. It combines with every other filter, date_filter included โ except date_filter=overdue, which never matches a completed task and so returns nothing. Tasks in completed tasklists still need show_completed."
},
"only_unassigned": {
"type": "boolean",
"description": "If true, only return tasks that have no assignee."
},
"only_unplanned": {
"type": "boolean",
"description": "If true, only return tasks that are unplanned, meaning they are missing an assignee, a due date, or estimated time."
},
"order_by": {
"type": "string",
"description": "The field to sort the tasks by. Omit to keep the ordering the API applies by default.",
"enum": [
"id",
"startdate",
"createdat",
"priority",
"project",
"flattenedtasklist",
"company",
"manual",
"active",
"completedat",
"duestartdate",
"alldates",
"tasklistname",
"tasklistdisplayorder",
"tasklistid",
"duedate",
"updatedat",
"taskname",
"createdby",
"completedby",
"assignedto",
"taskstatus",
"taskduedate",
"customfield",
"estimatedtime",
"boardcolumn",
"taskgroupid",
"taskgroupname",
"taskgroup",
"displayorder",
"projectmanual",
"stagedisplayorder",
"stage",
"parenttask"
]
},
"order_by_custom_field_id": {
"type": "integer",
"description": "The custom field to sort the tasks by. Required when order_by is \"customfield\", and ignored otherwise.",
"minimum": 1
},
"order_mode": {
"type": "string",
"description": "The direction to sort the results in.",
"enum": [
"asc",
"desc"
]
},
"page": {
"type": "integer",
"description": "Page number for pagination of results (1-based).",
"minimum": 1
},
"page_size": {
"type": "integer",
"description": "Number of results per page for pagination (1-500).",
"minimum": 1,
"maximum": 500
},
"project_id": {
"type": "integer",
"description": "The ID of the project from which to retrieve tasks. Omit to list tasks across all projects."
},
"search_term": {
"type": "string",
"description": "A search term to filter tasks by name."
},
"show_completed": {
"type": "boolean",
"description": "If true, include completed tasks and tasks belonging to completed tasklists; both excluded by default.",
"default": false
},
"start_after": {
"type": "string",
"description": "Only include tasks whose own start date falls on or after this date; the day itself matches. A task with no start date never matches โ there is no milestone fallback. There is no upper bound on the start date, so for work that has already begun use date_filter=started instead.",
"examples": [
"2023-01-01"
],
"format": "date"
},
"tag_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "A list of tag IDs to filter tasks by tags."
},
"tasklist_id": {
"type": "integer",
"description": "The ID of the tasklist from which to retrieve tasks. Takes precedence over project_id."
},
"updated_after": {
"description": "Only include tasks updated strictly after this moment; the boundary itself does not match. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole day in UTC.",
"examples": [
"2026-08-03",
"2026-08-03T14:30:00Z"
],
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"format": "date"
}
]
},
"updated_before": {
"description": "Only include tasks updated strictly before this moment; the boundary itself does not match. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole day in UTC.",
"examples": [
"2026-08-03",
"2026-08-03T14:30:00Z"
],
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"format": "date"
}
]
},
"verbose": {
"type": "boolean",
"description": "If false, returns id + name only โ useful when scanning many results.",
"default": true
}
}
}