> ## Documentation Index
> Fetch the complete documentation index at: https://www.mill.fyi/llms.txt
> Use this file to discover all available pages before exploring further.

# List and filter tasks

> Search and filter tasks in one board. Combine q, status, `assigneeId`, priority and sort. Without a status filter, done and wont_do tasks are hidden after 24 hours in that status. Set status explicitly to include older tasks in that status. Tasks are sorted by priority from urgent through none by default; status sort follows backlog, todo, in_progress, in_review, done, wont_do. Maximum 100 results per page, with total matching tasks and the current revision. Use either cursor continuation or a positive page number. Cursor cannot be combined with page or revision. Page requests clamp to the last available page; send the returned revision on subsequent page requests to reject changed lists.

Read access: a read-enabled personal or team REST API key, or a signed-in user. OAuth clients use the corresponding MCP tool through /mcp.

Search and filter tasks in one board. Combine q, status, `assigneeId`, priority and sort. Without a status filter, done and wont\_do tasks are hidden after 24 hours in that status. Set status explicitly to include older tasks in that status. Tasks are sorted by priority from urgent through none by default; status sort follows backlog, todo, in\_progress, in\_review, done, wont\_do. Maximum 100 results per page, with total matching tasks and the current revision. Use either cursor continuation or a positive page number. Cursor cannot be combined with page or revision. Page requests clamp to the last available page; send the returned revision on subsequent page requests to reject changed lists.

Priority is the default: urgent, high, medium, low, none. Without an explicit status filter, done and wont\_do tasks disappear from lists after 24 hours in that status but retain direct access. q searches title, description, acceptance criteria and identifier. `assigneeId`:unassigned finds tasks without an assignee.

MCP clients can use [`list_tasks`](https://www.mill.fyi/mcp-reference/list_tasks) for this operation.

[Request conventions](https://www.mill.fyi/api-reference/overview.md) · [API keys](https://www.mill.fyi/api-keys.md) · [MCP connections](https://www.mill.fyi/mcp-connections.md)


## OpenAPI

````yaml api-reference/openapi.json GET /api/boards/{boardId}/tasks
openapi: 3.1.0
info:
  title: Mill HTTP API
  version: 1.0.6
  description: >-
    All registered task-board, account, OAuth, MCP transport and health
    operations. MCP tool schemas come from runtime validators; account
    operations follow their server handlers. Example data is fictional.
    Generation imports routes without issuing requests or connecting to a
    database.
servers:
  - url: https://mill-api.example.com
security: []
paths:
  /api/boards/{boardId}/tasks:
    get:
      tags:
        - Tasks
      summary: List and filter tasks
      description: >-
        Search and filter tasks in one board. Combine q, status, `assigneeId`,
        priority and sort. Without a status filter, done and wont_do tasks are
        hidden after 24 hours in that status. Set status explicitly to include
        older tasks in that status. Tasks are sorted by priority from urgent
        through none by default; status sort follows backlog, todo, in_progress,
        in_review, done, wont_do. Maximum 100 results per page, with total
        matching tasks and the current revision. Use either cursor continuation
        or a positive page number. Cursor cannot be combined with page or
        revision. Page requests clamp to the last available page; send the
        returned revision on subsequent page requests to reject changed lists.


        Priority is the default: urgent, high, medium, low, none. Without an
        explicit status filter, done and wont_do tasks disappear from lists
        after 24 hours in that status but retain direct access. q searches
        title, description, acceptance criteria and identifier.
        `assigneeId`:unassigned finds tasks without an assignee.


        Read access: a read-enabled personal or team REST API key, or a
        signed-in user. OAuth clients use the corresponding MCP tool through
        /mcp.
      operationId: get_api_boards_by_boardId_tasks
      parameters:
        - name: boardId
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            The boardId from the corresponding list, record or authorization
            response.
        - name: q
          in: query
          required: false
          schema:
            type: string
            maxLength: 300
          description: string
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - backlog
              - todo
              - in_progress
              - in_review
              - done
              - wont_do
          description: backlog, todo, in_progress, in_review, done, wont_do
        - name: assigneeId
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              - type: string
                const: unassigned
          description: JSON value
        - name: priority
          in: query
          required: false
          schema:
            type: string
            enum:
              - none
              - low
              - medium
              - high
              - urgent
          description: none, low, medium, high, urgent
        - name: sort
          in: query
          required: false
          schema:
            type: string
            enum:
              - createdAt
              - updatedAt
              - dueDate
              - priority
              - status
              - title
          description: createdAt, updatedAt, dueDate, priority, status, title
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
          description: integer
        - name: cursor
          in: query
          required: false
          schema:
            type: string
            maxLength: 1000
          description: string
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 9007199254740991
          description: integer
        - name: revision
          in: query
          required: false
          schema:
            type: string
            pattern: ^[a-f0-9]{32}$
          description: string
      responses:
        '200':
          description: >-
            Successful response. Examples are illustrative; field values vary by
            record.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        boardId:
                          type: string
                        identifier:
                          type: string
                        title:
                          type: string
                        description:
                          type: string
                        acceptanceCriteria:
                          type: string
                        type:
                          type: string
                        status:
                          type: string
                        priority:
                          type: string
                        assigneeId:
                          type: string
                        startDate:
                          type: string
                        dueDate:
                          type: string
                        version:
                          type: integer
                        statusChangedAt:
                          type: string
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                        createdBy:
                          type: string
                      additionalProperties: true
                  hasMore:
                    type: boolean
                  nextCursor:
                    type:
                      - string
                      - 'null'
                  total:
                    type: integer
                  page:
                    type: integer
                  revision:
                    type: string
                additionalProperties: true
                description: >-
                  Illustrative response shape. Fields can be absent in alternate
                  successful flows; see the operation description and example.
              example:
                items:
                  - id: 22222222-2222-4222-8222-222222222222
                    boardId: 11111111-1111-4111-8111-111111111111
                    identifier: ENG-1
                    title: Verify database restore
                    description: Restore a recent backup into an isolated database.
                    acceptanceCriteria: |-
                      - Confirm task and comment counts match
                      - Record the result
                    type: task
                    status: todo
                    priority: high
                    assigneeId: 66666666-6666-4666-8666-666666666666
                    startDate: '2027-01-18'
                    dueDate: '2027-01-20'
                    version: 1
                    statusChangedAt: '2027-01-18T09:30:00.000Z'
                    createdAt: '2027-01-18T09:30:00.000Z'
                    updatedAt: '2027-01-18T09:30:00.000Z'
                    createdBy: 66666666-6666-4666-8666-666666666666
                hasMore: false
                nextCursor: null
                total: 1
                page: 1
                revision: 0123456789abcdef0123456789abcdef
        default:
          description: >-
            Request failure. Inspect code, message and requestId; respect
            Retry-After on HTTP 429.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
        - sessionCookie: []
components:
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - requestId
          properties:
            code:
              type: string
            message:
              type: string
            requestId:
              type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Personal or team Mill REST API key
    sessionCookie:
      type: apiKey
      in: cookie
      name: mill_session
      description: >-
        Signed-in human browser session; mutation requests also need the exact
        UI Origin

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.