curl -X PATCH "https://api.scanova.io/qr/Qa1b2c3d4e5f6g7h8/pattern/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"pattern_info": "{\"eye\":{\"shape\":\"rounded\"},\"body\":{\"shape\":\"dots\"},\"color\":{\"foreground\":\"#0b3d91\"}}"
}'
{
"id": 1042,
"qrid": "Qa1b2c3d4e5f6g7h8",
"name": "Summer Sale Landing",
"qr_type": "dy",
"qr_type_display": "Dynamic",
"category": {
"id": 3,
"name": "Website URL",
"slug": "url",
"allowed_qr_types": "dy",
"has_landing_page": false
},
"info": "{\"type\":\"url\",\"data\":{\"url\":\"https://example.com/summer-sale\"}}",
"pattern_info": null,
"svg_code": null,
"dynamic_url_object": {
"id": 501,
"url_hash": "a1b2c3d4",
"custom_domain": null,
"complete_url": "https://scnv.io/a1b2c3d4",
"qr_url": "https://scnv.io/a1b2c3d4",
"is_active": true,
"is_expired": false,
"visit_count": 0,
"web_tracking_site_id": null
},
"thumbnail": null,
"is_active": true,
"folder": null,
"version": 2,
"tags_list": [
"campaign-2026",
"print"
],
"is_password_protected": false,
"is_age_restricted": false,
"is_designer": false,
"high_accuracy_mode": false,
"activate_on": null,
"expire_on": null,
"expire_on_scan_count": null,
"minimum_age": null,
"is_page": false,
"has_qr": true,
"is_draft": false,
"draft_info": null,
"draft_saved_at": null,
"published_at": "2026-09-01T10:04:11Z",
"is_currently_draft": false,
"created": "2026-09-01T10:04:11Z",
"modified": "2026-09-01T10:04:11Z"
}QR Codes
Update a QR Code's design
PATCH /qr//pattern/
PATCH
/
qr
/
{qrid}
/
pattern
/
curl -X PATCH "https://api.scanova.io/qr/Qa1b2c3d4e5f6g7h8/pattern/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"pattern_info": "{\"eye\":{\"shape\":\"rounded\"},\"body\":{\"shape\":\"dots\"},\"color\":{\"foreground\":\"#0b3d91\"}}"
}'
{
"id": 1042,
"qrid": "Qa1b2c3d4e5f6g7h8",
"name": "Summer Sale Landing",
"qr_type": "dy",
"qr_type_display": "Dynamic",
"category": {
"id": 3,
"name": "Website URL",
"slug": "url",
"allowed_qr_types": "dy",
"has_landing_page": false
},
"info": "{\"type\":\"url\",\"data\":{\"url\":\"https://example.com/summer-sale\"}}",
"pattern_info": null,
"svg_code": null,
"dynamic_url_object": {
"id": 501,
"url_hash": "a1b2c3d4",
"custom_domain": null,
"complete_url": "https://scnv.io/a1b2c3d4",
"qr_url": "https://scnv.io/a1b2c3d4",
"is_active": true,
"is_expired": false,
"visit_count": 0,
"web_tracking_site_id": null
},
"thumbnail": null,
"is_active": true,
"folder": null,
"version": 2,
"tags_list": [
"campaign-2026",
"print"
],
"is_password_protected": false,
"is_age_restricted": false,
"is_designer": false,
"high_accuracy_mode": false,
"activate_on": null,
"expire_on": null,
"expire_on_scan_count": null,
"minimum_age": null,
"is_page": false,
"has_qr": true,
"is_draft": false,
"draft_info": null,
"draft_saved_at": null,
"published_at": "2026-09-01T10:04:11Z",
"is_currently_draft": false,
"created": "2026-09-01T10:04:11Z",
"modified": "2026-09-01T10:04:11Z"
}Replaces the design (eye shape, body pattern, colours, frame, logo) for one QR Code.
PATCH https://api.scanova.io/qr/{qrid}/pattern/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
string
required
The QR Code’s
qrid.string
required
Design data as a JSON-encoded string. Validated as JSON and against the design-pattern schema. Nullable — send
null to drop back to the default design.string
Optional base64 preview matching the new design. If you omit it, the server generates one for you from the new pattern.
curl -X PATCH "https://api.scanova.io/qr/Qa1b2c3d4e5f6g7h8/pattern/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"pattern_info": "{\"eye\":{\"shape\":\"rounded\"},\"body\":{\"shape\":\"dots\"},\"color\":{\"foreground\":\"#0b3d91\"}}"
}'
Omitting
thumbnail is usually what you want — server-side generation guarantees the preview matches the stored design. Send your own only when the client has already rendered the exact image you want stored.Related
- Check scannability — verify a design’s contrast before saving it.
- Update a QR Code’s thumbnail — change only the preview image.
- Migrate a legacy theme — for QR Codes still on the pre-v2 theme schema.
- QR Manager overview — the quotas, role permissions, and Trash model shared by every endpoint in this module.
- Management API overview — the auth scheme and quota rules that apply to this endpoint.
Authorizations
Send your Management API key as the raw value of the Authorization header — no "Bearer " or "Token " prefix, and no other characters. Example: Authorization: 401f7ac837da42b97f613d789819ff93537bee6a. A header containing more than one space-separated part is rejected outright. Requests also require the request's Host header to be the management API host (e.g. api.scanova.io) — the same key sent to the regular API host will not authenticate.
Path Parameters
The QR code's qrid — the opaque public identifier returned by the list endpoint, not the numeric id.
Response
Design updated.
Was this page helpful?