Retrieve a QR code
curl --request GET \
--url https://management.scanova.io/qrcode/{qrid}/ \
--header 'Authorization: <api-key>'import requests
url = "https://management.scanova.io/qrcode/{qrid}/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://management.scanova.io/qrcode/{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://management.scanova.io/qrcode/{qrid}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://management.scanova.io/qrcode/{qrid}/"
req, _ := http.NewRequest("GET", 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.get("https://management.scanova.io/qrcode/{qrid}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://management.scanova.io/qrcode/{qrid}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": 88231,
"qrid": "QR7K9M2XN",
"name": "Product launch flyer",
"qr_type": "dy",
"qr_type_display": "Dynamic",
"category": { "id": 1, "name": "Website URL", "slug": "url" },
"info": "{\"type\":\"url\",\"data\":{\"url\":\"https://example.com\"}}",
"pattern_info": null,
"dynamic_url_object": {
"url_hash": "a1b2c3",
"complete_url": "https://qr.link/a1b2c3",
"visit_count": 1042
},
"thumbnail": "https://cdn.scanova.io/thumbnails/QR7K9M2XN.png",
"is_active": true,
"folder": null,
"created": "2026-06-02T14:03:11Z",
"modified": "2026-08-10T08:41:02Z",
"tags_list": ["campaign-2026", "print"],
"is_password_protected": false,
"published_at": "2026-06-02T14:05:00Z",
"is_currently_draft": false
}
Management API — QR Codes
Retrieve
GET /qrcode//
GET
/
qrcode
/
{qrid}
/
Retrieve a QR code
curl --request GET \
--url https://management.scanova.io/qrcode/{qrid}/ \
--header 'Authorization: <api-key>'import requests
url = "https://management.scanova.io/qrcode/{qrid}/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://management.scanova.io/qrcode/{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://management.scanova.io/qrcode/{qrid}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://management.scanova.io/qrcode/{qrid}/"
req, _ := http.NewRequest("GET", 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.get("https://management.scanova.io/qrcode/{qrid}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://management.scanova.io/qrcode/{qrid}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": 88231,
"qrid": "QR7K9M2XN",
"name": "Product launch flyer",
"qr_type": "dy",
"qr_type_display": "Dynamic",
"category": { "id": 1, "name": "Website URL", "slug": "url" },
"info": "{\"type\":\"url\",\"data\":{\"url\":\"https://example.com\"}}",
"pattern_info": null,
"dynamic_url_object": {
"url_hash": "a1b2c3",
"complete_url": "https://qr.link/a1b2c3",
"visit_count": 1042
},
"thumbnail": "https://cdn.scanova.io/thumbnails/QR7K9M2XN.png",
"is_active": true,
"folder": null,
"created": "2026-06-02T14:03:11Z",
"modified": "2026-08-10T08:41:02Z",
"tags_list": ["campaign-2026", "print"],
"is_password_protected": false,
"published_at": "2026-06-02T14:05:00Z",
"is_currently_draft": false
}
Retrieves, updates, or deletes a single QR code on the Management API host (
management.scanova.io), authenticated with your raw Management API key.
GET https://management.scanova.io/qrcode/{qrid}/
PUT https://management.scanova.io/qrcode/{qrid}/
PATCH https://management.scanova.io/qrcode/{qrid}/
DELETE https://management.scanova.io/qrcode/{qrid}/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
string
required
The QR code’s
qrid (e.g. QR7K9M2XN) — the human-readable identifier returned by GET /qr/, not the numeric id.This same view is also reachable at
/qr/{qrid}/ (i.e. under the same path prefix as the list/create endpoint) — both paths resolve to the identical view and behavior. This reference documents /qrcode/{qrid}/ since that’s the path verified for this doc set, but either works.GET returns the full detail shape — every field the create/update serializer accepts, plus computed fields, but without AI-assistant fields (ai_qr_code, ai_session_id, ai_chat_history) and cross-database response-count fields that the list endpoint also omits.
{
"id": 88231,
"qrid": "QR7K9M2XN",
"name": "Product launch flyer",
"qr_type": "dy",
"qr_type_display": "Dynamic",
"category": { "id": 1, "name": "Website URL", "slug": "url" },
"info": "{\"type\":\"url\",\"data\":{\"url\":\"https://example.com\"}}",
"pattern_info": null,
"dynamic_url_object": {
"url_hash": "a1b2c3",
"complete_url": "https://qr.link/a1b2c3",
"visit_count": 1042
},
"thumbnail": "https://cdn.scanova.io/thumbnails/QR7K9M2XN.png",
"is_active": true,
"folder": null,
"created": "2026-06-02T14:03:11Z",
"modified": "2026-08-10T08:41:02Z",
"tags_list": ["campaign-2026", "print"],
"is_password_protected": false,
"published_at": "2026-06-02T14:05:00Z",
"is_currently_draft": false
}
Scope and errors
Every method here only operates on QR codes owned by the account the key belongs to — requesting aqrid you don’t own (or that doesn’t exist) returns 404, not 403, so you can’t use this endpoint to probe for the existence of other accounts’ QR codes.
Related
- Update — the other operation on this same endpoint.
- Delete — the other operation on this same endpoint.
- List QR codes — find a
qridto retrieve here. - Create a QR code — creating a QR code returns this same full detail shape.
- Download a QR code image — render this QR code as an image file.
- List trashed QR codes — where a QR code lands after
DELETEhere.
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. management.scanova.io) — the same key sent to the regular API host will not authenticate.
Path Parameters
Response
200
QR code detail
Was this page helpful?
⌘I