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

# List queued and completed tasks

`GET /api/v1/tasks`

## Request

- Base URL: `https://www.zen-mode.io`
- URL: `https://www.zen-mode.io/api/v1/tasks`
- Auth: HTTP bearer

Newest first.

## Query parameters

- `status` 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled'
- `linkedin_account_id` string
- `limit` integer
- `offset` integer

## Response `200`

A page of tasks.

- object
  - `tasks` Task[]
    - `id` string: Task id, e.g. `task_mb3k2x1c_q8z0v7ke`.
    - `user_id` string
    - `linkedin_account_id` string, nullable: Your own label for the LinkedIn account, stored and returned as-is. It is not a ZenMode account id and does not choose which account runs the task.
    - `action_type` 'connect' | 'message' | 'follow' | 'view_profile' | 'withdraw_connection'
    - `payload` object
    - `status` 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled'
    - `result` object, nullable: What the desktop app reported when it ran the task. On a free or unconfirmed LinkedIn plan the connection request is sent without a note, and the task result carries `note_dropped: true` with `note_dropped_reason: "free_or_unconfirmed_plan"`. `note_dropped` is `false` when the note went out or none was requested, and absent on results from desktop versions that do not report it.
      - `note_dropped` boolean: `connect` tasks only. `true` when the connection request was sent without the note in `payload.message` because the LinkedIn plan is free or not confirmed as paid. `false` when the note went out or no note was requested. Absent when the desktop app that ran the task does not report it.
      - `note_sent` boolean: `connect` tasks only. `true` only when the note was typed into LinkedIn's note box and the request went out with it. `false` when the request went out without a note, for any reason, including a dropped note (`note_dropped: true`) and a task with no `payload.message`. Absent when the desktop app that ran the task does not report it.
      - `note_dropped_reason` 'free_or_unconfirmed_plan': Present only when `note_dropped` is `true`. `free_or_unconfirmed_plan`: the account is on a free LinkedIn plan, or ZenMode has not confirmed a paid plan (Premium or Sales Navigator).
    - `priority` integer
    - `created_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable
    - `started_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `retry_count` integer
  - `total` integer
  - `limit` integer
  - `offset` integer

## Other responses

- `401`: Missing, malformed or invalid Authorization header, or an unknown API key.
- `403`: The key is valid but the account's plan does not include API access.
- `429`: Rate limit exceeded (100 requests/minute). Carries `Retry-After`.
- `500`: Unhandled server error.

---

[API](https://skmtc.dev/zen-mode/apis/zenmode-api.md) · [All operations](https://skmtc.dev/zen-mode/apis/zenmode-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zen-mode/apis/zenmode-api/revisions/2769372f1e3f?raw)
