Save landing page settings
Overview
Create or update the landing_page widget for a company. Uploads any supplied logo/footer-logo/thumbnail images to S3 (falling back to the previously saved images when a slot is left empty). It then stores the full landing-page options blob on the company's landing_page widget row.
Choose the content type to match what you are sending:
| You are sending | Content type |
|---|---|
| Settings only | application/json |
Any image (logoImage, youtubeThumbnail, footerLogo) | multipart/form-data |
All three images are optional — send only the ones you are changing. Use multipart/form-data only when attaching one, because a file cannot travel in a JSON body.
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/custom-landing-page/save
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Account bearer.
company_idmust sit inside your own account tree — a partner can target any company beneath it. An account user reaches only its own part of the account tree.
Rate limit
- No rate limit.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
company_id | integer | Required | Must be an existing account inside your own account tree. |
logoImage | file (image) | Optional | png/jpg/jpeg. Header logo. |
footerLogo | file (image) | Optional | png/jpg/jpeg. Footer logo. |
youtubeThumbnail | file (image) | Optional | png/jpg/jpeg. Video thumbnail. |
logoURL, startButton*, contactButton*, content*, youtubeUrl, sliderHeading, planText, footerText, copyrightText, howItWorksText, testimonialsText | string | Optional | Text props; each has a documented default when you omit it. |
hideVideoToggle, sliderImagesToggle, planToggle, customPricingButtonToggle, faqToggle, socialIconToggle, howItWorksToggle, testimonialsToggle | boolean | Optional | Section toggles, default false. |
How it works
200with{ status, message }on success.422ifcompany_idis missing/invalid or outside the caller's hierarchy, or an image file is the wrong type.- Returns an
errorenvelope if the company is not found or an S3 upload fails.
Response
200 OK · 200
200{
"data": {
"status": "success",
"message": "Settings save successfully."
}
}422 Validation error · 422
422{
"message": "The selected company id is invalid.",
"errors": {
"company_id": [
"The selected company id does not belong to your company hierarchy."
]
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | Validation error |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/custom-landing-page/save" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--form 'company_id=123' \
--form '[email protected]' \
--form '[email protected]' \
--form '[email protected]' \
--form 'logoURL=<logoURL>' \
--form 'startButtonText=Register Now' \
--form 'startButtonBackgroundColor=#1459c4' \
--form 'startButtonFontColor=#ffffff' \
--form 'contactButtonText=Contact sales' \
--form 'contactButtonBackgroundColor=#ffffff' \
--form 'contactButtonFontColor=#1459c4' \
--form 'contactButtonURL=<contactButtonURL>' \
--form 'contentHeading=Stop dealing with the headache of responding to your reviews' \
--form 'contentDescription=Save time, boost your ranking, and build brand loyalty.' \
--form 'youtubeUrl=https://example.com/video.mp4' \
--form 'hideVideoToggle=false' \
--form 'sliderHeading=Trusted by over 10,000 local businesses' \
--form 'sliderImagesToggle=false' \
--form 'planText=Choose the plan that fits your needs' \
--form 'planToggle=false' \
--form 'customPricingButtonToggle=false' \
--form 'faqToggle=false' \
--form 'footerText=Personalized review response service for local businesses.' \
--form 'copyrightText=© 2023 Shout About Us. All Rights Reserved' \
--form 'socialIconToggle=false' \
--form 'howItWorksToggle=false' \
--form 'howItWorksText=How it works' \
--form 'testimonialsToggle=false' \
--form 'testimonialsText=You're in good company'Updated 10 days ago
