---
title: "Update a record"
method: PATCH
path: "/records/{id}"
tags: ["Records"]
---

# Update a record

`PATCH /records/{id}`

## Request

- Base URL: `https://api.teamo360.com/api/v1`
- URL: `https://api.teamo360.com/api/v1/records/{id}`
- Auth: HTTP bearer

Merge patch of fields (every column type, status and owner columns included). Linked-record writes update both sides and refresh dependent lookups. Optional shortcuts: `status` sets the module's status column (option label or id) and `assigneeId` its owner column (a user id); null clears the cell. A module without that column ignores the shortcut, and a value in `fields` for the same column wins. Same on batch items. `fields_ops` (max 50) adds text instead of replacing it: `[{ "field": "<column id>" | "description", "op": "append" | "prepend", "value": "...", "separator"?: "..." }]`. Text, long text and document columns and the description only; an empty field just receives the value. Text joins with a space and long text with a new line unless `separator` (max 20 characters, text and long text only) says otherwise; document and description take the value as plain text, each line a new paragraph after (or before) the existing ones. A field may not be both in `fields` (or `description`) and in `fields_ops` (400 `field_op_conflict`). The write lands only if the field still holds what the ops were computed from; the server re-reads and retries, then answers 409 CONFLICT. Character limits apply to the result. An append is not idempotent: send an `Idempotency-Key` header and a retry of the same request returns its first answer instead of appending twice (a replay carries `Idempotent-Replayed: true`; the same key with a different request, or while the first is still running, is 409 IDEMPOTENCY_CONFLICT, the latter with `Retry-After`). A 4xx wrote nothing and frees the key, so a corrected retry runs; a 5xx is kept and replayed, because the change may have been saved: read the item, then retry with a new key if it was not. A batch replays its whole 207 answer under its key, so items it ran are never run twice: retry the failed items in a new request with a new key. Long text is plain multi-line text: a value that is a whole HTML document (it opens and closes with a block tag such as `<p>`) is converted to plain text, so text that must keep literal tags needs any other character before or after them.

Requires the `data:write` token scope.

## Path parameters

- `id` string, required

## Query parameters

- `typecast` string

## Request body

- object

## Response `200`

Success

## Other responses

- `400`: Malformed parameters or body
- `401`: Missing, invalid, expired, or legacy token
- `403`: Blocked by role, token scope, module grant, or org policy
- `404`: Entity missing or outside the principal’s access
- `429`: Rate limit exceeded - see Retry-After

---

[API](https://skmtc.dev/teamo360/apis/teamo-public-api.md) · [All operations](https://skmtc.dev/teamo360/apis/teamo-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/teamo360/apis/teamo-public-api/revisions/32528ecbc4f4?raw)
