White Label - Update (domain + branding upload)
Overview
Sets up or updates your own account's white-label branding: the custom subdomain, the display title, and up to four account images.
The call registers domain_prefix.domain_name as a custom subdomain with AWS Amplify — the CDN that serves the white-labelled app. Amplify's response decides the saved status: active once the domain is available, inactive while it is still provisioning.
It always targets your own account. There is no parameter to name a different one.
Prerequisites
- A bearer token in the
Authorizationheader.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/account/white-label/update
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: partner and account tokens.
-
Location accounts cannot call this and receive
403with the messageSub-partner/Brand user can access this endpoint.That message names the roles that are allowed, so read it as "only partner and account users can access this endpoint".
Rate limit
- No rate limit.
Request body
Choose the content type to match what you are sending:
| You are sending | Content type |
|---|---|
| Domain and title only | application/json |
| Any image file | multipart/form-data |
Both accept the same fields. Use multipart/form-data whenever you attach an image, because a file cannot travel in a JSON body. Every image is optional — send only the ones you are changing.
| Field | Type | Required | Description |
|---|---|---|---|
domain_name | string | Required | Max 100 characters, no angle brackets. Saved lowercased. |
domain_prefix | string | Required | Saved lowercased. The resulting domain_prefix.domain_name must not already be taken by another account. |
title | string | Optional | Max 100 characters, no angle brackets. Shown as the browser title. |
favicon | file | Optional | JPEG, PNG or ICO. Max 10 KB. |
logo | file | Optional | JPEG or PNG. Max 400 KB. |
login_logo | file | Optional | JPEG or PNG. Max 400 KB. |
mobile_logo | file | Optional | JPEG or PNG. Max 400 KB. |
Note the favicon limit is 10 KB, far smaller than the 400 KB allowed for the other three.
Uploading images
Send each field as its own form part and let curl set the boundary — do not set Content-Type yourself:
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/account/white-label/update" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--form 'domain_name=example.com' \
--form 'domain_prefix=reviews' \
--form 'title=Acme Reviews' \
--form 'logo=@/path/to/logo.png' \
--form 'favicon=@/path/to/favicon.ico'How it works
- 200 returns only a
status+messageconfirmation — the saved record is not echoed back. - 403 when a location account calls it — see Authentication above.
- 422 when validation fails: a missing
domain_nameordomain_prefix, a subdomain already used by another account, or an image over its size limit or in an unsupported format. - A new subdomain usually starts as
inactiveand flips toactiveonce Amplify finishes provisioning it, so re-read the record shortly after saving rather than expectingactivestraight away.
Response
200 OK · 200
200{
"data": {
"status": "success",
"message": "White-label data saved successfully!"
}
}403 Forbidden (wrong company type) · 403
403{
"message": "Forbidden",
"status": "error",
"errors": "Sub-partner/Brand user can access this endpoint."
}422 Unprocessable Entity · 422
422{
"message": "production.shoutaboutus.com: White URL already exists",
"errors": {
"domain_name": [
"The domain name field is required."
],
"domain_prefix": [
"production.shoutaboutus.com: White URL already exists"
]
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
403 | Forbidden (wrong company type) |
422 | Unprocessable Entity |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/account/white-label/update" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--form 'title=My Reviews' \
--form 'domain_name=manage-myreviews.com' \
--form 'domain_prefix=hipages' \
--form '[email protected]' \
--form 'login_logo=@login_logo.png' \
--form 'mobile_logo=@mobile_logo.png' \
--form '[email protected]'Updated 9 days ago
