---
title: "Bulk create tasks"
method: POST
path: "/projects/{project_id}/tasks/bulk_create"
tags: ["Tasks"]
---

# Bulk create tasks

`POST /projects/{project_id}/tasks/bulk_create`

Bulk-creates up to 100 tasks inside a project. The request is all-or-nothing - if any task is invalid, no tasks are created and the response includes the failing array indices.

## Path parameters

- `project_id` integer, required

## Request body

- object
  - `bulk_tasks` object[], required
    - `name` string, required — Name of the task
    - `description` string — Description of the task - supports limited subset of HTML &lt;b&gt;, &lt;ul&gt;, &lt;li&gt;, &lt;br&gt;, and &lt;a&gt;.

## Response `200`

successfully creates the tasks.

- object
  - `data` TaskExtended[]
    - `id` integer
    - `name` string — Name of the task
    - `description` string — Description of the task - supports limited subset of HTML &lt;b&gt;, &lt;ul&gt;, &lt;li&gt;, &lt;br&gt;, and &lt;a&gt;.
    - `description_as_string` string — Plain text description of the task
    - `status` 'to_do' | 'pending_review' | 'approved' — Status of the task
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `assignees` Assignee[]
      - `id` integer
      - `email` string
    - `comments` Comment[]
      - `id` integer
      - `commentable_type` string — Type of the commentable (e.g. "Task")
      - `commentable_id` integer — ID of the commentable (e.g. "Task")
      - `commenter_type` string — Type of the commenter (e.g. "User" or "Assignee")
      - `commenter_id` integer — ID of the commenter (e.g. "User" or "Assignee")
      - `content` string — HTML content of the comment
      - `content_as_string` string — Plain text content of the comment
    - `project` Project
      - `id` integer
      - `name` string
      - `idempotency_key` string
      - `metadata` object
      - `due_date` string, date-time
      - `assignees` Assignee[]
        - `id` integer
        - `email` string
      - `user` User
        - `id` integer
        - `email` string
      - `tags` Tag[]
        - `id` integer
        - `name` string
      - `tasks` Task[]
        - `id` integer
        - `name` string — Name of the task
        - `description` string — Description of the task - supports limited subset of HTML &lt;b&gt;, &lt;ul&gt;, &lt;li&gt;, &lt;br&gt;, and &lt;a&gt;.
        - `status` 'to_do' | 'pending_review' | 'approved' — Status of the task
      - `project_status` ProjectStatus
        - `id` integer
        - `name` string
        - `position` integer
    - `attached_files` AttachedFile[] — Task-level and assignee task file attachments.
      - `attachment_id` integer — Identifier used to retrieve this file's text extraction.
      - `blob_id` integer
      - `filename` string
      - `content_type` string
      - `byte_size` integer
      - `download_url` string, uri, nullable — Temporary download URL valid for 10 minutes.
      - `created_at` string, date-time

## Other responses

- `400` — bulk_tasks is missing, is not an array, or contains more than 100 tasks.
- `422` — one or more tasks failed validation; no tasks were created.

---

[API](https://skmtc.net/gettruss/apis/api-v1.md) · [All operations](https://skmtc.net/gettruss/apis/api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gettruss/api-v1/revisions/9418bb2b65bf/schema)
