> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scanova.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List trashed QR codes

> GET /qrcode/trash/

Lists QR codes that have been soft-deleted (moved to trash) via [`DELETE /qrcode/{qrid}/`](/api-reference/management-api/qr/delete). Lives on the **Management API** host (`management.scanova.io`), authenticated with your raw Management API key.

```
GET https://management.scanova.io/qrcode/trash/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
```

<Tip>
  Also reachable at `/qr/trash/` — same view, same behavior.
</Tip>

### Query parameters

This endpoint supports the same `search`, `category`, `tags`, `type`, and `ordering` parameters as [`GET /qr/`](/api-reference/management-api/qr/list#query-parameters), plus deletion-date filters:

<ParamField query="deleted_from" type="string">
  ISO date. Returns QR codes deleted on or after this date.
</ParamField>

<ParamField query="deleted_till" type="string">
  ISO date. Returns QR codes deleted on or before this date.
</ParamField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "count": 3,
    "next": null,
    "previous": null,
    "results": [
      {
        "id": 88190,
        "qrid": "QR2P8V4LM",
        "name": "Old menu — spring",
        "qr_type": "dy",
        "qr_type_display": "Dynamic",
        "short_url": "https://qr.link/d4e5f6",
        "thumbnail": "https://cdn.scanova.io/thumbnails/QR2P8V4LM.png",
        "is_active": false,
        "published_at": "2026-03-01T10:00:00Z",
        "category_slug": "url",
        "is_currently_draft": false,
        "deleted": "2026-08-01T16:22:09Z",
        "category": { "id": 1, "name": "Website URL", "slug": "url" },
        "tags_list": ["menu"],
        "dynamic_url_object": { "has_qr": true }
      }
    ]
  }
  ```
</ResponseExample>

<Note>
  This is a slimmer shape than the main list endpoint's — notably `deleted` (the soft-deletion timestamp) is unique to trash, and `dynamic_url_object` here is reduced to just `{"has_qr": ...}` rather than the fuller object returned by `GET /qr/`. Pagination follows the same [page-number, not URL](/api-reference/management-api/qr/list) convention as the main list endpoint.
</Note>

## Restoring or permanently deleting trashed QR codes

This reference covers listing trashed QR codes only. The dashboard's restore and permanent-delete actions are backed by separate bulk endpoints (`POST` to a `trash/restore/` and `trash/delete/` path respectively) that aren't documented in this API reference yet — reach out to [support@scanova.io](mailto:support@scanova.io) if you need programmatic restore/permanent-delete today.

## Related

* [Retrieve, update, delete a QR code](/api-reference/management-api/qr/delete) — the `DELETE` call that moves a QR code into this trash list.
* [List / create QR codes](/api-reference/management-api/qr/list) — the equivalent listing endpoint for active (non-trashed) QR codes.


## OpenAPI

````yaml api-reference/openapi/management-api.json GET /qrcode/trash/
openapi: 3.1.0
info:
  title: Scanova Management API (v2)
  description: >-
    The complete Scanova Management API — every endpoint available at
    management.scanova.io (QR codes, folders, tags, leads, forms, analytics,
    plans, shared users & roles), plus the token-creation and usage-stats
    endpoints used to authenticate against it. Every path and request/response
    shape below was verified live against a real API key and the actual running
    backend (Phase 7, 2026-08-16) — not guessed from reading urls.py alone.
  version: 2.0.0
servers:
  - url: https://management.scanova.io
    description: Management API — QR/folder/tag/lead/form/analytics/plans endpoints
security:
  - apiKeyAuth: []
paths:
  /qrcode/trash/:
    get:
      summary: List trashed QR codes
      operationId: listTrashedQrCodes
      responses:
        '200':
          description: Trashed QR codes
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        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.

````