Skip to main content
GET
/
qrcode
/
List QR Codes
curl --request GET \
  --url https://management.scanova.io/qrcode/ \
  --header 'Authorization: <api-key>'
{
  "count": 185,
  "next": 2,
  "previous": null,
  "results": [
    {
      "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",
        "tags": "internet,website,link,url,webpage",
        "is_active": true,
        "is_new": false,
        "is_visible": true,
        "has_landing_page": false,
        "helpdesk_link": "https://support.scanova.io/hc/en-us/articles/36997331177753-Create-Website-URL-QR-Code",
        "industries": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          23,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22
        ],
        "use_cases": [
          1
        ],
        "content_type": [
          1
        ]
      },
      "info": "{\"type\":\"url\",\"data\":{\"url\":\"https://scanova.io\"}}",
      "dynamic_url_object": {
        "url_hash": "9drY",
        "domain": null,
        "custom_domain": 1903,
        "high_accuracy_mode": true,
        "high_accuracy_mode_text": "The QR Code administrator is requesting one-time access to your device's location. You will be redirected to the content regardless of your choice.",
        "high_accuracy_confirmation": true,
        "lead_list": 1106,
        "expire_on_timezone": "Asia/Kolkata",
        "expire_on": "2025-10-31T02:03:00+05:30",
        "expire_on_text": "<div style=\"text-align:center\"><img alt=\"\" src=\"https://qcg-media.scanova.io/assets/landing/qr-placeholder-expired.png\" style=\"height:137px; width:150px\" /></div><p style=\"text-align:center\">This QR Code has been deactivated</p>",
        "minimum_age": 18,
        "visit_count": 0,
        "created": "2025-10-24T18:54:22.752924+05:30",
        "modified": "2025-10-24T18:56:37.833924+05:30",
        "is_custom_hash": false,
        "is_custom_domain": true,
        "is_password_protected": true,
        "complete_url": "https://anuj.sqcg.in/9drY",
        "is_expired": false,
        "is_page": false,
        "has_qr": true,
        "high_accuracy_geo_fencing": true,
        "high_accuracy_geo_fencing_config": {
          "unit": "ft",
          "range": 500,
          "fallback": "message",
          "displayText": "<p style=\"text-align:center\">This QR Code is location-restricted.</p><p style=\"text-align:center\">The content linked to this QR Code is only accessible when scanned from a specific location. Looks like you are either outside the specified area or haven't granted location access.</p><p style=\"text-align:center\">Enable GPS location access and try again.</p>",
          "mapLocation": {
            "placeId": "",
            "latitude": 40.7127753,
            "provider": "google",
            "longitude": -74.0059728,
            "placeName": "New York"
          },
          "redirectUrl": ""
        },
        "qr_url": "https://anuj.sqcg.in/9drY?qr=1"
      },
      "pattern_info": null,
      "svg_code": null,
      "thumbnail": "https://qcg-media.scanova.io/qr/thumbnail/2025/10/cde2550d-2bb1-4a6f-9f94-0e7136154e2b.jpg",
      "is_active": true,
      "version": 1,
      "created": "2025-10-24T18:54:22.697338+05:30",
      "modified": "2025-10-24T18:56:37.602122+05:30",
      "tags_list": [],
      "is_password_protected": true,
      "is_age_restricted": true,
      "is_designer": false,
      "pattern_type": null,
      "created_by": {
        "full_name": "Anuj Sharma"
      },
      "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
    }
  ]
}

Query Parameters

NameTypeRequiredDefaultDescription
pageintegerNo1Page number (1-based).
orderingstringNocreatedSort order. Prefix with - for descending. Allowed: created, -created, name, -name, category__name, -category__name, dynamic_url_object__visit_count, -dynamic_url_object__visit_count.
created_fromdate (YYYY-MM-DD)NoOnly return QR codes created on/after this date.
created_tilldate (YYYY-MM-DD)NoOnly return QR codes created on/before this date.
tagsstringNoComma-separated tags (URL-encoded). Example: marketing,summer-campaign.
categorystringNoComma-separated category slugs. Example: url,product.
typestringNoFilter by QR type: st (static), dy (dynamic).
statusstringNoFilter by status: active, inactive.
usersstringNoComma-separated user IDs (URL-encoded).
scan_typestringNoScan-count comparison mode: less_than, between, greater_than, equal_to. Must be used with scan_count1.
scan_count1integerNoPrimary scan-count value (required with scan_type).
scan_count2integerNoSecondary scan-count value (required when scan_type=between).
searchstringNoFree-text search value.
search_fieldsstringNoComma-separated fields to search in: qrid, dynamic_url_object__url_hash, name. If omitted, default search fields are used.

Usage Notes (query params)

  • ordering example: ?ordering=-dynamic_url_object__visit_count returns most-scanned QR codes first.
  • Date filters accept YYYY-MM-DD (server timezone aware). To filter by exact datetime, use server-side date range with created_from/created_till.
  • For scan_type=between, supply both scan_count1 and scan_count2 (e.g., scan_count1=10&scan_count2=100).
  • When filtering by tags or category, URL-encode commas (or use repeated parameters depending on your client).

