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.
https://api.tryscouty.com/v1/brand - Scope
brand:write - Write
- Safe to retry
- MCP tool
scouty_update_brand
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_TOKENHeaders
| Name | Type | Required | Description |
|---|---|---|---|
Idempotency-Key | string | Optional | 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.
| Name | Type | Required | Description |
|---|---|---|---|
idempotencyKey | string | Required | 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. |
logoBase64 | string | Optional | The logo, a PNG, JPEG, WebP or SVG, as standard base64 with no data: prefix. |
brandColor | string | null | Optional | 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
| Status | error.code | Meaning |
|---|---|---|
| 400 Bad Request | invalid_request | The request was not the shape this capability takes, or its body was not JSON. |
| 401 Unauthorized | missing_token invalid_token token_revoked token_expired token_orphaned | No token, or one that is not recognized, revoked or expired. |
| 403 Forbidden | insufficient_scope wrong_principal | The token does not carry the scope this capability needs. |
| 409 Conflict | idempotency_conflict | That idempotency key was already used for a different request. Nothing was changed. |
| 429 Too Many Requests | rate_limited | Too many requests this minute. Retry-After says how long is left. |