---
title: "Update Brand Preload"
method: PUT
path: "/brand_preload"
tags: ["Account"]
---

# Update Brand Preload

`PUT /brand_preload`

## Request

- Base URL: `https://api.wistia.com/modern`
- URL: `https://api.wistia.com/modern/brand_preload`
- Auth: HTTP bearer

Persists the account's default page logo (by Bakery hashed_id) and
default player color. Both fields are optional independently — omit a
field to leave that account setting untouched. Passing an empty string
for `selected_logo_hashed_id` clears the logo.

Requires the OAuth contact to be an owner or manager of the account
(or a Wistia admin) — mirrors the auth check on the underlying
`updateWtwBrandKitAccountSettings` GraphQL mutation.

An [expiring access token](https://docs.wistia.com/reference/post_expiring-token)
created with the `all:delegate_to_contact_permissions` scope and an
`account` authorization granting the `manage-brand-preload` permission can
also be used.

Deliberately narrower than the mutation: this endpoint does not
create/update BrandKits or set body font family. Glass's onboarding
customize step writes only these two fields; broader brand-kit
editing continues to happen through the WTW web UI + GraphQL.

## Requires api token with one of the following permissions
```
(any scope allowed)
```

## Headers

- `X-Wistia-API-Version` string, required

## Request body

- object: Payload for `PUT /brand_preload`. Both fields are optional independently; omit either to leave that account setting untouched. Sending `null` for either field is not accepted — use omission for "leave unchanged" and an empty string for the documented clear operation on logo.
  - `selected_player_color` string: Hex color string (e.g. "#3366FF") for the account's default player color — 6 hex digits, with or without the leading `#`. Omit or send an empty string to leave the current color untouched (there is no clear operation — color always has a value). Malformed values are rejected at the API boundary; without this check, the model's sanitize step would return nil and silently reset the account color to the global default.
  - `selected_logo_hashed_id` string: Bakery hashed_id of an uploaded logo image, which will become the account's default page logo. Omit to leave the current logo untouched. Pass an empty string to clear the logo.

## Response `200`

Successful response — returns the same shape as GET /brand_preload

- object: Brandfetch-derived brand info for the current account's contact domain, plus whether the account has any brand kits configured.
  - `has_brand_kits` boolean, required: True iff the account has one or more configured brand kits. Glass uses this to skip the onboarding preload step for accounts that already have a brand kit set up.
  - `brandfetch_brand` object, required: Brandfetch response for the contact's email domain. Fields are nil for free-mail domains, Wistia's own domain, and accounts where Brandfetch has no data — the caller silently skips the preload in every such case.
    - `domain` string, nullable, required
    - `primary_color` string, nullable, required: Hex color string (e.g. "#3366FF") or null if Brandfetch returned no accent/primary color.
    - `logo` string, nullable, required: Absolute URL to the dark-theme logo, or null if none is available.
    - `font` string, nullable
    - `colors` string[]
    - `logos` object[]: Full Brandfetch logos list — Glass consumes only `logo` (the primary), but callers that want theme variants can walk this.
      - `theme` string, nullable: "dark" or "light".
      - `type` string, nullable: e.g. "logo", "icon", "symbol".
      - `tags` string[]
      - `formats` object[]
        - `src` string
        - `format` string: File extension (e.g. "png", "svg").
        - `background` string, nullable
        - `height` integer, nullable
        - `width` integer, nullable
        - `size` integer, nullable
    - `status` integer, nullable: HTTP status Brandfetch responded with (204 when empty).

## Other responses

- `400`: Bad request
- `401`: Unauthorized, invalid or missing token
- `403`: Forbidden, token is valid but account does not have access to feature
- `404`: Resource not found
- `500`: Internal server error

## Changes

- **2026-11-03** `b86cb2a7b420`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wistia/apis/data-api/changes/brand_preload/put.md)

---

[API](https://skmtc.dev/wistia/apis/data-api.md) - [All operations](https://skmtc.dev/wistia/apis/data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wistia/apis/data-api/revisions/b86cb2a7b420?raw)
