--- title: "Filters" date: 2024-03-09T19:51:32+02:00 draft: false type: doc menu: sidebar: parent: "usage" --- # Filter Syntax To filter tasks via the api, you can use a query syntax similar to SQL. This document is about filtering via the api. To filter in Vikunja's web ui, check out the help text below the filter query input. {{< table_of_contents >}} ## Available fields The available fields for filtering include: * `done`: Whether the task is completed or not * `priority`: The priority level of the task (1-5) * `percentDone`: The percentage of completion for the task (0-100) * `dueDate`: The due date of the task * `startDate`: The start date of the task * `endDate`: The end date of the task * `doneAt`: The date and time when the task was completed * `assignees`: The assignees of the task * `labels`: The labels associated with the task * `project`: The project the task belongs to (only available for saved filters, not on a project level) You can date math to set relative dates. Click on the date value in a query to find out more. All strings must be either single-word or enclosed in `"` or `'`. This extends to date values like `2024-03-11`. ## Operators The available operators for filtering include: * `!=`: Not equal to * `=`: Equal to * `>`: Greater than * `>=`: Greater than or equal to * `<`: Less than * `<=`: Less than or equal to * `like`: Matches a pattern (using wildcard `%`) * `in`: Matches any value in a comma-seperated list of values To combine multiple conditions, you can use the following logical operators: * `&&`: AND operator, matches if all conditions are true * `||`: OR operator, matches if any of the conditions are true * `(` and `)`: Parentheses for grouping conditions ## Examples Here are some examples of filter queries: * `priority = 4`: Matches tasks with priority level 4 * `dueDate < now`: Matches tasks with a due date in the past * `done = false && priority >= 3`: Matches undone tasks with priority level 3 or higher * `assignees in [user1, user2]`: Matches tasks assigned to either "user1" or "user2 * `(priority = 1 || priority = 2) && dueDate <= now`: Matches tasks with priority level 1 or 2 and a due date in the past