Examples

Get All QR Codes

curl -X GET "https://management.scanova.io/qrcode/" \
  -H "Authorization: YOUR_API_KEY"

Pagination

# Get page 2
curl -X GET "https://management.scanova.io/qrcode/?page=2" \
  -H "Authorization: YOUR_API_KEY"

Sorting

# Sort by creation date (newest first)
curl -X GET "https://management.scanova.io/qrcode/?ordering=-created" \
  -H "Authorization: YOUR_API_KEY"

# Sort by name (alphabetical)
curl -X GET "https://management.scanova.io/qrcode/?ordering=name" \
  -H "Authorization: YOUR_API_KEY"

# Sort by visit count (most visited first)
curl -X GET "https://management.scanova.io/qrcode/?ordering=-dynamic_url_object__visit_count" \
  -H "Authorization: YOUR_API_KEY"

Date Filtering

# QR codes created between specific dates
curl -X GET "https://management.scanova.io/qrcode/?created_from=2025-10-06&created_till=2025-10-24" \
  -H "Authorization: YOUR_API_KEY"

# QR codes created from a specific date
curl -X GET "https://management.scanova.io/qrcode/?created_from=2025-10-01" \
  -H "Authorization: YOUR_API_KEY"

Category and Type Filtering

# Filter by specific categories
curl -X GET "https://management.scanova.io/qrcode/?category=image%2CrealEstate" \
  -H "Authorization: YOUR_API_KEY"

# Filter by QR code type
curl -X GET "https://management.scanova.io/qrcode/?type=dy" \
  -H "Authorization: YOUR_API_KEY"

# Filter by status
curl -X GET "https://management.scanova.io/qrcode/?status=active" \
  -H "Authorization: YOUR_API_KEY"

Tag Filtering

# Filter by tags
curl -X GET "https://management.scanova.io/qrcode/?tags=new%20batch%2Cdfgh" \
  -H "Authorization: YOUR_API_KEY"

User Filtering

# Filter by specific users
curl -X GET "https://management.scanova.io/qrcode/?users=412428%2C412427" \
  -H "Authorization: YOUR_API_KEY"

Scan Count Filtering

# QR codes with less than 100 scans
curl -X GET "https://management.scanova.io/qrcode/?scan_type=less_than&scan_count1=100" \
  -H "Authorization: YOUR_API_KEY"

# QR codes with more than 50 scans
curl -X GET "https://management.scanova.io/qrcode/?scan_type=greater_than&scan_count1=50" \
  -H "Authorization: YOUR_API_KEY"

# QR codes with exactly 10 scans
curl -X GET "https://management.scanova.io/qrcode/?scan_type=equal_to&scan_count1=10" \
  -H "Authorization: YOUR_API_KEY"

# QR codes with between 10 and 100 scans
curl -X GET "https://management.scanova.io/qrcode/?scan_type=between&scan_count1=100&scan_count2=10" \
  -H "Authorization: YOUR_API_KEY"
# Search by QR code name
curl -X GET "https://management.scanova.io/qrcode/?search=my%20qr%20code&search_fields=name" \
  -H "Authorization: YOUR_API_KEY"

# Search by QR ID
curl -X GET "https://management.scanova.io/qrcode/?search=Q3493df1c0e074ac7&search_fields=qrid" \
  -H "Authorization: YOUR_API_KEY"

# Search by URL hash
curl -X GET "https://management.scanova.io/qrcode/?search=9drY&search_fields=dynamic_url_object__url_hash" \
  -H "Authorization: YOUR_API_KEY"

# Search across multiple fields
curl -X GET "https://management.scanova.io/qrcode/?search=website&search_fields=qrid,dynamic_url_object__url_hash,name" \
  -H "Authorization: YOUR_API_KEY"

Complex Filtering

# Active dynamic QR codes created in October 2025, sorted by visit count
curl -X GET "https://management.scanova.io/qrcode/?status=active&type=dy&created_from=2025-10-01&created_till=2025-10-31&ordering=-dynamic_url_object__visit_count" \
  -H "Authorization: YOUR_API_KEY"

# Image and real estate QR codes with more than 50 scans, sorted by name
curl -X GET "https://management.scanova.io/qrcode/?category=image%2CrealEstate&scan_type=greater_than&scan_count1=50&ordering=name" \
  -H "Authorization: YOUR_API_KEY"

Response Example

