White Label - Resolve branding (public/login)

Overview

Resolve white-label branding (logo, login logo, favicon, title, white-label URL, status) and saved theme options for an account. This lets the app brand the login screen before authentication.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/account/white-label

Authentication

Resolving by host is public. When you omit company_id, the company comes from the optional domain body field (preferred) or the request Referer host. It is matched (subdomain + domain) against a registered white-label domain. No Authorization header is needed. Resolving by an explicit company_id is not public. It requires a bearer token, and the requested account must sit inside the caller's own account tree, else 403. If no company resolves, the endpoint still returns HTTP 200 with status: error.

Rate limit

  • 30 requests/min.

Request body

  • Body:
FieldTypeRequiredDescription
company_idintegerNoMust be an existing account inside the caller's own tree; sending it requires a bearer token (403 otherwise). When omitted, the company resolves from domain or the Referer host.
domainstringNoMax 255. A white-label host (URL or bare host) to resolve by; preferred over the Referer header.
{
  "company_id": 5
}

Response

  • data.status (string) — success when a company resolved, else error.
  • data.data.white_label (object) — the branding block. Falls back to defaults if the company has no white-label record (walks to parent company if the company has a parent with bundle_id > 0):
  • logo (string) — S3 URL or ''.
  • white_url (string) — https://-prefixed white-label URL when status active, else config('common.APP_FRONTEND_URL').
  • favicon (string) — S3 URL or ''.
  • title (string) — white-label title or config('app.name').
  • status (string) — active / inactive.
  • login_logo (string) — S3 URL; falls back to logo when empty.
  • company_id (integer|null) — resolved white-label company id, else null.
  • email_templates_enabled (boolean) — flag.
  • data.data.theme_options (string|null) — theme_options JSON string, or null.
  • On failure: status: error, data: [], message: "Company not found".

200 OK (resolved) · 200

{
  "data": {
    "status": "success",
    "data": {
      "white_label": {
        "logo": "https://d2ny6zb7otrnhl.cloudfront.net/white-label/logo/xxxxxxxx.png",
        "white_url": "https://production.shoutaboutus.com",
        "favicon": "https://d2ny6zb7otrnhl.cloudfront.net/white-label/favicon/xxxxxxxx.png",
        "title": "hipages",
        "status": "active",
        "login_logo": "https://d2ny6zb7otrnhl.cloudfront.net/white-label/login_logo/xxxxxxxx.png",
        "company_id": 5,
        "email_templates_enabled": true
      },
      "theme_options": "{\"mode\":\"system\",\"skin\":\"default\",\"semiDark\":false,\"layout\":\"vertical\",\"navbarContentWidth\":\"wide\",\"contentWidth\":\"wide\",\"footerContentWidth\":\"wide\",\"primaryColor\":\"#f1874c\"}"
    }
  }
}

200 OK (company not found) · 200

{
  "data": {
    "status": "error",
    "data": [],
    "message": "Company not found"
  }
}

422 Unprocessable Entity · 422

{
  "message": "The selected company id is invalid.",
  "errors": {
    "company_id": [
      "The selected company id is invalid."
    ]
  }
}

Errors

StatusMeaning
403company_id was sent without a bearer token, or the account sits outside your own tree
422Unprocessable Entity
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/account/white-label" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"company_id": 5}'

Did this page help you?