Duplicate a QR design
Overview
Copy a design.
Use this to make a variant.
You'll need the template id (id in List QR designs).
The copy is named Copy of <name> (with (1), (2) and so on added when that name is already used at the location) and counts towards the location's plan allowance for QR codes, like a new design: 402 when the plan doesn't include QR codes or the allowance is used up.
Returns the new design.
Prerequisites
- A bearer token for the account. See Authentication.
- The design's id (
templateId), from List QR designs.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/qr-codes/template/{templateId}/duplicate
Authentication
Account token
- The design must have been created under your token's account; otherwise
404.
QR codes belong to the account that created them, and every QR endpoint matches on that account exactly; it doesn't walk the partner tree. A Partner token sees nothing, even for a location inside the partner's own tree: list endpoints return an empty result, and single-record endpoints return
404 QR code not found. The 404 means "not visible to this token", not "this QR code doesn't exist". Use an Account token for every endpoint in this section.
Rate limit
This endpoint has no rate limit.
Request parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
templateId | path | integer | Yes | The id of the design to copy (id in List QR designs). Digits only. |
Request body
None.
Request payload
None.
Response body
The payload is inside data.
| Field | Type | Description |
|---|---|---|
status | string | success. |
data | object | The new design. |
data.name | string | The design's name. |
data.store_id | integer | The location the design is for. |
data.company_id | integer | The account that owns the design. |
data.template_type | string | standard, hangtag or custom. |
data.design_html | string or null | Markup for the front of the design. |
data.design_settings | object or null | Settings for the front of the design. |
data.design_html_back | string or null | Markup for the back of the design. |
data.design_settings_back | object or null | Settings for the back of the design. |
data.qr_code_id | integer or null | The QR code the design is for, or null. |
data.updated_at | string | When the design was last changed (ISO 8601). |
data.created_at | string | When the design was created (ISO 8601). |
data.id | integer | The design's id. Use it as templateId. |
data.unique_code | string | The design's encoded id. |
message | string | QR code template duplicated successfully |
Response payload
{
"data": {
"status": "success",
"data": {
"name": "Copy of Default QR Code Template",
"store_id": 3008,
"company_id": 5994,
"template_type": "standard",
"design_html": null,
"design_settings": {
"logo": null,
"title": "QR Code",
"caption": "Scan the QR code to leave us a quick review.",
"hideLogo": false,
"subtitle": "Scan the QR code to learn more",
"logoWidth": 150,
"textColor": "#000000",
"hideQrText": false,
"titleColor": "#438bc7",
"borderColor": "#ffffff",
"logoBgColor": "#FFFFFF",
"subtitleColor": "#000000",
"backSameAsFront": true,
"backgroundColor": "#e1ecf5",
"dashedBorderColor": "#ffffff",
"contentBackgroundColor": "#f6fafd",
"hangTagBackgroundColor": "#336997"
},
"design_html_back": null,
"design_settings_back": null,
"qr_code_id": 2964,
"updated_at": "2026-10-01T10:20:00.000000Z",
"created_at": "2026-10-01T10:20:00.000000Z",
"id": 3120,
"unique_code": "w5jtbe"
},
"message": "QR code template duplicated successfully"
}
}Examples
Success payload
See Response payload.
Error payload
402 QR code allowance used up
{
"status": "error",
"message": "Limit reached for 'QR Codes': 5 of 5 units consumed this period.",
"feature": "review_qr_code",
"remaining": 0,
"hard_stop": true
}404 Not found
{
"message": "QR code template not found",
"status": "error",
"errors": []
}422 Design doesn't exist
{
"message": "The selected id is invalid.",
"errors": {
"id": [
"The selected id is invalid."
]
}
}| Status | Meaning |
|---|---|
201 | The copy was created. |
401 | The token is missing, expired or invalid. |
402 | The location's plan doesn't include QR codes, or the allowance for this period is used up. The X-Feature, X-Feature-Remaining and X-Feature-Hard-Stop headers give the details. |
404 | QR code template not found: the design wasn't created under your token's account, or has been deleted. |
422 | No design has this id. |
500 | Unexpected server error. |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/qr-codes/template/2964/duplicate" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 17 days ago
