---
title: "Update Branding"
description: "Updates the organization's branding configuration. All fields are optional: only sent fields are updated. Setting productName or theme colors to null clears them. Requires admin role."
---

`PATCH /api/organization/whitelabel/branding`

Theme colors accept CSS custom property tokens (e.g. `--color-red-500`) or hex colors (e.g. `#43B1AE`). Invalid values are rejected.

## Request Body (all optional)

| Field | Type | Description |
|-------|------|-------------|
| `productName` | string\|null | Product display name (1-80 chars). `null` clears it. |
| `hideProductName` | boolean | Hide the product name in the UI |
| `hideLogos` | boolean | Hide all logos in the UI |
| `themePrimary` | string\|null | Primary theme color (hex or CSS variable). `null` clears it. |
| `themeNeutral` | string\|null | Neutral/secondary theme color (hex or CSS variable). `null` clears it. |

## Example (cURL)

```bash
curl -X PATCH "$BASE_URL/api/organization/whitelabel/branding" \
  -H "Cookie: $SESSION_COOKIE" \
  -H "Content-Type: application/json" \
  -d '{
    "productName": "Acme Monitor",
    "themePrimary": "#43B1AE",
    "hideProductName": false
  }'
```

## Response

```json
{
  "branding": {
    "productName": "Acme Monitor",
    "hideProductName": false,
    "hideLogos": false,
    "themePrimary": "#43B1AE",
    "themeSecondary": null,
    "updatedAt": "2026-04-15T12:00:00.000Z"
  }
}
```

## Common errors

- `401 Unauthorized` when not authenticated
- `403 Forbidden` when not an admin

