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 Authorization header.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://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 403 with the message Sub-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 sendingContent type
Domain and title onlyapplication/json
Any image filemultipart/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.

FieldTypeRequiredDescription
domain_namestringRequiredMax 100 characters, no angle brackets. Saved lowercased.
domain_prefixstringRequiredSaved lowercased. The resulting domain_prefix.domain_name must not already be taken by another account.
titlestringOptionalMax 100 characters, no angle brackets. Shown as the browser title.
faviconfileOptionalJPEG, PNG or ICO. Max 10 KB.
logofileOptionalJPEG or PNG. Max 400 KB.
login_logofileOptionalJPEG or PNG. Max 400 KB.
mobile_logofileOptionalJPEG 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 + message confirmation — the saved record is not echoed back.
  • 403 when a location account calls it — see Authentication above.
  • 422 when validation fails: a missing domain_name or domain_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 inactive and flips to active once Amplify finishes provisioning it, so re-read the record shortly after saving rather than expecting active straight away.

Response

200 OK · 200

{
  "data": {
    "status": "success",
    "message": "White-label data saved successfully!"
  }
}

403 Forbidden (wrong company type) · 403

{
  "message": "Forbidden",
  "status": "error",
  "errors": "Sub-partner/Brand user can access this endpoint."
}

422 Unprocessable Entity · 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

StatusMeaning
401The bearer token is missing, expired or invalid
403Forbidden (wrong company type)
422Unprocessable Entity
500Unexpected 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]'

Did this page help you?