# Remove a board node

> Take a tool off a board.

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

---

Removes one node from a board. The tool itself is untouched, and so is every
other board holding it.

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

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

Removing a node needs edit access to the board, described under
[Who can edit a board](/docs/api/boards/update#who-can-edit-a-board). Unlike
[deleting the board itself](/docs/api/boards/delete), it takes nothing extra.

## 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 remove, from [Get a board](/docs/api/boards/get). |

cURL:

```bash
curl -X DELETE https://api2.rundiffusion.com/api/v2/boards/$BOARD_ID/nodes/$NODE_ID \
  -H "Authorization: Bearer $RUNDIFFUSION_TOKEN"
```

JavaScript:

```javascript
await fetch(
  `https://api2.rundiffusion.com/api/v2/boards/${boardId}/nodes/${nodeId}`,
  {
    method: 'DELETE',
    headers: {
      Authorization: `Bearer ${process.env.RUNDIFFUSION_TOKEN}`,
    },
  },
);
```

Python:

```python
requests.delete(
    f"{BASE}/boards/{board_id}/nodes/{node_id}",
    headers=HEADERS,
)
```

## Response

`204 No Content`. The remaining nodes close up: remove the first of three and the
other two read `0` and `1` on the next fetch, with no gap where it was.

Nothing generated on that node is deleted; those stay in
[Library](/docs/api/library/list).

> **Indexes shift when a node is removed**
>
> If you are holding a list of nodes and their indexes, discard it after a delete.
> Every node after the removed one loses one, so a node at `6` becomes `5`, and
> acting on a remembered index can hit the wrong node.

## Errors

**Status codes**

| Name | Type | Description |
| --- | --- | --- |
| `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). |
