> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mithunai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get branding with its value limits

> Everything the branding read returns, plus the value limits the server enforces and whether this caller may save. That flag is a display hint, not the control.

Use this to build a branding settings form. It returns everything `GET /branding` returns, plus the value limits the server enforces and whether the caller may save changes.

`canEdit` is a display hint so you can show a read-only form. It does not grant anything: `PUT /branding` and `DELETE /branding` check permission on every request. Every organization role can call this endpoint; `canEdit` is `true` for owners and admins.

## Response

<ResponseField name="layer" type="object" required>
  Your organization's overrides. Sparse: only fields you have set appear, and an organization with
  no overrides returns `{}`. Anything absent falls back to the platform default.

  <Expandable title="properties">
    <ResponseField name="identity" type="object">
      Names shown in the interface.

      <Expandable title="properties">
        <ResponseField name="productName" type="string">
          Product name.
        </ResponseField>

        <ResponseField name="productShortName" type="string">
          Short product name.
        </ResponseField>

        <ResponseField name="companyName" type="string">
          Company name.
        </ResponseField>

        <ResponseField name="companyLegalName" type="string">
          Company legal name.
        </ResponseField>

        <ResponseField name="tagline" type="string">
          Tagline.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="assets" type="object">
      Logos and images.

      <Expandable title="properties">
        <ResponseField name="logoLight" type="string">
          Logo for the light appearance.
        </ResponseField>

        <ResponseField name="logoDark" type="string">
          Logo for the dark appearance.
        </ResponseField>

        <ResponseField name="logoMark" type="string">
          Compact logo mark.
        </ResponseField>

        <ResponseField name="favicon" type="string">
          Browser tab icon.
        </ResponseField>

        <ResponseField name="ogImage" type="string">
          Social sharing image.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="theme" type="object">
      Colours, typography, corner radii and default appearance.

      <Expandable title="properties">
        <ResponseField name="colors" type="object">
          Colour palettes, one per appearance.

          <Expandable title="properties">
            <ResponseField name="light" type="object">
              Colour overrides for the light appearance. Each key takes a colour. Keys:
              `background`, `surface`, `surfaceRaised`, `surfaceSunken`, `border`, `borderStrong`,
              `textPrimary`, `textSecondary`, `textMuted`, `textInverted`, `brand`, `brandHover`,
              `brandContrast`, `brandSubtle`, `accent`, `accentContrast`, `focus`, `success`,
              `successSubtle`, `warning`, `warningSubtle`, `danger`, `dangerSubtle`, `info`,
              `infoSubtle`, `overlay`.
            </ResponseField>

            <ResponseField name="dark" type="object">
              Colour overrides for the dark appearance. Each key takes a colour. Keys: `background`,
              `surface`, `surfaceRaised`, `surfaceSunken`, `border`, `borderStrong`, `textPrimary`,
              `textSecondary`, `textMuted`, `textInverted`, `brand`, `brandHover`, `brandContrast`,
              `brandSubtle`, `accent`, `accentContrast`, `focus`, `success`, `successSubtle`,
              `warning`, `warningSubtle`, `danger`, `dangerSubtle`, `info`, `infoSubtle`, `overlay`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="typography" type="object">
          Fonts.

          <Expandable title="properties">
            <ResponseField name="fontFamilySans" type="string">
              CSS font stack for body text.
            </ResponseField>

            <ResponseField name="fontFamilyMono" type="string">
              CSS font stack for code.
            </ResponseField>

            <ResponseField name="baseSizePx" type="integer">
              Base font size in pixels.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="shape" type="object">
          Corner radii.

          <Expandable title="properties">
            <ResponseField name="radiusSm" type="string">
              Small radius.
            </ResponseField>

            <ResponseField name="radiusMd" type="string">
              Medium radius.
            </ResponseField>

            <ResponseField name="radiusLg" type="string">
              Large radius.
            </ResponseField>

            <ResponseField name="radiusXl" type="string">
              Extra-large radius.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="modeDefault" type="string">
          Appearance the interface starts in.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="domains" type="object">
      Your own help links.

      <Expandable title="properties">
        <ResponseField name="docsUrl" type="string">
          Documentation link.
        </ResponseField>

        <ResponseField name="supportUrl" type="string">
          Support link.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="legal" type="object">
      Your own legal links and notice. Third-party attribution notices are not part of the layer and
      cannot be set, changed or removed through this API.

      <Expandable title="properties">
        <ResponseField name="termsUrl" type="string">
          Terms of service link.
        </ResponseField>

        <ResponseField name="privacyUrl" type="string">
          Privacy policy link.
        </ResponseField>

        <ResponseField name="copyrightNotice" type="string">
          Your copyright line.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="surfaces" type="object">
      Display toggles.

      <Expandable title="properties">
        <ResponseField name="console" type="object">
          Console toggles.

          <Expandable title="properties">
            <ResponseField name="showLogo" type="boolean">
              Show the logo in the console.
            </ResponseField>

            <ResponseField name="showPoweredBy" type="boolean">
              Show the powered-by line in the console.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="widget" type="object">
          Website widget toggles.

          <Expandable title="properties">
            <ResponseField name="showBranding" type="boolean">
              Show branding in the widget.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="revision" type="integer" required>
  Concurrency revision. `0` until the first save; each save or reset adds one. Send it back on `PUT
      /branding` or `DELETE /branding`.
