Skip to main content
PUT
/
qrcode
/
{qrid}
/
curl --request PUT \
--url https://management.scanova.io/qrcode/{qrid}/ \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Updated QR Code Name"
}'
{
  "id": 2411719,
  "qrid": "Q3493df1c0e074ac7",
  "name": "QR Code",
  "qr_type": "dy",
  "qr_type_display": "Dynamic",
  "category": {
    "id": 1,
    "name": "Website URL",
    "slug": "url",
    "description": "When scanned, redirects user to a website.",
    "preview_image": "https://qcg-media.scanova.io/qr-category/2020/09/url.png",
    "allowed_qr_types": "bt",
    "allowed_qr_types_display": "Both",
    "tags": "internet,website,link,url,webpage",
    "is_active": true,
    "is_new": false,
    "has_landing_page": false,
    "helpdesk_link": "https://support.scanova.io/hc/en-us/articles/36997331177753-Create-Website-URL-QR-Code",
    "created": "2020-09-07T11:37:48.093485+05:30",
    "modified": "2025-10-16T14:50:48.791993+05:30"
  },
  "info": "{\"type\":\"url\",\"data\":{\"url\":\"https://scanova.io\"}}",
  "dynamic_url_object": {
    "url_hash": "9drY",
    "domain": null,
    "custom_domain": 1903,
    "high_accuracy_mode": false,
    "high_accuracy_mode_text": "",
    "high_accuracy_confirmation": false,
    "lead_list": null,
    "expire_on_timezone": null,
    "expire_on": null,
    "expire_on_text": null,
    "minimum_age": null,
    "visit_count": 0,
    "created": "2025-10-24T18:54:22.752924+05:30",
    "modified": "2025-10-24T18:54:22.752945+05:30",
    "is_custom_hash": false,
    "is_custom_domain": true,
    "is_password_protected": false,
    "complete_url": "https://anuj.sqcg.in/9drY",
    "is_expired": false,
    "is_page": false,
    "has_qr": true,
    "high_accuracy_geo_fencing": false,
    "high_accuracy_geo_fencing_config": {},
    "qr_url": "https://anuj.sqcg.in/9drY?qr=1"
  },
  "pattern_info": null,
  "svg_code": null,
  "thumbnail": null,
  "is_active": true,
  "version": 1,
  "created": "2025-10-24T18:54:22.697338+05:30",
  "modified": "2025-10-24T18:54:22.697362+05:30",
  "tags_list": [],
  "is_password_protected": false,
  "is_age_restricted": false,
  "is_designer": false,
  "pattern_type": null,
  "created_by": null,
  "password": null,
  "ai_qr_code": null,
  "wallet_pass_info": null,
  "is_qr_scannable": null,
  "custom_form_response_count": 0,
  "rsvp_form_response_count": 0,
  "restaurant_feedback_response_count": 0
}

Behavior / Notes

  • Use this endpoint to update mutable fields such as name, info, pattern_info, expiry settings, geo-fencing, lead capture, password, and other advanced toggles.
  • Fields that are immutable after creation: category, qr_type, custom_domain. Attempting to change them will return a validation error.
  • PUT replaces the mutable fields you submit — only include fields you want changed. (If your client supports PATCH, prefer it for partial updates; otherwise send only the fields you intend to update.)
  • Validate new info payloads with POST /qrcode/validate-info/ before updating to avoid broken landing pages.

Request Body — Updatable Fields

