---
title: "Set a table cell value"
method: POST
path: "/tables/{table_id}/cells/"
tags: ["table-rows"]
---

# Set a table cell value

`POST /tables/{table_id}/cells/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/tables/{table_id}/cells/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Edit one manual cell (read-your-writes: the response carries the post-write row state and version). When the edit marks formula dependents stale, a small scope is recomputed INLINE inside this request: those columns are listed in `recomputed_column_ids` and their final values are already in `cells`, with no run requested. A larger scope instead requests a cell-edited recompute run that appears on the next active-runs poll; the response never carries a run ID. A same-value edit writes nothing, recomputes nothing, and requests no run.

A Select or Multi-select cell takes only the column's own options (its `type_options.choices`): a value is matched to one ignoring case and spacing and stored as the option is spelled, and anything else is refused with a 422 `cell_value_not_a_choice` that lists the options.

## Path parameters

- `table_id` string, uuid, required

## Request body

- TableCellEditRequestSchema: Request body for editing one manual cell.
  - `column_id` string, uuid, required
  - `record_id` string, uuid, required
  - `value` union, required
    - string
    - integer
    - number
    - boolean
    - string, date-time
    - string, date
    - CellValueInput[]
    - object

## Response `200`

Successful Response

- TableCellMutationResponseSchema: Read-your-writes result of a cell mutation. Never carries a run ID. When ``recomputed_column_ids`` is non-empty the downstream formula values are already final in ``cells``; otherwise the recompute run appears on the next active-runs poll. ``stale_column_ids`` is empty on a same-value edit, which writes nothing. Each returned cell carries its own version, which is what the client gates its cache on.
  - `cells` object, required
  - `column_id` string, uuid, required
  - `recomputed_column_ids` string[]: Formula columns recomputed INLINE within this request. Their values in `cells` are final and no background run was requested. Empty when a run was queued instead, in which case those cells arrive later.
  - `record_id` string, uuid, required
  - `stale_column_ids` string[], required: Transitive formula dependents now marked stale; empty on a same-value edit.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Row or column not found
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
