Edit a QR design

Overview

Change a saved design.

Use this to update branding across codes that use it.

You'll need the template id (id), its name and its type. The other fields you send replace the saved ones; fields you leave out keep their values.

The location's plan must include review solicitation (email or text); otherwise 400.

Returns the updated design.

Prerequisites

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/qr-codes/template/update

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

None.

Request body

FieldTypeRequiredDescription
idintegerYesThe design to edit (id in List QR designs). Without it the call returns 404.
namestringYesThe design's name, up to 255 characters.
template_typestringYesstandard, hangtag or custom.
design_htmlstringNoMarkup for the front of the design.
design_settingsobjectNoSettings for the front of the design, as an object or a JSON string (invalid JSON is saved as an empty list).
design_html_backstringNoMarkup for the back of the design.
design_settings_backobjectNoSettings for the back of the design, sent like design_settings.
qr_code_idintegerNoThe QR code the design is for (id in List QR codes). Must be one of your account's QR codes.

Request payload

{
  "id": 2964,
  "name": "Updated Standard A6",
  "template_type": "standard",
  "design_html": "<p>Scan to leave us a review</p>",
  "design_settings": {
    "title": "QR Code",
    "titleColor": "#222222"
  },
  "design_html_back": "<p>Thank you</p>",
  "design_settings_back": {
    "backSameAsFront": false
  }
}

Response body

The payload is inside data.

FieldTypeDescription
statusstringsuccess.
dataobjectThe updated design.
data.idintegerThe design's id. Use it as templateId.
data.store_idintegerThe location the design is for.
data.company_idintegerThe account that owns the design.
data.namestringThe design's name.
data.descriptionstring or nullThe design's description, or null.
data.qr_code_idinteger or nullThe QR code the design is for, or null.
data.template_typestringstandard, hangtag or custom.
data.design_settingsobject or nullSettings for the front of the design.
data.design_htmlstring or nullMarkup for the front of the design.
data.design_settings_backobject or nullSettings for the back of the design.
data.design_html_backstring or nullMarkup for the back of the design.
data.metadataobject or nullExtra data, or null.
data.created_atstringWhen the design was created (ISO 8601).
data.updated_atstringWhen the design was last changed (ISO 8601).
data.deleted_atstring or nullAlways null here.
data.unique_codestringThe design's encoded id.
data.storeobject or nullThe location.
data.store.idintegerThe location's id.
data.store.namestringThe location's name.
messagestringQR code template updated successfully

Response payload

{
  "data": {
    "status": "success",
    "data": {
      "id": 2964,
      "store_id": 3008,
      "company_id": 5994,
      "name": "Updated Standard A6",
      "description": null,
      "qr_code_id": 2964,
      "template_type": "standard",
      "design_settings": {
        "title": "QR Code",
        "titleColor": "#222222"
      },
      "design_html": "<p>Scan to leave us a review</p>",
      "design_settings_back": {
        "backSameAsFront": false
      },
      "design_html_back": "<p>Thank you</p>",
      "metadata": null,
      "created_at": "2026-09-23T11:28:45.000000Z",
      "updated_at": "2026-10-01T10:15:00.000000Z",
      "deleted_at": null,
      "unique_code": "1nwluo",
      "store": {
        "id": 3008,
        "name": "Acme Coffee - Circular Quay"
      }
    },
    "message": "QR code template updated successfully"
  }
}

Examples

Success payload

See Response payload.

Error payload

400 Review solicitation not on the plan

{
  "message": "Review Solicitation is not enabled for this store. Please enable it in your plan or contact support for assistance.",
  "status": "error",
  "errors": []
}

404 Not found

{
  "message": "QR code template not found",
  "status": "error",
  "errors": []
}

422 Invalid fields

{
  "message": "QR code template does not exist. (and 2 more errors)",
  "errors": {
    "id": [
      "QR code template does not exist."
    ],
    "name": [
      "Template name is required."
    ],
    "template_type": [
      "Template type is required."
    ]
  }
}
StatusMeaning
200The design was updated.
400The location's plan doesn't include review solicitation.
401The token is missing, expired or invalid.
404QR code template not found: id is missing, or the design wasn't created under your token's account.
422name or template_type is missing or invalid, or no design has this id.
500Unexpected server error.

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/qr-codes/template/update" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"id": 2964, "name": "Updated Standard A6", "template_type": "standard", "design_html": "<p>Scan to leave us a review</p>", "design_settings": {"title": "QR Code", "titleColor": "#222222"}, "design_html_back": "<p>Thank you</p>", "design_settings_back": {"backSameAsFront": false}}'

Did this page help you?