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
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://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:
| Field | Type | Required | Description |
|---|---|---|---|
company_id | integer | No | Must 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. |
domain | string | No | Max 255. A white-label host (URL or bare host) to resolve by; preferred over the Referer header. |
{
"company_id": 5
}Response
data.status(string) —successwhen a company resolved, elseerror.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 withbundle_id > 0):logo(string) — S3 URL or''.white_url(string) —https://-prefixed white-label URL when status active, elseconfig('common.APP_FRONTEND_URL').favicon(string) — S3 URL or''.title(string) — white-label title orconfig('app.name').status(string) —active/inactive.login_logo(string) — S3 URL; falls back tologowhen empty.company_id(integer|null) — resolved white-label company id, elsenull.email_templates_enabled(boolean) — flag.data.data.theme_options(string|null) —theme_optionsJSON string, ornull.- On failure:
status: error,data: [],message: "Company not found".
200 OK (resolved) · 200
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
200{
"data": {
"status": "error",
"data": [],
"message": "Company not found"
}
}422 Unprocessable Entity · 422
422{
"message": "The selected company id is invalid.",
"errors": {
"company_id": [
"The selected company id is invalid."
]
}
}Errors
| Status | Meaning |
|---|---|
403 | company_id was sent without a bearer token, or the account sits outside your own tree |
422 | Unprocessable Entity |
500 | Unexpected 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}'Updated 9 days ago
Did this page help you?
