---
title: "List QRs in the active scope, newest first, with short link and all-time scans"
method: GET
path: "/api/v1/qrs"
tags: ["QR Codes"]
---

# List QRs in the active scope, newest first, with short link and all-time scans

`GET /api/v1/qrs`

## Request

- Base URL: `https://qrlia.dev.castlesoft.eu`
- URL: `https://qrlia.dev.castlesoft.eu/api/v1/qrs`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `qrc_session`

## Query parameters

- `search` string: Case-insensitive match on the label.
- `folderId` union: Only QRs in this folder; "root" = not in any folder.
  - string, uuid
  - 'root'
- `companyId` string, uuid
- `status` 'active' | 'paused' | 'archived'
- `type` 'url' | 'vcard' | 'profile_card' | 'text' | 'email' | 'phone' | 'sms' | 'whatsapp' | 'wifi' | 'pdf' | 'image' | 'audio' | 'video' | 'app' | 'multilink' | 'menu' | 'feedback' | 'event' | 'dpp' | 'coupon' | 'sepa' | 'paypal' | 'crypto' | 'lead_form': Discriminator for QR payload shape.
- `cursor` string
- `limit` integer

## Response `200`

QRs

- object
  - `items` Qr[], required
    - `id` string, uuid, required
    - `tenantId` string, uuid, required
    - `companyId` string, uuid, required
    - `type` 'url' | 'vcard' | 'profile_card' | 'text' | 'email' | 'phone' | 'sms' | 'whatsapp' | 'wifi' | 'pdf' | 'image' | 'audio' | 'video' | 'app' | 'multilink' | 'menu' | 'feedback' | 'event' | 'dpp' | 'coupon' | 'sepa' | 'paypal' | 'crypto' | 'lead_form', required: Discriminator for QR payload shape.
    - `slug` string, nullable, required
    - `label` string, required
    - `payload` object, required
    - `designId` string, uuid, nullable, required
    - `folderId` string, uuid, nullable, required
    - `status` 'active' | 'paused' | 'archived', required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `shortLink` string, uri, nullable: The link the printed code encodes (https://<host>/r/<slug>).
    - `access` object
      - `passwordProtected` boolean, required
      - `startsAt` string, nullable, required
      - `expiresAt` string, nullable, required
      - `maxScans` number, nullable, required
      - `fallbackUrl` string, nullable, required
      - `fallbackMessage` string, nullable, required
    - `tracking` object
      - `ga4Id` string
      - `metaPixelId` string
      - `gtmId` string
      - `requestLocation` boolean
    - `totalScans` integer: All-time scans; included by list and get.
  - `next` string, nullable

## Other responses

- `400`: Validation failed
- `401`: Authentication required
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict
- `500`: Internal

---

[API](https://skmtc.dev/qrlia/apis/qrlia-api.md) · [All operations](https://skmtc.dev/qrlia/apis/qrlia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/qrlia/apis/qrlia-api/revisions/01c5dd6002ab?raw)