The following fields may be included in the JSON request body. Only include fields you want to change. Common / Editable fields
FieldTypeDescription
namestringNew name for the QR Code
infostringJSON string containing updated QR content (see Components Reference)
pattern_infoobject or stringDesign updates (pattern, colors, eyes, frame). Serialize if required by client
expire_onstring (date-time)Expiration timestamp (advanced feature)
expire_on_textstring (HTML)HTML displayed when QR is expired
expire_on_timezonestringTimezone for expiration (e.g., Asia/Kolkata)
high_accuracy_confirmationbooleanHigh-accuracy confirmation for location QR codes
high_accuracy_geo_fencingbooleanToggle geo-fencing
high_accuracy_geo_fencing_configobjectGeo-fencing config (displayText, fallback, mapLocation, range, unit, redirectUrl)
high_accuracy_modebooleanRequest location access behavior toggle
high_accuracy_mode_textstringText shown when requesting location permission
lead_listinteger or nullLead list ID to capture leads. Set null to remove link.
minimum_ageintegerMinimum age to access content
passwordstringPassword to protect QR Code content
Tip: Set lead_list: null to remove the lead list association.

Examples

Update QR Code Name

curl -X PUT "https://management.scanova.io/qrcode/Q3493df1c0e074ac7/" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated QR Code Name"
  }'

Update QR Code Content

curl -X PUT "https://management.scanova.io/qrcode/Q3493df1c0e074ac7/" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Website QR Code",
    "info": "{\"type\":\"url\",\"data\":{\"url\":\"https://updated-website.com\"}}"
  }'

Update Advanced Features

curl -X PUT "https://management.scanova.io/qrcode/Q3493df1c0e074ac7/" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Advanced QR Code",
    "expire_on": "2025-12-31T23:59:59+05:30",
    "expire_on_timezone": "Asia/Kolkata",
    "expire_on_text": "<div style=\"text-align:center\"><p>This QR code has expired</p></div>",
    "high_accuracy_mode": true,
    "high_accuracy_mode_text": "Location access required for this QR code",
    "high_accuracy_confirmation": true,
    "minimum_age": 18,
    "password": "securepassword123"
  }'

Update Geo-fencing Configuration

curl -X PUT "https://management.scanova.io/qrcode/Q3493df1c0e074ac7/" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "high_accuracy_geo_fencing": true,
    "high_accuracy_geo_fencing_config": {
      "unit": "ft",
      "range": 500,
      "fallback": "message",
      "displayText": "<p>This QR code is location-restricted. Please enable GPS and try again.</p>",
      "mapLocation": {
        "provider": "google",
        "latitude": 40.7127753,
        "longitude": -74.0059728,
        "placeId": "",
        "placeName": "New York"
      },
      "redirectUrl": ""
    }
  }'

Update Lead List

curl -X PUT "https://management.scanova.io/qrcode/Q3493df1c0e074ac7/" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "lead_list": 1106
  }'

Remove Lead List

curl -X PUT "https://management.scanova.io/qrcode/Q3493df1c0e074ac7/" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "lead_list": null
  }'

Immutable-field errors

If an attempt is made to modify an immutable field (category, qr_type, custom_domain), the API will return a validation error describing the immutability.

Best Practices & Recommendations

  • Validate before updating: Use POST /qrcode/validate-info/ to confirm info payload correctness.
  • Sanitize HTML: Any HTML fields (expire_on_text, high_accuracy_geo_fencing_config.displayText) should be sanitized to prevent XSS on landing pages.
  • Minimize update payloads: Send only the fields you intend to change to avoid accidental overwrites.
  • Audit & versioning: Log update operations (who changed what and when) if your workflow requires auditability.
  • Plan entitlements: Confirm advanced features (geo-fencing, expiry, custom domains, lead capture) are enabled in the account plan before updating.
  • Test scanning: After UI/design changes (pattern_info), test scanning across devices and apps to ensure scannability.

Authorizations

Authorization
string
header
required

API key authentication. Enter your API key directly in the Authorization header.

Path Parameters

qrid
string
required

QR Code ID

Body

application/json

Request schema for updating QR codes. Note: category, qr_type, and custom_domain cannot be updated after creation.

name
string

Name of the QR Code

Example:

"Updated QR Code Name"

info
string

JSON data to update QR code content. See Components Reference for detailed structure examples for each category.

Example:

