---
title: "Add many rows to a list in one call"
method: POST
path: "/workspace/tables/{id}/rows/bulk-create"
tags: ["workspace"]
---

# Add many rows to a list in one call

`POST /workspace/tables/{id}/rows/bulk-create`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/workspace/tables/{id}/rows/bulk-create`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

Appends rows, each with its cells, in one transaction: the whole batch lands or none of it does. `rows` is an array, each entry a map of columnId to value (string, number, boolean or null); a row may omit any column. The per-call limits are the MCP tool bulk_create_workspace_rows' own, a row ceiling and a cell ceiling, whichever is reached first; a batch over either is refused with 400 BULK_ROWS_SIZE, whose message names the ceiling and how many rows of this width fit. An unknown column id is 400 COLUMN_NOT_IN_TABLE and the row quota is checked for the whole batch (402 LIST_ROW_LIMIT_REACHED), and a batch that would take the list past the platform row ceiling per list is 422 SYSTEM_LIMIT_REACHED; none of these writes anything. Gated like adding one row (CONTRIBUTE on the list); JWT only (the workspace router denies PATs). Workflows do NOT run for these rows.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `rows` object[], required

## Response `201`

{ created, rows: [{ id, order }] } in the order given

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `403`: Forbidden - insufficient role

---

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