Skip to content

Update an org branding

Settings module

PATCH/org-branding/{id}orgBrandings.update

White label brand settings for Atlas, Gateway, email and Compass. Updates the fields sent; omitted fields are unchanged. Requires `If-Match` with the current `ETag`: a stale tag returns 412 and a missing tag returns 428.

  • Requires the capability org.white_label.write.
  • OAuth scopes: org.
  • Send If-Match with the ETag you read. A stale tag returns 412; a missing tag returns 428.
  • Error statuses: 400, 401, 404, 412, 422, 428, 429. Errors are RFC 9457 problem details.

Path and query parameters

orgBrandings.update: Path and query parameters
FieldTypeRequiredDescription
idstring (uuid)YesIdentifier of the org branding.

Request body: OrgBrandingUpdate

orgBrandings.update: OrgBrandingUpdate
FieldTypeRequiredDescription
display_namestring | nullNoBrand display name.Constraints: length 1 to 300
logo_light_pathstring | nullNoLogo for light themes: object path in the org-brand bucket, starting with the org id.Constraints: length 1 to 1024
logo_dark_pathstring | nullNoLogo for dark themes: object path in the org-brand bucket.Constraints: length 1 to 1024
favicon_pathstring | nullNoFavicon: object path in the org-brand bucket.Constraints: length 1 to 1024
app_icon_pathstring | nullNoApp icon: object path in the org-brand bucket.Constraints: length 1 to 1024
accent_hexstring | nullNoAccent color as uppercase #RRGGBB, replacing accent-default in every theme; null keeps the platform accent.Constraints: pattern ^#[0-9A-F]{6}$
neutral_tint_hexstring | nullNoOptional neutral tint as uppercase #RRGGBB.Constraints: pattern ^#[0-9A-F]{6}$
font_familystring | nullNoFont family from the approved list; null keeps the platform font.Constraints: length 1 to 300
radius_scale"Compact" | "Default" | "Rounded"NoCorner radius scale.
email_sender_namestring | nullNoSender name on emails sent for the org.Constraints: length 1 to 300
support_emailstring (email) | nullNoSupport address shown on branded surfaces.
legal_entity_namestring | nullNoLegal entity named on generated documents and emails.Constraints: length 1 to 300
suppress_powered_bybooleanNoTrue hides Powered by XOS; it takes effect only while the plan includes white label.
{
  "display_name": "Northwind Live",
  "logo_light_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "logo_dark_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "favicon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "app_icon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "accent_hex": "#1F6FEB",
  "neutral_tint_hex": "#1F6FEB",
  "font_family": "Inter",
  "radius_scale": "Compact",
  "email_sender_name": "Northwind Live",
  "support_email": "alex.rivera@northwindlive.example",
  "legal_entity_name": "Northwind Live LLC",
  "suppress_powered_by": false
}

Response 200: OrgBranding

