---
search:
  tags:
    - Boards
    - PUT
seo:
  description: >-
    Rename a board, replace its definition, or both. Reference for the PUT
    /v1/boards/id/{board_id} endpoint in the Roboto REST API.
sidebar:
  label: Update board
  badge: PUT
title: Update board
type: openapi-operation
---
Rename a board, replace its definition, or both.

Authorization rules:
- Any member of the board's org can rename a shared board and replace its definition.
- The owner and the org's admins can change a personal board. Any other caller receives 401
  Unauthorized.
- A board outside the caller's org returns 404 Not Found.

Board names are unique per owner, so an admin who renames a member's personal board receives
409 Conflict when that member already owns a board of the new name.

Changing who can open a board is a separate request, ``PUT /id/<board_id>/access``.

A change that writes definition content must carry ``base_revision``, the revision the caller
loaded. If the stored revision differs, the write fails with 409
``RobotoBoardRevisionConflictException``, which carries the board record as stored so the
caller can resolve the conflict without another request. The authorization check and the
revision check run in one transaction that holds the board's row lock.

#### Access control
 - requires_org
 - Restricted tokens cannot call this endpoint

`PUT /v1/boards/id/{board_id}`

**Request body** (`application/json`, required)

- `board_definition` (object | null)
- `base_revision` (integer | null)
- `name` (string | null)

Request body example:

```json
{
  "board_definition": {},
  "base_revision": 0,
  "name": "string"
}
```

**Responses**

- `200` — OK
- `400` — Thrown when the conversation context (messages, system prompt, tool results) exceeds the model's context window limit. The token estimate and the model's context limit are not carried on the exception, so a caller cannot read usage numbers off it.
- `401` — Thrown when authentication fails
- `403` — Thrown if an operation would exceed a user or org level limit.
- `404` — Thrown if a user is attempting to perform an action unrecognized by the Roboto platform.
- `409` — Thrown if there is a conflict between a resource you're creating and another existing resource
- `410` — Thrown if a resource is missing or expired.
- `500` — An error the platform reported that this SDK release cannot resolve to a specific exception class. Reported for an element of a :py:class:\`\~roboto.http.BatchResponse\` whose error names a code this release defines no class for, or that arrived without a code, without a message, or as text that is not an error envelope at all. It carries whatever code and message the platform sent, so a caller handling the failure still learns what went wrong; when no message could be read, the message is the error's raw text. The error envelope carries no status code, so \`\`http\_status\_code\`\` reports the 500 inherited from :py:class:\`RobotoDomainException\` rather than the status the failure actually had.
- `501` — Thrown by shimmed out APIs which have not yet been implemented
- `503` — Thrown when a service is unavailable, such as when it's under heavy load and can't accept new requests. This is expected to be transient and ought to be retried.
- `504` — Thrown when the service times out while processing a request. This is exepcted to be transient and ought to be retried.
- `507` — Thrown when the server cannot complete the request because the response payload exceeds a storage or transport capacity limit (e.g., Lambda response size). This is NOT expected to be transient and should NOT be retried.

Response example, 200:

```json
{
  "data": {
    "board_definition": {},
    "board_id": "string",
    "created": "2019-08-24T14:15:22Z",
    "created_by": "string",
    "modified": "2019-08-24T14:15:22Z",
    "modified_by": "string",
    "name": "string",
    "org_id": "string",
    "owner_principal_id": "string",
    "revision": 0
  }
}
```
