---
title: "Replace a data row’s cells"
method: PUT
path: "/api/v1/rest/tabelle/tables/{table}/rows/{row_id}"
tags: ["Data tables"]
---

# Replace a data row’s cells

`PUT /api/v1/rest/tabelle/tables/{table}/rows/{row_id}`

## Request

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

REPLACES a row’s cells with `data` — it never merges, so a column you leave out is emptied rather than left alone. Read the row with tabelle_search_rows first and send back every column you mean to keep. Runs already started keep the string they stored, so editing a row does not rewrite an approval already in flight.

## Path parameters

- `table` string, required
- `row_id` string, uuid, 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)
