Update landing page template
Overview
Update an existing landing-page template (title, manager emails, HTML/JSON content, editor mode). Copy-on-write for globals: a template with no company_id copies into the caller's account first (a name clash returns 400).
Known issue:
enable_direct_to_customer/enable_direct_to_manager/enable_direct_to_ownerpass validation but not persisted by this endpoint yet.
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/campaign/template/landing-page/update
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
bearer token, account role — authentication.
landing_page_idmust resolve to a template owned by the caller's account (or a global one).
Rate limit
- No rate limit.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
landing_page_id | integer | Required | Must be an existing landing-page template inside your own account tree. |
title | string | Optional | New title. Must be unique within the caller's account and against global (shared) templates. |
manager_email | string(email) | Optional | email:rfc,dns. |
other_manager_email | string[] | Optional | Each a distinct email:rfc,dns. |
enable_direct_to_customer | boolean | Optional | Accepted but not yet persisted. |
enable_direct_to_manager | boolean | Optional | Accepted but not yet persisted. |
enable_direct_to_owner | boolean | Optional | Accepted but not yet persisted. |
html_content | string | Optional | HTML body. Optional when you send html_content_b64. |
html_content_b64 | string (base64) | Optional | Base64 of html_content for WAF-blocked bytes; decoded before validation. |
json_content | string (JSON) | Optional | Editor JSON, validated as json. |
template_editor_mode | string | Optional | custom or html_editor. |
{
"landing_page_id": "<landingPageId>",
"title": "Summer Campaign Landing Page",
"manager_email": "[email protected]",
"other_manager_email": [
"[email protected]"
],
"enable_direct_to_customer": true,
"enable_direct_to_manager": true,
"enable_direct_to_owner": false,
"html_content": "<p>Example content</p>",
"json_content": "{}",
"template_editor_mode": "custom"
}How it works
- Synchronous.
200 OKreturns the saved model underdata.data(includes the appendedunique_code).400(envelope) when replicating a global and the name already exists for the company.422on validation failure or when the template is not in the caller's account.
Response
200 OK · 200
200{
"data": {
"status": "success",
"message": "Landing Page has been updated successfully!",
"data": {
"id": 1,
"company_id": 30,
"store_id": 123,
"title": "Summer Campaign Landing Page",
"description": null,
"url_slug": null,
"html_content": "<p>Example content</p>",
"json_content": {},
"template_editor_mode": "custom",
"manager_email": "[email protected]",
"other_manager_email": [
"[email protected]"
],
"enable_direct_to_manager": false,
"enable_direct_to_owner": false,
"enable_direct_to_customer": false,
"created_at": "2026-07-09T10:30:00.000000Z",
"updated_at": "2026-07-09T10:30:00.000000Z",
"unique_code": "aBcDeFg"
}
}
}422 Not your template · 422
422{
"message": "The selected landing page does not belong to your company.",
"errors": {
"landing_page_id": [
"The selected landing page does not belong to your company."
]
}
}Errors
| Status | Meaning |
|---|---|
400 | The request was rejected — the response explains why |
401 | The bearer token is missing, expired or invalid |
422 | Not your template |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/campaign/template/landing-page/update" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"landing_page_id": "<landingPageId>", "title": "Summer Campaign Landing Page", "manager_email": "[email protected]", "other_manager_email": ["[email protected]"], "enable_direct_to_customer": true, "enable_direct_to_manager": true, "enable_direct_to_owner": false, "html_content": "<p>Example content</p>", "json_content": "{}", "template_editor_mode": "custom"}'Updated 11 days ago
Did this page help you?
