> ## 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.

# Download a QR code image

> GET /qrcode/{qrid}/download/

Downloads a rendered QR code image on the **Management API** host (`management.scanova.io`), authenticated with your raw Management API key.

```
GET https://management.scanova.io/qrcode/{qrid}/download/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
```

<ParamField path="qrid" type="string" required>
  The QR code's `qrid`, e.g. `QR7K9M2XN`.
</ParamField>

<Tip>
  Also reachable at `/qr/{qrid}/download/` — same view, same behavior.
</Tip>

### Query parameters

<ParamField query="file" type="string" default="png">
  Output format: `png`, `jpg`, `jpeg`, `svg`, `pdf`, `eps`, or `ps`.
</ParamField>

<ParamField query="size" type="integer" default="300">
  Image size in pixels, from `10` to `2400`.
</ParamField>

<ParamField query="for_print" type="boolean" default="false">
  When `true`, returns a print-ready PDF generated locally (not via the image-generator service) and ignores `file`.
</ParamField>

<ParamField query="info" type="string">
  Optional pre-encoded payload override. Dynamic QR codes don't need this — it exists for Static QR codes, since this backend doesn't independently reproduce the frontend's client-side data-encoding logic for static types.
</ParamField>

## Response

A successful request returns the image as a binary file download (`Content-Disposition: attachment`), with a filename derived from the QR code's name (or its `qrid` if unnamed).

<RequestExample>
  ```bash cURL theme={null}
  curl -G "https://management.scanova.io/qrcode/QR7K9M2XN/download/" \
    -H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
    -d file=svg \
    -d size=600 \
    -o "product-launch-flyer.svg"
  ```
</RequestExample>

## Errors

<ResponseField name="400 Bad Request">
  Returned when `size` is outside `10`–`2400`, or `file` isn't one of the supported formats.
</ResponseField>

<ResponseField name="404 Not Found">
  The `qrid` doesn't exist, or doesn't belong to the account the key belongs to.
</ResponseField>

<ResponseField name="503 Service Unavailable">
  The upstream image-generator service is unreachable. This isn't a client error — retry, and contact support if it persists.
</ResponseField>

## Related

* [List / create QR codes](/api-reference/management-api/qr/list) — find the `qrid` to download here.
* [Retrieve, update, delete a QR code](/api-reference/management-api/qr/retrieve) — get a QR code's full details rather than its rendered image.


## OpenAPI

````yaml api-reference/openapi/management-api.json GET /qrcode/{qrid}/download/
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/{qrid}/download/:
    get:
      summary: Download a QR code image
      operationId: downloadManagedQrCode
      parameters:
        - name: qrid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: QR image binary
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.

````