# Save the whole rebranding configuration **PUT /rebranding/{org_id}/config** The configuration form in one multipart request: the products the branding applies to, the brand name, the assets being uploaded and the ones being emptied. Written in a single transaction — products left out of `products` lose their configuration, assets named in `clear` are emptied, and assets that are neither uploaded nor cleared keep their current value. Requires rebranding to be enabled for the organization. A partner may only write its own organization; the organizations below inherit the branding. ## Servers - Backend API server (port 8080): https://api.your-domain.com/api (Backend API server (port 8080)) - Collect API server (port 8081): https://collect.your-domain.com/api (Collect API server (port 8081)) ## Authentication methods - Bearer auth ## Parameters ### Path parameters - **org_id** (string) Logto organization ID (logto_id, not the database UUID) ### Body: multipart/form-data (object) - **products** (string) Product ids the branding applies to, comma-separated or repeated (e.g. `nethvoice,nsec`). - **brand_name** (string) - **clear** (string) Asset names to empty, comma-separated or repeated (e.g. `favicon,background_image`). - **logo_light_rect** (string(binary)) - **logo_dark_rect** (string(binary)) - **logo_light_square** (string(binary)) - **logo_dark_square** (string(binary)) - **favicon** (string(binary)) - **background_image** (string(binary)) ## Responses ### 200 Configuration saved #### Body: application/json (object) - **code** (integer) - **message** (string) - **data** (object) ### 400 Validation failed. `data.type` is always `validation_error`. `data.errors[]` lists per-field failures with stable `message` codes the UI consumes for i18n: `at_least_one_required` (no product selected), `unknown` (product id, asset name or organization id that does not exist), `max` (brand name longer than 100 characters). A malformed multipart body, a file over its size limit or an unsupported content type answer 400 with a plain message instead: they are not field validation, they are a request the server could not read. #### Body: application/json (object) - **code** (integer) HTTP error code - **message** (string) Error message - **data** (object) ### 403 Forbidden - insufficient permissions #### Body: application/json (object) - **code** (integer) - **message** (string) - **data** (object | null) [Powered by Bump.sh](https://bump.sh)