---
title: "POST /items"
method: POST
path: "/items"
tags: ["Work Items and OKRs"]
---

# POST /items

`POST /items`

Bulk-create work items (workspace / portfolio / OKR) in one call. Accepts an
array of the same payload as POST /item plus a shared options envelope.
Partial-success: each item is validated/resolved and written independently;
failures are isolated and reported per item (keyed by request index) so the
caller can retry only the failures. Max 100 items.

## Request body

- BulkItemCreateRequest
  - `items` ItemCreate[], required
    - `type` string, required
    - `workspaceId` string
    - `portfolioId` string
    - `title` string, required
    - `parent` NullableTypeEntityId
      - `id` string
    - `description` string, nullable
    - `storyPoints` number, double, nullable
    - `initiativeId` string, nullable
    - `value` number, double, nullable
    - `effort` number, double, nullable
    - `kano` string, nullable
    - `estimatedHours` number, double, nullable
    - `labels` string[]
    - `actualStartDate` string, date-time, nullable
    - `actualEndDate` string, date-time, nullable
    - `status` NullableTypeEntityId
      - `id` string
    - `importance` NullableTypeEntityId
      - `id` string
    - `objectives` EntityId[], nullable
      - `id` string
    - `keyResults` EntityId[], nullable
      - `id` string
    - `persona` NullableTypeEntityId
      - `id` string
    - `personas` EntityId[], nullable
      - `id` string
    - `sprint` NullableTypeEntityId
      - `id` string
    - `quarter` NullableTypeEntityId
      - `id` string
    - `assignee` unknown
    - `customFields` CustomFieldValue[]
      - `id` string, required
      - `name` string
      - `value` union
        - string
        - number, double
      - `values` string[], nullable
      - `label` string
    - `outIn` OutIn
      - `quarter` boolean
      - `sprint` boolean
  - `options` BulkWriteOptions
    - `verbose` boolean — Return the full item body for each successful row (default: compact).

## Response `200`

Per-item results

- BulkWriteResult
  - `results` BulkItemResult[], required
    - `index` number, double, required
    - `status` 'ok' | 'error', required
    - `id` string
    - `mode` string
    - `error` object
      - `code` number, double, required
      - `message` string, required
    - `item` unknown
    - `result` unknown
  - `summary` BulkWriteSummary, required
    - `total` number, double, required
    - `succeeded` number, double, required
    - `failed` number, double, required

## Other responses

- `401` — No access to account
- `422` — Invalid request

---

[API](https://skmtc.net/craft/apis/craft-io-public-api.md) · [All operations](https://skmtc.net/craft/apis/craft-io-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/craft/craft-io-public-api/versions/2d001661c781/schema)
