> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokencraft.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Mode

> Update mode details

# Update Mode

Updates an existing mode. Only provided fields will be updated.

<Note>
  **Write access policy** - This endpoint requires the `write:tokens` scope.

  * TEAM-owned workspace: `owner`, `admin`, `editor` can write; `viewer` is blocked (`403`).
  * Non-TEAM workspace: only the workspace owner can write.
  * If the workspace owner plan has no API write access (for example FREE), write is blocked.
</Note>

## Endpoint

```
PATCH /tokensets/{id}/modes/{modeId}
```

## Request

### Path Parameters

| Parameter | Type   | Required | Description |
| --------- | ------ | -------- | ----------- |
| `id`      | string | Yes      | Tokenset ID |
| `modeId`  | string | Yes      | Mode ID     |

### Body Parameters

| Parameter    | Type    | Required | Description                        |
| ------------ | ------- | -------- | ---------------------------------- |
| `name`       | string  | No       | New mode name (max 255 characters) |
| `is_default` | boolean | No       | Set as default mode                |

<Note>
  All body parameters are optional. Only provided fields will be updated.
</Note>

## Response

**Status:** `200 OK`

```json theme={null}
{
  "id": "mode-dark",
  "tokenset_id": "tokenset-123",
  "name": "Dark Mode",
  "is_default": true,
  "created_at": "2025-01-15T10:00:00Z",
  "updated_at": "2025-01-15T14:30:00Z"
}
```

## Examples

<CodeGroup>
  ```bash Rename Mode theme={null}
  curl -X PATCH https://app.tokencraft.dev/api/v1/tokensets/tokenset-123/modes/mode-dark \
    -H "Authorization: Bearer tkc_your_token_here" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Dark Mode"
    }'
  ```

  ```bash Set as Default theme={null}
  curl -X PATCH https://app.tokencraft.dev/api/v1/tokensets/tokenset-123/modes/mode-dark \
    -H "Authorization: Bearer tkc_your_token_here" \
    -H "Content-Type: application/json" \
    -d '{
      "is_default": true
    }'
  ```

  ```javascript JavaScript theme={null}
  const tokensetId = 'tokenset-123';
  const modeId = 'mode-dark';

  const response = await fetch(
    `https://app.tokencraft.dev/api/v1/tokensets/${tokensetId}/modes/${modeId}`,
    {
      method: 'PATCH',
      headers: {
        'Authorization': 'Bearer tkc_your_token_here',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        name: 'Dark Mode',
        is_default: true
      })
    }
  );

  const mode = await response.json();
  ```

  ```python Python theme={null}
  tokenset_id = 'tokenset-123'
  mode_id = 'mode-dark'

  response = requests.patch(
      f'https://app.tokencraft.dev/api/v1/tokensets/{tokenset_id}/modes/{mode_id}',
      headers={
          'Authorization': 'Bearer tkc_your_token_here',
          'Content-Type': 'application/json'
      },
      json={'name': 'Dark Mode', 'is_default': True}
  )

  mode = response.json()
  ```
</CodeGroup>

## Error Responses

### 400 Bad Request

```json theme={null}
{
  "error": "Name must be a non-empty string"
}
```

### 404 Not Found

```json theme={null}
{
  "error": "Mode not found"
}
```

## Default Mode Behavior

When setting `is_default: true`:

* All other modes in this tokenset are set to `is_default: false`
* Only one mode can be default per tokenset

## Next Steps

<CardGroup cols={2}>
  <Card title="Delete Mode" icon="trash" href="/api-reference/modes/delete">
    Permanently delete a mode
  </Card>

  <Card title="List Tokens" icon="list" href="/api-reference/tokens/list">
    View mode tokens
  </Card>
</CardGroup>