"{\"type\":\"url\",\"data\":{\"url\":\"https://updated-example.com\"}}"

pattern_info
string

JSON data to update QR code design. See Pattern Info Reference for complete customization options and field values.

Example:

"{\"dataInfo\":{\"pattern\":\"lightSquare\",\"gradientStyle\":\"Diagonal\",\"startColor\":\"#000\",\"endColor\":\"#000\",\"logo\":null},\"backGroundColor\":\"#ffffff\"}"

expire_on
string<date-time>

Expiration date and time for the QR code (advanced feature - requires plan quota)

Example:

"2025-12-31T23:59:59+05:30"

expire_on_text
string

Custom HTML text to display when QR code is expired (advanced feature - requires plan quota)

Example:

"<div style=\"text-align:center\"><p>This QR code has expired</p></div>"

expire_on_timezone
string

Timezone for expiration date (advanced feature - requires plan quota)

Example:

"Asia/Kolkata"

high_accuracy_confirmation
boolean

Enable high accuracy confirmation for location-based QR codes (advanced feature - requires plan quota)

Example:

true

high_accuracy_geo_fencing
boolean

Enable high accuracy geo-fencing for location-based QR codes (advanced feature - requires plan quota)

Example:

true

high_accuracy_geo_fencing_config
object

Configuration for high accuracy geo-fencing (advanced feature - requires plan quota)

high_accuracy_mode
boolean

Enable high accuracy mode for location-based QR codes (advanced feature - requires plan quota)

Example:

true

high_accuracy_mode_text
string

Text to display when requesting location access (advanced feature - requires plan quota)

Example:

"Location access required for this QR code"

lead_list
integer

Lead list ID for capturing leads (advanced feature - requires plan quota). Set to null to remove lead list.

Example:

1106

minimum_age
integer

Minimum age requirement for accessing QR code content (advanced feature - requires plan quota)

Example:

18

password
string

Password protection for QR code access (advanced feature - requires plan quota)

Example:

"securepassword123"

Response

QR Code updated successfully

id
integer

Internal QR code ID

Example:

2411719

qrid
string

Unique QR code identifier

Example:

"Q3493df1c0e074ac7"

name
string

Name of the QR code

Example:

"QR Code"

qr_type
string

QR code type

Example:

"dy"

qr_type_display
string

Human-readable QR code type

Example:

"Dynamic"

category
object
info
string

JSON data for QR code content

Example:

"{\"type\":\"url\",\"data\":{\"url\":\"https://scanova.io\"}}"

dynamic_url_object
object
pattern_info
string

QR code design pattern information

Example:

null

svg_code
string

SVG code for QR code

Example:

null

thumbnail
string

Thumbnail URL for QR code

Example:

null

is_active
boolean

Whether the QR code is active

Example:

true

version
number

QR code version

Example:

1

created
string<date-time>

Creation timestamp

Example:

"2025-10-24T18:54:22.697338+05:30"

modified
string<date-time>

Last modification timestamp

Example:

"2025-10-24T18:54:22.697362+05:30"

tags_list
string[]

List of tags associated with QR code

Example:
[]
is_password_protected
boolean

Whether the QR code is password protected

Example:

false

is_age_restricted
boolean

Whether the QR code has age restrictions

Example:

false

is_designer
boolean

Whether the QR code uses designer features

Example:

false

pattern_type
string

Pattern type for QR code design

Example:

null

created_by
string

User who created the QR code

Example:

null

password
string

Password for QR code access

Example:

null

ai_qr_code
string

AI-generated QR code information

Example:

null

wallet_pass_info
string

Wallet pass information

Example:

null

is_qr_scannable
boolean

Whether the QR code is scannable

Example:

null

custom_form_response_count
integer

Number of custom form responses

Example:

0

rsvp_form_response_count
integer

Number of RSVP form responses

Example:

0

restaurant_feedback_response_count
integer

Number of restaurant feedback responses

Example:

0