curl --request GET \
--url https://management.scanova.io/qr/trash/ \
--header 'Authorization: <api-key>'import requests
url = "https://management.scanova.io/qr/trash/"
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/qr/trash/', 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/qr/trash/",
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/qr/trash/"
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/qr/trash/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://management.scanova.io/qr/trash/")
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{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 1039,
"qrid": "Qe5f6g7h8i9j0k1l",
"name": "Spring Menu",
"qr_type": "dy",
"qr_type_display": "Dynamic",
"short_url": "https://scnv.io/d4e5f6g7",
"thumbnail": null,
"is_active": false,
"published_at": "2026-03-01T10:00:00Z",
"category_slug": "url",
"is_currently_draft": false,
"has_landing_page": false,
"deleted": "2026-08-01T16:22:09Z",
"category": {
"id": 3,
"name": "Website URL",
"slug": "url",
"allowed_qr_types": "dy",
"has_landing_page": false
},
"tags_list": [
"menu"
],
"dynamic_url_object": {
"has_qr": true
},
"scan_count": 318
}
]
}Manage Trash QR Codes
Retrieve all QR Codes that have been deleted (moved to trash) from your Scanova account. Use this endpoint to view and manage QR codes that are no longer active but not yet permanently removed. Authentication required.
curl --request GET \
--url https://management.scanova.io/qr/trash/ \
--header 'Authorization: <api-key>'import requests
url = "https://management.scanova.io/qr/trash/"
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/qr/trash/', 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/qr/trash/",
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/qr/trash/"
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/qr/trash/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://management.scanova.io/qr/trash/")
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{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 1039,
"qrid": "Qe5f6g7h8i9j0k1l",
"name": "Spring Menu",
"qr_type": "dy",
"qr_type_display": "Dynamic",
"short_url": "https://scnv.io/d4e5f6g7",
"thumbnail": null,
"is_active": false,
"published_at": "2026-03-01T10:00:00Z",
"category_slug": "url",
"is_currently_draft": false,
"has_landing_page": false,
"deleted": "2026-08-01T16:22:09Z",
"category": {
"id": 3,
"name": "Website URL",
"slug": "url",
"allowed_qr_types": "dy",
"has_landing_page": false
},
"tags_list": [
"menu"
],
"dynamic_url_object": {
"has_qr": true
},
"scan_count": 318
}
]
}Description
This endpoint returns a list of QR codes that have been deleted by the user, but are still stored in the trash folder.QR codes in the trash can be restored or permanently deleted via respective endpoints (coming soon).
Request Parameters
This endpoint does not require any query or body parameters.| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) | — | — | This request retrieves all trashed QR codes by default. |
Example Response
✅ 200 OK
Returns a list of QR Codes currently in the trash.[
{
"id": 150659,
"qrid": "Qff950d6694c34e96",
"name": "Deleted QR Code",
"deleted_at": "2023-09-12T10:46:17.919723+05:30"
}
]
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.
Query Parameters
Free-text search, same fields as the main list endpoint.
Comma-separated category ids or slugs.
Comma-separated tag names.
Comma-separated QR types: dy, st.
Same ordering fields as the main list endpoint.
Page number.
Results per page, maximum 100.
Response
Paginated list of soft-deleted QR codes.
Was this page helpful?