# Update dashboard branding

Replace the branding configuration for a dashboard.

Source: https://statusdashboard.com/docs/api/status-dashboards/dashboards/branding/update

`PUT /app/dashboards/{id}/branding`

Replaces the logos, header navigation links, primary accent color, and subscriber email settings for a dashboard's status dashboard. This is a full replacement. Requires the **Custom Branding** feature entitlement.

***

## Path parameters
| Parameter | Description                |
| --------- | -------------------------- |
| `id`      | The UUID of the dashboard. |

***

## Request
See [API Basics](/docs/api) for required headers.

### Request body
This is a full replacement of the branding object. Logo slots use the [Upload asset URL](/docs/api/status-dashboards/dashboards/branding/upload-url) flow: include both the `s3Key` and `assetUrl` from that endpoint for each logo you set. Omit both fields for a slot to clear it.

| Field                | Type   | Description                                                                                                                                                                                                                                                                     |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `headerLogoUrl`      | string | Public asset URL for the header logo (`assetUrl` from the upload endpoint). Must be paired with `headerLogoKey`.                                                                                                                                                                |
| `headerLogoKey`      | string | The `s3Key` returned by the upload endpoint for the header logo. Must be paired with `headerLogoUrl`.                                                                                                                                                                           |
| `mainLogoUrl`        | string | Public asset URL for the main logo. Must be paired with `mainLogoKey`.                                                                                                                                                                                                          |
| `mainLogoKey`        | string | The `s3Key` for the main logo. Must be paired with `mainLogoUrl`.                                                                                                                                                                                                               |
| `faviconUrl`         | string | Public asset URL for the favicon. Must be paired with `faviconKey`.                                                                                                                                                                                                             |
| `faviconKey`         | string | The `s3Key` for the favicon. Must be paired with `faviconUrl`.                                                                                                                                                                                                                  |
| `emailLogoUrl`       | string | Public asset URL for the email logo. Must be paired with `emailLogoKey`.                                                                                                                                                                                                        |
| `emailLogoKey`       | string | The `s3Key` for the email logo. Must be paired with `emailLogoUrl`.                                                                                                                                                                                                             |
| `headerLinks`        | array  | Up to 4 navigation links shown in the page header. Each item requires `label` (max 50 chars) and `url` (max 500 chars). Pass an empty array to remove all links.                                                                                                                |
| `primaryColor`       | string | 6-digit hex accent color (e.g. `#475569`). Drives hyperlinks, primary buttons, and UI highlights on the status dashboard. Defaults to `#475569` on new dashboards.                                                                                                              |
| `emailFromName`      | string | Display name shown in the **From** field of subscriber emails sent on behalf of this dashboard (max 100 characters, no `<` or `>`, single line). Omit to use the platform default from name. Independent of the email sender address.                                           |
| `emailPostalAddress` | string | Single-line mailing address included in subscriber email footers (max 200 characters, no `<` or `>`, single line). Omit to use the platform default address and copyright. When set, the footer shows your organization name and this address instead of the platform defaults. |

***

## Sample request
```bash
curl -X PUT https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/branding \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "headerLogoUrl": "https://assets.statusdashboard.com/tenant-assets/org-id/dash-id/headerLogo.png",
    "headerLogoKey": "tenant-assets/org-id/dash-id/headerLogo.png",
    "headerLinks": [
      { "label": "Home", "url": "https://acme.com" },
      { "label": "Support", "url": "https://acme.com/support" }
    ],
    "primaryColor": "#1a73e8",
    "emailFromName": "Acme Status",
    "emailPostalAddress": "456 Tenant St, Oakland, CA 94612"
  }'
```

## Sample response
**Status: `200 OK`**

```json
{
  "headerLogoUrl": "https://assets.statusdashboard.com/tenant-assets/org-id/dash-id/headerLogo.png",
  "headerLogoKey": "tenant-assets/org-id/dash-id/headerLogo.png",
  "headerLinks": [
    { "label": "Home", "url": "https://acme.com" },
    { "label": "Support", "url": "https://acme.com/support" }
  ],
  "primaryColor": "#1a73e8",
  "emailFromName": "Acme Status",
  "emailPostalAddress": "456 Tenant St, Oakland, CA 94612"
}
```

***

## Error responses
| Status | When                                                                                                                                                                                                                                                                                          |
| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | Validation failure — logo key/URL pair incomplete or not a platform branding asset, too many header links, label or URL too long, invalid URL, invalid `primaryColor` hex, or invalid `emailFromName` / `emailPostalAddress` (empty, too long, contains `<` or `>`, or contains line breaks). |
| `403`  | Insufficient permissions, or the Custom Branding feature is not enabled.                                                                                                                                                                                                                      |
| `404`  | Dashboard not found or does not belong to the caller's organization.                                                                                                                                                                                                                          |