orgBrandings.update: OrgBranding
FieldTypeRequiredDescription
idstring (uuid)YesIdentifier of the org branding.
org_idstring (uuid)YesIdentifier of the owning organization, derived from the parent row and never accepted from the caller.
created_atstring (date-time)YesWhen the row was created.
created_bystring (uuid) | nullYesIdentifier of the person who created the row; null when a seed, platform or system process created it.
updated_atstring (date-time)YesWhen the row was last updated.
updated_bystring (uuid) | nullYesIdentifier of the person who last updated the row; null when a seed, platform or system process updated it.
display_namestring | nullYesBrand display name.Constraints: length 1 to 300
logo_light_pathstring | nullYesLogo for light themes: object path in the org-brand bucket, starting with the org id.Constraints: length 1 to 1024
logo_dark_pathstring | nullYesLogo for dark themes: object path in the org-brand bucket.Constraints: length 1 to 1024
favicon_pathstring | nullYesFavicon: object path in the org-brand bucket.Constraints: length 1 to 1024
app_icon_pathstring | nullYesApp icon: object path in the org-brand bucket.Constraints: length 1 to 1024
accent_hexstring | nullYesAccent color as uppercase #RRGGBB, replacing accent-default in every theme; null keeps the platform accent.Constraints: pattern ^#[0-9A-F]{6}$
neutral_tint_hexstring | nullYesOptional neutral tint as uppercase #RRGGBB.Constraints: pattern ^#[0-9A-F]{6}$
font_familystring | nullYesFont family from the approved list; null keeps the platform font.Constraints: length 1 to 300
radius_scale"Compact" | "Default" | "Rounded"YesCorner radius scale.
email_sender_namestring | nullYesSender name on emails sent for the org.Constraints: length 1 to 300
support_emailstring (email) | nullYesSupport address shown on branded surfaces.
legal_entity_namestring | nullYesLegal entity named on generated documents and emails.Constraints: length 1 to 300
suppress_powered_bybooleanYesTrue hides Powered by XOS; it takes effect only while the plan includes white label.
{
  "id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "org_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "created_at": "2026-10-08T14:30:00Z",
  "created_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "updated_at": "2026-10-08T14:30:00Z",
  "updated_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "display_name": "Northwind Live",
  "logo_light_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "logo_dark_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "favicon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "app_icon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
  "accent_hex": "#1F6FEB",
  "neutral_tint_hex": "#1F6FEB",
  "font_family": "Inter",
  "radius_scale": "Compact",
  "email_sender_name": "Northwind Live",
  "support_email": "alex.rivera@northwindlive.example",
  "legal_entity_name": "Northwind Live LLC",
  "suppress_powered_by": false
}

Code samples

curl -X PATCH "$XOS_BASE_URL/org-branding/0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f" \
  -H "Authorization: Bearer $XOS_API_KEY" \
  -H 'If-Match: W/"etag-from-your-last-read"' \
  -H "Content-Type: application/json" \
  -d '{"display_name":"Northwind Live","logo_light_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","logo_dark_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","favicon_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","app_icon_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","accent_hex":"#1F6FEB","neutral_tint_hex":"#1F6FEB","font_family":"Inter","radius_scale":"Compact","email_sender_name":"Northwind Live","support_email":"alex.rivera@northwindlive.example","legal_entity_name":"Northwind Live LLC","suppress_powered_by":false}'
const { data, etag } = await xos.orgBrandings.update("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", {
    "display_name": "Northwind Live",
    "logo_light_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
    "logo_dark_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
    "favicon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
    "app_icon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg",
    "accent_hex": "#1F6FEB",
    "neutral_tint_hex": "#1F6FEB",
    "font_family": "Inter",
    "radius_scale": "Compact",
    "email_sender_name": "Northwind Live",
    "support_email": "alex.rivera@northwindlive.example",
    "legal_entity_name": "Northwind Live LLC",
    "suppress_powered_by": false
  }, { ifMatch: etag });
response = xos.org_brandings.update("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", {"display_name": "Northwind Live", "logo_light_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg", "logo_dark_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg", "favicon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg", "app_icon_path": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg", "accent_hex": "#1F6FEB", "neutral_tint_hex": "#1F6FEB", "font_family": "Inter", "radius_scale": "Compact", "email_sender_name": "Northwind Live", "support_email": "alex.rivera@northwindlive.example", "legal_entity_name": "Northwind Live LLC", "suppress_powered_by": False}, if_match=etag)
xos org-brandings update 0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f --data '{"display_name":"Northwind Live","logo_light_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","logo_dark_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","favicon_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","app_icon_path":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f/logo-light.svg","accent_hex":"#1F6FEB","neutral_tint_hex":"#1F6FEB","font_family":"Inter","radius_scale":"Compact","email_sender_name":"Northwind Live","support_email":"alex.rivera@northwindlive.example","legal_entity_name":"Northwind Live LLC","suppress_powered_by":false}' --if-match auto