</ResponseField>

<ResponseField name="configured" type="boolean" required>
  `true` once branding has been saved or reset at least once. `false` means the organization has
  always used the platform default.
</ResponseField>

<ResponseField name="updatedAt" type="string | null" required>
  When branding was last saved or reset, ISO 8601 in UTC. `null` if never.
</ResponseField>

<ResponseField name="updatedBy" type="string | null" required>
  Identifier of the user or API key that last saved or reset branding. `null` if never.
</ResponseField>

<ResponseField name="limits" type="object" required>
  Value limits enforced on save. They describe the API contract, not your deployment.

  <Expandable title="properties">
    <ResponseField name="maxTextChars" type="integer" required>
      Maximum length of a text value. Currently `120`.
    </ResponseField>

    <ResponseField name="maxUrlChars" type="integer" required>
      Maximum length of a link, or of an asset given as a URL. Currently `1024`.
    </ResponseField>

    <ResponseField name="maxAssetUriChars" type="integer" required>
      Maximum length of an asset value, including inline `data:` images. Currently `262144`.
    </ResponseField>

    <ResponseField name="themeModes" type="string[]" required>
      Allowed `theme.modeDefault` values, sorted: `dark`, `light`, `system`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="canEdit" type="boolean" required>
  Whether the caller holds the permission to change branding.
</ResponseField>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl --request GET "$MITHUNAI_URL/arukz/api/v1/branding/settings" \
    --header "Authorization: Bearer $MITHUNAI_API_KEY"
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import os, requests

  response = requests.get(
      f"{os.environ['MITHUNAI_URL']}/arukz/api/v1/branding/settings",
      headers={"Authorization": f"Bearer {os.environ['MITHUNAI_API_KEY']}"},
      timeout=60,
  )
  response.raise_for_status()
  print(response.json())
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const response = await fetch(`${process.env.MITHUNAI_URL}/arukz/api/v1/branding/settings`, {
    headers: { Authorization: `Bearer ${process.env.MITHUNAI_API_KEY}` },
  })
  console.log(await response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "layer": {
      "identity": {
        "productName": "Northwind Answers",
        "companyName": "Northwind Traders"
      },
      "assets": {
        "logoLight": "https://cdn.northwind.example/brand/logo-light.svg"
      },
      "theme": {
        "colors": {
          "light": {
            "brand": "#1F6FEB",
            "brandHover": "#1A5FCC"
          }
        },
        "modeDefault": "system"
      },
      "domains": {
        "supportUrl": "https://support.northwind.example"
      },
      "surfaces": {
        "widget": {
          "showBranding": false
        }
      }
    },
    "revision": 3,
    "configured": true,
    "updatedAt": "2026-09-19T16:22:05.871904+00:00",
    "updatedBy": "8d3f6a21-4c9e-4b07-a1d5-e62f0b9c7a48",
    "limits": {
      "maxTextChars": 120,
      "maxUrlChars": 1024,
      "maxAssetUriChars": 262144,
      "themeModes": ["dark", "light", "system"]
    },
    "canEdit": true
  }
  ```
</ResponseExample>