{
  "count": 185,
  "next": 2,
  "previous": null,
  "results": [
    {
      "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",
        "tags": "internet,website,link,url,webpage",
        "is_active": true,
        "is_new": false,
        "is_visible": true,
        "has_landing_page": false,
        "helpdesk_link": "https://support.scanova.io/hc/en-us/articles/36997331177753-Create-Website-URL-QR-Code",
        "industries": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 23, 15, 16, 17, 18, 19, 20, 21, 22],
        "use_cases": [1],
        "content_type": [1]
      },
      "info": "{\"type\":\"url\",\"data\":{\"url\":\"https://scanova.io\"}}",
      "dynamic_url_object": {
        "url_hash": "9drY",
        "domain": null,
        "custom_domain": 1903,
        "high_accuracy_mode": true,
        "high_accuracy_mode_text": "The QR Code administrator is requesting one-time access to your device's location. You will be redirected to the content regardless of your choice.",
        "high_accuracy_confirmation": true,
        "lead_list": 1106,
        "expire_on_timezone": "Asia/Kolkata",
        "expire_on": "2025-10-31T02:03:00+05:30",
        "expire_on_text": "<div style=\"text-align:center\"><img alt=\"\" src=\"https://qcg-media.scanova.io/assets/landing/qr-placeholder-expired.png\" style=\"height:137px; width:150px\" /></div><p style=\"text-align:center\">This QR Code has been deactivated</p>",
        "minimum_age": 18,
        "visit_count": 0,
        "created": "2025-10-24T18:54:22.752924+05:30",
        "modified": "2025-10-24T18:56:37.833924+05:30",
        "is_custom_hash": false,
        "is_custom_domain": true,
        "is_password_protected": true,
        "complete_url": "https://anuj.sqcg.in/9drY",
        "is_expired": false,
        "is_page": false,
        "has_qr": true,
        "high_accuracy_geo_fencing": true,
        "high_accuracy_geo_fencing_config": {
          "unit": "ft",
          "range": 500,
          "fallback": "message",
          "displayText": "<p style=\"text-align:center\">This QR Code is location-restricted.</p><p style=\"text-align:center\">The content linked to this QR Code is only accessible when scanned from a specific location. Looks like you are either outside the specified area or haven't granted location access.</p><p style=\"text-align:center\">Enable GPS location access and try again.</p>",
          "mapLocation": {
            "placeId": "",
            "latitude": 40.7127753,
            "provider": "google",
            "longitude": -74.0059728,
            "placeName": "New York"
          },
          "redirectUrl": ""
        },
        "qr_url": "https://anuj.sqcg.in/9drY?qr=1"
      },
      "pattern_info": null,
      "svg_code": null,
      "thumbnail": "https://qcg-media.scanova.io/qr/thumbnail/2025/10/cde2550d-2bb1-4a6f-9f94-0e7136154e2b.jpg",
      "is_active": true,
      "version": 1.0,
      "created": "2025-10-24T18:54:22.697338+05:30",
      "modified": "2025-10-24T18:56:37.602122+05:30",
      "tags_list": [],
      "is_password_protected": true,
      "is_age_restricted": true,
      "is_designer": false,
      "pattern_type": null,
      "created_by": {
        "full_name": "Anuj Sharma"
      },
      "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
    }
  ]
}

Performance & Pagination Best Practices

  • Use sensible page sizes on the client (server defaults to a safe page size). For large exports, use dedicated export endpoints if available.
  • Cache category metadata (it changes rarely) instead of refetching per-QR item.
  • Use server-side sorting (ordering) for accurate, paginated results rather than fetching all pages and sorting client-side.
  • Avoid deep paging with very large offsets; prefer cursor-based or export flows for millions of records.
  • Rate-limit handling: implement retries with exponential backoff for 429 Too Many Requests.

UI/UX Tips for Rendering

  • Show thumbnail if available; fall back to generated QR preview using qr_url.
  • Respect is_active and is_visible flags when listing to end users.
  • Use dynamic_url_object.visit_count and qr_type_display for quick insights.
  • For lists with many columns, provide column toggles — hide expensive fields (full info JSON) by default.

Authorizations

Authorization
string
header
required

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

Query Parameters

page
integer

Page number to retrieve

Required range: x >= 1
ordering
enum<string>

Sort order. Use '-' prefix for descending order

Available options:
created,
-created,
name,
-name,
category__name,
-category__name,
dynamic_url_object__visit_count,
-dynamic_url_object__visit_count
created_from
string<date>

Filter QR codes created from this date (YYYY-MM-DD)

created_till
string<date>

Filter QR codes created till this date (YYYY-MM-DD)

tags
string

Filter by tags (comma-separated, URL encoded)

category
string

Filter by category slugs (comma-separated, URL encoded)

type
enum<string>

Filter by QR code type

Available options:
st,
dy
status
enum<string>

Filter by QR code status

Available options:
active,
inactive
users
string

Filter by user IDs (comma-separated, URL encoded)

scan_type
enum<string>

Filter by scan count comparison type

Available options:
less_than,
between,
greater_than,
equal_to
scan_count1
integer

Primary scan count value (required with scan_type)

Required range: x >= 0
scan_count2
integer

Secondary scan count value (required for 'between' scan_type)

Required range: x >= 0

Search value

search_fields
enum<string>

Fields to search in (comma-separated)

Available options:
qrid,
dynamic_url_object__url_hash,
name

Response

List of QR codes

count
integer

Total number of QR codes

Example:

185

next
integer

Page number for next page (null if no more pages)

Example:

2

previous
integer

Page number for previous page (null if first page)

Example:

null

results
object[]