---
title: "List tasks"
method: GET
path: "/api/v1/tasks"
tags: ["Tasks"]
---

# List tasks

`GET /api/v1/tasks`

Returns a paginated, agency-scoped list of tasks ordered by urgency (earliest due date first, newest first within a day). Filter by assignee (`ownerId`), linked person or company, status, priority, or an inclusive due-date range.

## Query parameters

- `ownerId` string, uuid — Only tasks assigned to this user
- `personId` string, uuid — Only tasks linked to this person
- `companyId` string, uuid — Only tasks linked to this company
- `status` 'pending' | 'completed' | 'canceled' — Filter by status
- `priority` 'high' | 'medium' | 'low' — Filter by priority
- `dueDateFrom` string — Only tasks due on or after this date (YYYY-MM-DD, inclusive)
- `dueDateTo` string — Only tasks due on or before this date (YYYY-MM-DD, inclusive)
- `page` integer — Page number (1-indexed)
- `pageSize` integer — Items per page (max 100)
- `perPage` integer — Alias for pageSize

## Response `200`

List of tasks

- object
  - `status` 'ok', required
  - `data` object[], required
    - `id` string, uuid, required
    - `content` string, required
    - `dueDate` string, nullable, required — Due date (YYYY-MM-DD)
    - `status` 'pending' | 'completed' | 'canceled', required
    - `priority` 'high' | 'medium' | 'low', required
    - `type` string, required — `person`, `company` or `general` — inferred from the linked entity
    - `evidence` string, nullable, required — Source context for AI-generated tasks
    - `owner` object, nullable, required — The assigned user
      - `id` string, uuid, required
      - `name` string, nullable, required
    - `person` object, nullable, required — The linked person
      - `id` string, uuid, required
      - `name` string, nullable, required
    - `company` object, nullable, required — The linked company
      - `id` string, uuid, required
      - `name` string, nullable, required
    - `tags` object[], required
      - `id` string, uuid, required
      - `name` string, required
    - `createdAt` string, date-time, nullable, required
    - `updatedAt` string, date-time, nullable, required
  - `pagination` object, required
    - `page` integer, required — Current page number (1-indexed)
    - `pageSize` integer, required — Items per page
    - `total` integer, required — Total tasks matching the filter, across all pages
    - `totalPages` integer, required — Total number of pages

## Other responses

- `401` — Unauthorized - missing or invalid API key
- `422` — Validation error - the request body or query parameters failed validation
- `429` — Too many requests - the caller has exceeded the per-agency rate limit for the tier this endpoint counts against (default per minute: 1200 read / 400 write / 60 upload). Inspect the `RateLimit-*` headers — returned on every response, not only on 429s — and back off until the window resets. See the "Rate limits" section of the introduction for details.

## Changes

- **2026-09-16** `c619c65fbd97` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/recruitwithatlas/apis/atlas-api/changes/api/v1/tasks/get.md)

---

[API](https://skmtc.dev/recruitwithatlas/apis/atlas-api.md) · [All operations](https://skmtc.dev/recruitwithatlas/apis/atlas-api/llms.txt) · [OpenAPI document](https://skmtc.dev/recruitwithatlas/apis/atlas-api/revisions/bfc1118eeb5d?raw)
