Skip to content

UpdateBrand

symbol_set_ids is optional. When present, it atomically replaces all SymbolSets assigned to the brand; when omitted, current assignments remain unchanged. Use an empty array to remove all symbol access.

Description: Updates an existing brand configuration.

Access Control

SESSION_ADMIN with super_admin = 1. A brand admin cannot update brand configuration.

HTTP Route

PUT /brand

Request Parameters

Name Type Required Description
brand string Yes Brand name
dark_logo string Yes Dark logo path or URL
light_logo string Yes Light logo path or URL
favicon string Yes Favicon path or URL
terminal_host string Legacy: Yes; policy v1: No Legacy mode requires 1–128 characters. Under negotiated policy v1 it may be omitted or empty, with a maximum of 128 characters. When omitted, the current value is preserved; an explicit empty string clears it.
affiliate_host string Legacy: Yes; policy v1: No Legacy mode requires 1–128 characters. Under negotiated policy v1 it may be omitted or empty, with a maximum of 128 characters. When omitted, the current value is preserved; an explicit empty string clears it. A configured Affiliate Cabinet hostname has no scheme, port, or path and is served from its root.
enable int Yes Enable flag, 0 or 1
can_open_demo int No Allows customer self-service DEMO account opening when set to 1
can_open_real int No Allows customer self-service REAL account opening when set to 1
kyc_required_for_real int No Requires approved customer KYC before REAL account opening when set to 1
authorize_after_registration int No Returns a customer JWT after successful public registration when set to 1; existing value is preserved when omitted
default_language string No Default terminal language; existing value is preserved when omitted
settings object No Additional brand settings object

Under negotiated policy v1, an empty terminal_host is valid but the customer password-recovery flow cannot build a recovery URL for that brand without a terminal host. Keep a terminal host configured if customers need password-reset emails.

Request Example

{
  "brand": "IonMarkets",
  "dark_logo": "/images/ion-dark.svg",
  "light_logo": "/images/ion-light.svg",
  "favicon": "/images/favicon.ico",
  "terminal_host": "terminal.ionmarkets.com",
  "affiliate_host": "affiliate.ionmarkets.com",
  "enable": 1,
  "can_open_demo": 1,
  "can_open_real": 1,
  "kyc_required_for_real": 1,
  "authorize_after_registration": 1,
  "default_language": "de",
  "settings": {
    "primary_color": "#222222"
  }
}

Default terminal language

default_language controls the redirect for terminal paths without a language prefix. Supported values are:

en, ru, de, es, fr, pt, zh, cn, tr, hu, ja, pl, ko, vi, jp, id, th, fa, ms, it, cs, ro, ar.

The value is normalized to lowercase. Missing and unsupported values fall back to en. For example, with default_language: "de", /sign/in redirects to /de/sign/in, while /en/sign/in is not redirected. Existing query parameters are retained in the redirect URL.

Response Example

{
  "data": "OK"
}

Error Examples

{
  "error": "INVALID_DATA",
  "message": "settings must be an object"
}
{
  "error": "BRAND_UPDATE_ERROR",
  "message": "..."
}

If brand does not identify an existing configuration, the server returns HTTP/TCP status 404:

{
  "error": "BRAND_NOT_FOUND"
}