---
title: "Import tasks"
method: POST
path: "/task/import/{projectId}"
tags: ["Tasks"]
---

# Import tasks

`POST /task/import/{projectId}`

Import tasks into a project. Each task is reported individually, so a partial import still returns 200.

## Path parameters

- `projectId` string, required

## Request body

- object
  - `tasks` object[], required
    - `title` string, required
    - `description` string
    - `status` string, required
    - `priority` string
    - `startDate` string, nullable
    - `dueDate` string, nullable
    - `userId` string, nullable

## Response `200`

Per-task import outcome

- TaskImportResult
  - `results` TaskImportSummary, required
    - `total` number, required
    - `successful` number, required
    - `failed` number, required
    - `tasks` unknown[], required — Per-task outcome, each carrying a success flag.
      - unknown

## Other responses

- `400` — Invalid body, or unknown project
- `401` — Missing or invalid credentials
- `403` — No workspace access, or missing task:create permission

## Changes

- **2026-08-24** `08bbb5bedb5d` — 3 breaking, 4 info
  - the request property `tasks/items/dueDate` became not nullable
  - the request property `tasks/items/startDate` became not nullable
  - the request property `tasks/items/userId` became not nullable
  - added the non-success response with the status `400`
  - …3 more
- **2026-07-11** `32cece1ebe43` — 2 breaking, 2 info
  - request body became required
  - the response's body type/format changed from ``/`` to `object`/`` for status `200`
  - added the new optional request property `tasks/items/startDate`
  - the request property `tasks/items/dueDate` became nullable
- **2026-03-05** `c45ef22a736c` — 1 breaking, 1 info
  - request property `tasks/items/userId` list-of-types was narrowed by removing types `null` from media type `application/json`
  - the request property `tasks/items/userId` became nullable
- **2026-03-04** `298877d6a79a` — 1 breaking, 1 info
  - the request property `tasks/items/userId` became not nullable
  - request property `tasks/items/userId` list-of-types was widened by adding types `null` to media type `application/json`
- **2026-02-21** `4b8811b821e6` — 1 breaking, 1 info
  - request property `tasks/items/userId` list-of-types was narrowed by removing types `null` from media type `application/json`
  - the request property `tasks/items/userId` became nullable

[Full history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/task/import/:projectId/post.md)

---

[API](https://skmtc.dev/usekaneo/apis/kaneo-api.md) · [All operations](https://skmtc.dev/usekaneo/apis/kaneo-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/usekaneo/kaneo-api/revisions/9d1da42c10ce/schema)
