---
title: "Update Table Records"
method: PATCH
path: "/api/v3/data/{baseId}/{tableId}/records"
tags: ["Table Records"]
---

# Update Table Records

`PATCH /api/v3/data/{baseId}/{tableId}/records`

## Request

- Base URL: `https://app.nocodb.com`
- URL: `https://app.nocodb.com/api/v3/data/{baseId}/{tableId}/records`
- Auth: one of:
  - API key in header `xc-token`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/nocodb/apis/nocodb-v3/docs/api/v3/data/:baseId/:tableId/records/patch.ts> (a function with typed inputs; its response is checked against the schema)

Update one or more records, addressed by `id`. Send a single object or an array; the array length is capped per deployment (10 by default) and a longer request answers `422`.

Only the fields you send are changed. Writing a link field replaces that record's link set rather than adding to it.

## Query parameters

- `view_id` string
- `linksAsLtar` 'true'
- `fieldIdOnResult` 'true'

## Headers

- `xc-token` string, required

## Request body

- union
  - DataUpdateRequestV3: V3 Data Update Request format
    - `id` union, required: Record identifier
      - string
      - number
    - `fields` object, required: Record fields data to update
  - DataUpdateRequestV3[]: Up to 10 records per request by default; the cap is configured per deployment and exceeding it returns 422. Each entry must carry the record id.
    - `id` union, required: Record identifier
      - string
      - number
    - `fields` object, required: Record fields data to update

## Response `200`

OK

- DataUpdateResponseV3: V3 Data Update Response format
  - `records` object[], required: Array of updated record identifiers
    - `id` union, required: Updated record identifier
      - string
      - number
    - `fields` object: Record fields data, excluding the primary key. Always present; an empty object when the record has no other fields.
  - `warnings` string[]: Present when part of the write was not applied, e.g. computed fields named in the payload.
  - `ignored_fields` string[]: Titles of computed fields (Formula, Lookup, Rollup, ...) named in the payload. Their values are calculated, so they were not written.

## Other responses

- `400`: BadRequest
- `422`: Unprocessable Entity — more records than the deployment's bulk cap (`ERR_MAX_PAYLOAD_LIMIT_EXCEEDED`), a value that is not valid for its field's type, or a malformed composite record id. A link id matching no row answers `404`; a property outside `fields` answers `400`; unrecognised keys inside `fields` are ignored.

## Changes

- **2026-10-13** `2ba4267a99d7`: 6 info
  - added the new optional `query` request parameter `fieldIdOnResult`
  - added the new optional `query` request parameter `linksAsLtar`
  - added the new optional `query` request parameter `view_id`
  - added the non-success response with the status `422`
  - …2 more

[Operation history](https://skmtc.dev/nocodb/apis/nocodb-v3/changes/api/v3/data/:baseId/:tableId/records/patch.md)

---

[API](https://skmtc.dev/nocodb/apis/nocodb-v3.md) - [All operations](https://skmtc.dev/nocodb/apis/nocodb-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/nocodb/apis/nocodb-v3/revisions/62a735aaf849?raw)
