Skip to content

Change the brand's logo or color

Uploads a new logo, sets the dashboard's accent color, or both, as the brand form in the dashboard does. Send logoBase64, brandColor, or both. The API does not pick a color from the logo the way the dashboard does, so send brandColor with a logo to change both. logoBase64 is at most 2,796,204 characters (a 2MB image). It does not change the brand's name.

PATCH/v1/brand
  • Scopebrand:write
  • Write
  • Safe to retry
  • MCP toolscouty_update_brand

Markdown version for your agent

Authorization

Send a Scouty token as a bearer token in the Authorization header. The token needs the brand:write scope, or the call answers 403 insufficient_scope. Tokens and scopes

Authorization: Bearer $SCOUTY_TOKEN

Headers

NameTypeRequiredDescription
Idempotency-KeystringOptional

The same key the body's idempotencyKey carries. Send one or the other, or both with the same value.

Body parameters

A JSON object, sent with Content-Type: application/json.

NameTypeRequiredDescription
idempotencyKeystringRequired

A key you choose for this call, 8 to 128 characters of letters, digits, dot, underscore, colon or hyphen. Sending the same key with the same arguments replays the first answer and changes nothing, so a retry after a timeout is safe.

logoBase64stringOptional

The logo, a PNG, JPEG, WebP or SVG, as standard base64 with no data: prefix.

brandColorstring | nullOptional

The dashboard's accent color, six hex digits after a hash like #1d4ed8. null clears it.

Details

scouty_update_brand does what Your brand on the Workspace page does, for the logo and the color. It does not change your brand's name.

Send logoBase64, brandColor, or both. logoBase64 is a PNG, JPEG, WebP, or SVG as standard base64, at most 2 MB (2,796,204 characters). Scouty reads the type from the file itself. brandColor is six hex digits after a hash, like #1d4ed8; null clears it.

When you upload a logo in the dashboard, the dashboard sets its color from the logo. The API does not. To change both, send both. A logo sent alone leaves the color as it was, and the answer says so in note.

json

{ "status": "saved",
  "logoUrl": "https://<storage>/storage/v1/object/public/client-assets/clients/<workspace>/logo.png",
  "brandColor": "#1d4ed8" }

Errors

A refusal answers { "error": { "code", "message" } }. Branch on code; the message is for a person. Every error and its fix

Statuserror.codeMeaning
400 Bad Requestinvalid_requestThe request was not the shape this capability takes, or its body was not JSON.
401 Unauthorizedmissing_token invalid_token token_revoked token_expired token_orphanedNo token, or one that is not recognized, revoked or expired.
403 Forbiddeninsufficient_scope wrong_principalThe token does not carry the scope this capability needs.
409 Conflictidempotency_conflictThat idempotency key was already used for a different request. Nothing was changed.
429 Too Many Requestsrate_limitedToo many requests this minute. Retry-After says how long is left.