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

# List todos

> Lists todos for the project. With no status and no query, returns open todos. A query with no status searches every status. Pass a returned shortId to fetch one todo.



## OpenAPI

````yaml /api-reference/api.json get /v1/todos
openapi: 3.0.0
info:
  title: QA.tech API
  version: 1.0.0
  contact:
    name: QA.tech
    url: https://qa.tech
    email: support@qa.tech
  description: API for triggering and managing AI-powered test runs
servers:
  - url: https://api.qa.tech
    description: Production
    variables: {}
security:
  - BearerAuth: []
tags:
  - name: Runs
  - name: Infrastructure
  - name: Test Cases
  - name: Application Builds
  - name: Status badge
  - name: Remote Tunnels
  - name: Chat
  - name: Applications
  - name: Features
  - name: Metrics
  - name: Projects
  - name: Knowledge
  - name: Rules
  - name: Issues
  - name: Todos
  - name: Automations
paths:
  /v1/todos:
    get:
      tags:
        - Todos
      summary: List todos
      description: >-
        Lists todos for the project. With no status and no query, returns open
        todos. A query with no status searches every status. Pass a returned
        shortId to fetch one todo.
      operationId: ListTodos
      parameters:
        - name: query
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/ListTodosQuery'
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTodosResponse'
components:
  schemas:
    ListTodosQuery:
      type: object
      properties:
        status:
          anyOf:
            - $ref: '#/components/schemas/TodoStatus'
            - type: string
              enum:
                - all
          description: >-
            Filter by status. Omit to default to `open`, unless `query` is set,
            in which case every status is searched. Pass `all` to include every
            status.
        query:
          type: string
          description: Search title, description, and short id.
        limit:
          type: integer
          format: int32
          minimum: 1
          maximum: 100
          description: Maximum number of todos to return (1-100). Defaults to 20.
          default: 20
        offset:
          type: integer
          format: int32
          minimum: 0
          description: Number of todos to skip. Defaults to 0.
        projectShortId:
          allOf:
            - $ref: '#/components/schemas/ProjectShortId'
          description: >-
            Target a specific project by its prefixed short ID
            (proj-slug_shortId or proj_shortId), as returned by the projects
            API. Required for organization-scoped API keys; project-scoped keys
            may only pass their own project's short ID.
      description: >-
        Filters for listing todos. With no status and no query, open todos are
        returned.
    ListTodosResponse:
      type: object
      required:
        - todos
        - total
        - limit
        - offset
      properties:
        todos:
          type: array
          items:
            $ref: '#/components/schemas/TodoListItem'
        total:
          type: integer
          format: int32
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int32
    TodoStatus:
      type: string
      enum:
        - open
        - resolved
        - rejected
      description: >-
        Lifecycle of a todo. Rejected todos are kept so they are not filed
        again.
    ProjectShortId:
      type: string
      pattern: ^proj(-.+_.+|_.+)$
    TodoListItem:
      type: object
      required:
        - shortId
        - title
        - description
        - kind
        - status
        - priority
        - recommendedPath
        - fixPrompt
        - occurrenceCount
        - lastOccurredAt
        - applicationShortId
        - configShortId
        - relatedTestCaseIds
        - assigneeId
        - rejectedReason
        - url
        - createdAt
        - updatedAt
      properties:
        shortId:
          type: string
          description: >-
            Stable short ID. Pass to get or update, or open `url` in the
            dashboard.
        title:
          type: string
        description:
          type: string
          nullable: true
        kind:
          $ref: '#/components/schemas/TodoKind'
        status:
          $ref: '#/components/schemas/TodoStatus'
        priority:
          $ref: '#/components/schemas/TodoPriority'
        recommendedPath:
          allOf:
            - $ref: '#/components/schemas/TodoRecommendedPath'
          nullable: true
          description: '`manual`, `qa_tech_chat`, or `code_agent`. Null when unset.'
        fixPrompt:
          type: string
          nullable: true
          description: >-
            Customer-facing next step, and the request sent to QA.tech chat or
            copied to a code agent.
        occurrenceCount:
          type: integer
          format: int32
          description: >-
            Occurrences that count toward the inbox. Rows still awaiting a
            pull-request merge are excluded.
        lastOccurredAt:
          type: string
          description: When this need was most recently recorded.
        applicationShortId:
          type: string
          allOf:
            - $ref: '#/components/schemas/ApplicationShortId'
          nullable: true
          description: Application this todo is for, when it is scoped to one.
        configShortId:
          type: string
          allOf:
            - $ref: '#/components/schemas/ConfigShortId'
          nullable: true
          description: Config that needs to be created or improved, when one is known.
        relatedTestCaseIds:
          type: array
          items:
            type: string
          description: Project test case UUIDs blocked by this todo.
        assigneeId:
          type: string
          nullable: true
          description: Organization member assigned to the todo, or null.
        rejectedReason:
          type: string
          nullable: true
          description: >-
            Why a rejected todo should not be filed again. Null unless status is
            `rejected`.
        url:
          type: string
          description: Deep link to the todo in the QA.tech dashboard.
        createdAt:
          type: string
        updatedAt:
          type: string
      description: 'A todo in a project: follow-up that unblocks testing, not a product bug.'
    TodoKind:
      type: string
      enum:
        - credentials
        - integration
        - test_user
        - environment
        - ownership
        - device_preset
        - start_url
        - other
      description: Category of follow-up work a todo represents.
    TodoPriority:
      type: string
      enum:
        - low
        - medium
        - high
        - urgent
    TodoRecommendedPath:
      type: string
      enum:
        - manual
        - qa_tech_chat
        - code_agent
      description: Best single way to finish the todo.
    ApplicationShortId:
      type: string
      pattern: ^app(-.+_.+|_.+)$
    ConfigShortId:
      type: string
      pattern: ^cfg(-.+_.+|_.+)$
  securitySchemes:
    BearerAuth:
      type: http
      scheme: Bearer

````

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