Update a QR code (partial)
curl --request PATCH \
--url https://api.scanova.io/qr/{qrid}/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.scanova.io/qr/{qrid}/"
headers = {"Authorization": "<api-key>"}
response = requests.patch(url, headers=headers)
print(response.text)const options = {method: 'PATCH', headers: {Authorization: '<api-key>'}};
fetch('https://api.scanova.io/qr/{qrid}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scanova.io/qr/{qrid}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scanova.io/qr/{qrid}/"
req, _ := http.NewRequest("PATCH", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.scanova.io/qr/{qrid}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scanova.io/qr/{qrid}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_bodyForm Management
Detach Form from QR Code
PATCH
/
qr
/
{qrid}
/
Update a QR code (partial)
curl --request PATCH \
--url https://api.scanova.io/qr/{qrid}/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.scanova.io/qr/{qrid}/"
headers = {"Authorization": "<api-key>"}
response = requests.patch(url, headers=headers)
print(response.text)const options = {method: 'PATCH', headers: {Authorization: '<api-key>'}};
fetch('https://api.scanova.io/qr/{qrid}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scanova.io/qr/{qrid}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scanova.io/qr/{qrid}/"
req, _ := http.NewRequest("PATCH", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.scanova.io/qr/{qrid}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scanova.io/qr/{qrid}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_bodyOverview
Detaches a form from a QR code. After detaching, users will access the QR code content directly without being prompted to fill out a form.Path Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
qrid | string | Yes | QR code ID | Qc3ca09e1a5574caf |
Request Body
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
form | null | Yes | Set to null to detach form | null |
Examples
Detach Form from QR Code
curl -X PATCH "https://management.scanova.io/qr/Qc3ca09e1a5574caf/" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"form": null
}'
Response
Returns the updated QR code object with the form information removed from thedynamic_url_object.
Behavior After Detaching
When a form is detached from a QR code:- User scans QR code
- Direct access to the original QR code content
- No form is displayed
- No submission data is collected
- Faster user experience (no form to fill out)
Important Notes
- Immediate Effect: Changes take effect immediately
- No Data Loss: Previously collected submissions remain in the form
- Form Preserved: The form itself is not deleted, only detached
- Can Reattach: You can attach the same or different form later
Use Cases
- Campaign End: Stop collecting submissions when a campaign ends
- A/B Testing: Test QR codes with and without forms
- User Experience: Remove form for better user experience
- Temporary Disable: Temporarily disable submission capture without deleting data
- Content Access: Allow direct access to content without barriers
Detaching a form does not delete the form or any previously collected submissions. The form remains available and can be reattached to the same or different QR codes later.
Once detached, the QR code will no longer collect form submissions. If you need to resume collecting submissions, you’ll need to reattach a form using the attach 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: YOUR_API_KEY. 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
Response
200
QR code updated
Was this page helpful?