---
title: "Add a row to a data table"
method: POST
path: "/api/v1/rest/tabelle/tables/{table}/rows"
tags: ["Data tables"]
---

# Add a row to a data table

`POST /api/v1/rest/tabelle/tables/{table}/rows`

## Request

- Base URL: `https://api.custodo.ai`
- URL: `https://api.custodo.ai/api/v1/rest/tabelle/tables/{table}/rows`
- Auth: HTTP bearer

Adds one row of master data to a table. `data` is keyed by column key and must satisfy the table’s own columns, so call tabelle_get_table first — a key it does not declare is refused, and so is a value of the wrong type. It does NOT de-duplicate: two rows sharing the value in a flow’s label column collapse into one option and only the first row’s other columns are ever read, so search before you add. At most 5000 rows per table, and only the first 500 ever become a dropdown’s options.

## Path parameters

- `table` string, required

## Headers

- `X-Tenant-Id` string, uuid

## Request body

- object
  - `data` object, required: The row’s cells, keyed by COLUMN KEY and never by label. Validated strictly against the table’s declared columns: an undeclared key is refused, a `number` column refuses "5000", a `boolean` column refuses "true", and a `date` column takes YYYY-MM-DD only (not 31/12/2026, not a timestamp). A required column may not be null, absent or blank. Call tabelle_get_table for the column list first.

## Response `200`

Done. `data` is the tool’s own answer.

- RestResult
  - `ok` true, required
  - `data` unknown, required

## Other responses

- `400`: The arguments did not validate: `error.message` names the field, what it expects and what arrived.
- `401`: No API key, or one that is malformed, unknown, revoked or expired.
- `403`: The call never ran: the module is off for this organisation, the credential lacks the permission or the module, the tier does not cover it, or the tool is destructive and the key was not minted for that.
- `404`: Nothing with that id in this organisation.
- `409`: The record is in a state that does not allow it — under legal hold, already sent, already closed. `error.code` says which.
- `422`: The tool ran and refused, in a sentence of its own (`TOOL_REFUSED`): the message says what to change. Retrying the same call will not help.
- `429`: The API key has spent its minute, or its day. Every request a key makes counts. See `Retry-After`.

---

[API](https://skmtc.dev/custodo/apis/custodo-integrazioni.md) · [All operations](https://skmtc.dev/custodo/apis/custodo-integrazioni/llms.txt) · [OpenAPI document](https://skmtc.dev/custodo/apis/custodo-integrazioni/revisions/16d336d3ec2a?raw)
