# Edit a board node

> Rename a board node or change its description.

Canonical page: https://www.rundiffusion.com/docs/api/boards/nodes-update
Endpoint: PATCH /api/v2/boards/{board_id}/nodes/{node_id}
Authorization: OAuth device flow or Personal API Access Token or Company API Access Token

---

Changes a node's own details. A node's name belongs to the board, not to the
tool, so editing one here changes nothing about the tool or about any other
board. That is what makes a board holding the same tool twice readable.

`PATCH /api/v2/boards/{board_id}/nodes/{node_id}`

Authorization: OAuth device flow or Personal API Access Token or Company API Access Token

Editing a node needs edit access to the board, described under
[Who can edit a board](/docs/api/boards/update#who-can-edit-a-board).

## Request

**Headers**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `Authorization` | string | Yes | Bearer token. This endpoint accepts an OAuth device flow token, a Personal API Access Token, or a Company API Access Token. See [Authentication](/docs/api/authentication). |

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `board_id` | string | Yes | The board the node is on. |
| `node_id` | string | Yes | The node to rename, from [Get a board](/docs/api/boards/get). |

Send at least one field.

**Body**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `title` | string | No | New node name, up to 100 characters. Cannot be blank when sent. |
| `description` | string \| null | No | New description, up to 1000 characters. Send null or an empty string to clear it. |

cURL:

```bash
curl -X PATCH https://api2.rundiffusion.com/api/v2/boards/$BOARD_ID/nodes/$NODE_ID \
  -H "Authorization: Bearer $RUNDIFFUSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title": "Draft pass"}'
```

JavaScript:

```javascript
await fetch(
  `https://api2.rundiffusion.com/api/v2/boards/${boardId}/nodes/${nodeId}`,
  {
    method: 'PATCH',
    headers: {
      Authorization: `Bearer ${process.env.RUNDIFFUSION_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ title: 'Draft pass' }),
  },
);
```

Python:

```python
requests.patch(
    f"{BASE}/boards/{board_id}/nodes/{node_id}",
    headers=HEADERS,
    json={"title": "Draft pass"},
)
```

## Response

`200 OK` with the updated
[Node object](/docs/api/boards/get#node-object). Renaming never moves it,
so `position.list_view_index` is unchanged. Moving a node is
[Reorder board nodes](/docs/api/boards/nodes-reorder).

## Errors

**Status codes**

| Name | Type | Description |
| --- | --- | --- |
| `400` | INVALID_REQUEST | A blank title, a field over its length limit, or a request with nothing in it. |
| `401` | TOKEN_INVALID | Missing or invalid credential. |
| `403` | PERMISSION_DENIED | You can see the board but may not change what is on it. |
| `404` | BOARD_NOT_FOUND | No such board, or not one this credential can see. |
| `404` | NODE_NOT_FOUND | No such node on that board, or it was already removed. |
| `429` | RATE_LIMITED | Too many requests. Board writes have a tighter budget than reads. See [Rate limits](/docs/api/rate-limits#boards). |
