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

# QR-codes

> QR-codes maken, weergeven, bijwerken, pauzeren, dupliceren, verwijderen en downloaden.

> [!NOTE]
>
> De GetQR API is in bèta en beschikbaar voor geselecteerde workspaces. Details kunnen nog veranderen vóór de algemene release.

Een QR-code in GetQR is de afbeelding plus een korte link waarlangs hij doorverwijst. Als je een QR-code maakt, wordt ook de korte link gemaakt, zodat je de bestemming later kunt wijzigen zonder de code opnieuw te drukken.

| Methode | Pad | Beschrijving |
| - | - | - |
| `GET` | `/api/v1/qrs` | [QR-codes weergeven](#qr-codes-weergeven) |
| `POST` | `/api/v1/qrs` | [Een QR-code maken](#een-qr-code-maken) |
| `GET` | `/api/v1/qrs/{qrId}` | [Een QR-code ophalen](#een-qr-code-ophalen) |
| `PATCH` | `/api/v1/qrs/{qrId}` | [Een QR-code bijwerken](#een-qr-code-bijwerken) |
| `PUT` | `/api/v1/qrs/{qrId}` | [De gepauzeerde status instellen](#de-gepauzeerde-status-instellen) |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Een QR-code pauzeren](#een-qr-code-pauzeren) |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Een QR-code heractiveren](#een-qr-code-heractiveren) |
| `POST` | `/api/v1/qrs/{qrId}/duplicate` | [Een QR-code dupliceren](#een-qr-code-dupliceren) |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Een QR-code verwijderen](#een-qr-code-verwijderen) |
| `GET` | `/api/v1/qrs/{qrId}/download` | [Een QR-codeafbeelding downloaden](#een-qr-codeafbeelding-downloaden) |

> [card] [QR-codedata per type](https://docs.getqr.com/nl/api/guides/qr-types.md)
>
> Het `data`-formaat van elk van de 16 types.

> [card] [Aanpassing](https://docs.getqr.com/nl/api/guides/customization.md)
>
> Stipstijlen, kleuren, frames en logo's.

> [card] [Toegangsregels](https://docs.getqr.com/nl/api/guides/access-rules.md)
>
> Planning, scanlimiet en wachtwoord.

Scanstatistieken van een QR-code vind je bij [Analytics](https://docs.getqr.com/nl/api/endpoints/analytics.md).

## Het QR-code-object

Elk QR-code-endpoint antwoordt met dit object, behalve [Verwijderen](#een-qr-code-verwijderen) en [Downloaden](#een-qr-codeafbeelding-downloaden). De lijst geeft er een array van terug.

**id** `string`

Unieke ID van de QR-code, bijvoorbeeld `qr_1EPcVfeHZAY2iNoVLsgW2Aqf`.

**qrType** `string`

Type van de QR-code, bijvoorbeeld `website`. Alle 16 waarden staan in [QR-codedata per type](https://docs.getqr.com/nl/api/guides/qr-types.md).

**title** `string | null`

Naam van de QR-code, getoond in het dashboard.

**description** `string | null`

Vrije notitie bij de QR-code.

**data** `string`

De opgeslagen payload. Bij `wifi`, `vcard`, `social`, `multilink`, `event` en `sms` is dit de payload die je hebt gestuurd. Bij alle andere types is het de korte link, dus lees de bestemming uit `url`.

**archived** `boolean`

`true` als de QR-code gepauzeerd is.

**isStatic** `boolean`

`true` bij een statische QR-code die in het dashboard is gemaakt en geen korte link heeft. De API maakt altijd dynamische QR-codes.

**shortLink** `string | null`

Volledige korte link, bijvoorbeeld `https://getqr.sh/x7Kd2p1`.

**domain** `string | null`

Domein van de korte link.

**key** `string | null`

Slug van de korte link.

**keyIsCustom** `boolean`

`true` als de slug zelf is gekozen in plaats van gegenereerd.

**url** `string | null`

Bestemming waarnaar de korte link doorverwijst.

**ios** `string | null`

Bestemming voor iOS-bezoekers, bij `app`-QR-codes.

**android** `string | null`

Bestemming voor Android-bezoekers, bij `app`-QR-codes.

**scans** `integer`

Totaal aantal scans.

**access** `object`

Toegangsregels. Het wachtwoord zelf wordt nooit teruggegeven. Zie [Toegangsregels](https://docs.getqr.com/nl/api/guides/access-rules.md).

**properties**

**passwordProtected** `boolean`

Of bezoekers een wachtwoord moeten invoeren.

**activeAt** `string | null`

Geplande start, ISO 8601.

**pauseAt** `string | null`

Gepland einde, ISO 8601.

**scanLimit** `integer | null`

Maximaal aantal scans.

**designKind** `string`

Alleen-lezen. `custom` is een ontwerp dat de API volledig kan bewerken. `branded` en `ai` zijn een Branded design of AI design dat in het dashboard is gemaakt. De API kan de afbeelding ervan niet bewerken, maar behoudt die wanneer je andere velden wijzigt.

**design** `object`

Het opgeslagen ontwerp: `styles`, `frameOptions` en `logoOptions`, elk een object of `null`. Ze hebben dezelfde vorm als de velden in het verzoek, zodat je ze terug kunt sturen. Zie [Aanpassing](https://docs.getqr.com/nl/api/guides/customization.md).

**file** `object | null`

Het bestand van een `pdf`-, `image`- of `video`-QR-code: `id`, `name` en `size` in bytes.

**appName** `string | null`

Alleen-lezen. Weergavenaam van een `app`-QR-code die in het dashboard is gemaakt.

**pdfBundle** `object | null`

Alleen-lezen. Een `pdf`-QR-code met meerdere bestanden, gemaakt in het dashboard: `title`, `layout` en `files`.

**imageGallery** `object | null`

Alleen-lezen. Een `image`-QR-code met meerdere afbeeldingen, gemaakt in het dashboard: `title`, `layout` en `files`.

**createdAt** `string`

Aanmaakdatum, ISO 8601.

**updatedAt** `string`

Datum van de laatste update, ISO 8601.

Geheimen en interne ID's (`password`, `userId`, `workspaceId`, `projectId`) worden nooit teruggegeven.

```json theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "qrType": "website",
  "title": "Landing page",
  "description": null,
  "data": "https://getqr.sh/x7Kd2p1",
  "archived": false,
  "isStatic": false,
  "shortLink": "https://getqr.sh/x7Kd2p1",
  "domain": "getqr.sh",
  "key": "x7Kd2p1",
  "keyIsCustom": false,
  "url": "https://example.com",
  "ios": null,
  "android": null,
  "scans": 128,
  "access": {
    "passwordProtected": false,
    "activeAt": null,
    "pauseAt": null,
    "scanLimit": null
  },
  "designKind": "custom",
  "design": {
    "styles": { "dotsOptions": { "type": "rounded", "color": "#1E40AF" }, … },
    "frameOptions": { "id": "card", "text": "Scan me!", … },
    "logoOptions": { "type": "suggested", "id": "logo-website-3", "scalePercent": 25 }
  },
  "file": null,
  "appName": null,
  "pdfBundle": null,
  "imageGallery": null,
  "createdAt": "2026-08-01T10:00:00.000Z",
  "updatedAt": "2026-08-01T10:00:00.000Z"
}
```

## QR-codes weergeven

`GET /api/v1/qrs`

Geeft de QR-codes in je workspace terug, één pagina per keer.

**page** `integer` (default: 1)

Pagina die wordt teruggegeven, 1 of hoger.

**pageSize** `integer` (default: 100)

QR-codes per pagina, van 1 tot 100. Een grotere waarde wordt geweigerd.

**search** `string`

Zoekt in de titel van de QR-code. Zoekopdrachten van meer dan 2 tekens zoeken ook in de opgeslagen `data`. Bij linktypes is de opgeslagen `data` de korte link, dus op bestemmings-URL's kun je niet zoeken.

**sortBy** `string` (default: createdAt)

Veld om op te sorteren: `createdAt`, `updatedAt`, `clicks` (totaal aantal scans), `lastClicked` (laatste scan) of `type`. `type` sorteert altijd aflopend en negeert `sortOrder`.

**sortOrder** `string` (default: desc)

Sorteerrichting: `asc` of `desc`.

**showArchived** `boolean` (default: false)

Gepauzeerde QR-codes meenemen.

**onlyArchived** `boolean` (default: false)

Alleen gepauzeerde QR-codes teruggeven. Gaat voor op `showArchived`.

Booleaanse parameters accepteren de strings `true` of `false`. Vraag de volgende pagina op zolang `pagination.hasMore` `true` is. Zie [Paginering](https://docs.getqr.com/nl/api/introduction.md#paginering).

```bash cURL theme={null}
curl "https://getqr.com/api/v1/qrs?page=1&pageSize=100" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "data": [
    {
      "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
      "qrType": "website",
      "title": "Landing page",
      "shortLink": "https://getqr.sh/x7Kd2p1",
      "url": "https://example.com",
      "scans": 128,
      "…": "…"
    }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 1, "hasMore": false }
}
```

## Een QR-code maken

`POST /api/v1/qrs`

Maakt een QR-code en de bijbehorende korte link in één keer. Antwoordt met `201 Created` en de nieuwe [QR-code](#het-qr-code-object).

**Idempotency-Key** `string`

Je eigen token voor herhaalde pogingen. Herhaal je het verzoek binnen 24 uur met dezelfde sleutel, dan krijg je het oorspronkelijke antwoord terug in plaats van een tweede QR-code. Zie [Herhaalde pogingen en duplicaten](#herhaalde-pogingen-en-duplicaten).

**qrType** `string` *required*

Wat de QR-code codeert. Dit bepaalt ook het formaat dat `data` moet hebben. Een van `website`, `pdf`, `image`, `video`, `whatsapp`, `social`, `wifi`, `app`, `feedback`, `vcard`, `sms`, `payment`, `location`, `multilink`, `email`, `event`.

**data** `string` *required*

De payload van het type, gecontroleerd tegen `qrType`. Een lege string slaat de controle over. Het formaat van elk type staat in [QR-codedata per type](https://docs.getqr.com/nl/api/guides/qr-types.md).

**link** `object`

De korte link waarlangs de QR-code doorverwijst. Optioneel: laat je hem weg, dan volgt `link.url` de waarde van `data`.

**properties**

**url** `string`

Bestemming waarnaar de korte link doorverwijst. Weggelaten of leeg wordt dit standaard `data`. Stuur je beide mee en verschillen ze, dan wint `link.url`. QR-codes van het type `vcard`, `social`, `multilink` en `event` wijzen altijd naar hun gehoste pagina, en `pdf`-, `image`- en `video`-QR-codes met een `fileId` naar het bestand. Toegestane schema's: `http:`, `https:`, `wifi:`, `mailto:`, `sms:`, `begin:`.

**domain** `string`

Domein van de korte link. Het moet een live domein van je workspace zijn: een ander domein krijgt `403`, en een domein dat nog niet live is krijgt `422`. Standaard het standaarddomein van de workspace.

**key** `string`

Slug van de korte link, 3 tot 15 tekens, opgeslagen in kleine letters. Een niet-toegestane slug krijgt `422`, en een bezette slug krijgt `409`. Laat je hem weg, dan wordt een willekeurige slug van 7 tekens gegenereerd.

**ios** `string | null`

Bestemmings-URL voor bezoekers op iOS, bij `app`-QR-codes.

**android** `string | null`

Bestemmings-URL voor bezoekers op Android, bij `app`-QR-codes.

**title** `string | null`

Titel voor de linkvoorvertoning (`og:title`), opgeslagen bij de korte link. Niet hetzelfde als de eigen `title` van de QR-code. Wordt nog nergens getoond.

**description** `string | null`

Beschrijving voor de linkvoorvertoning (`og:description`), opgeslagen bij de korte link. Wordt nog nergens getoond.

**expiresAt, expiredUrl** `—`

Niet beschikbaar in deze API: als je een van beide meestuurt, krijg je `422`. Gebruik `access.pauseAt` om de QR-code op een bepaald moment te stoppen.

**title** `string`

Naam van de QR-code, getoond in het dashboard. Bijgesneden, 1 tot 40 tekens. Laat je hem weg, dan heeft de QR-code geen titel.

**description** `string`

Vrije notitie bij de QR-code. Maximaal 280 tekens.

**fileId** `string`

Het bestand van een `pdf`-, `image`- of `video`-QR-code, geüpload met de bijbehorende target. Bij `vcard`, `social` en `multilink` een optionele profielafbeelding, geüpload met de target `logo`. `event` accepteert het ook, maar de pagina leest de omslag uit `data.fileId`. Andere types krijgen `422`. Upload het bestand eerst via [Bestanden](https://docs.getqr.com/nl/api/endpoints/files.md). Zie [Bestanden in QR-codes](https://docs.getqr.com/nl/api/guides/qr-types.md#bestanden-in-qr-codes).

**templateId** `string`

[Sjabloon](https://docs.getqr.com/nl/api/endpoints/templates.md) waarvan het ontwerp op de nieuwe QR-code wordt toegepast. Ontwerpvelden die je meestuurt, worden eroverheen samengevoegd. Een sjabloon met een Branded design of AI design krijgt `422` (`art_template_unsupported`). Een onbekend sjabloon, of een sjabloon uit een andere workspace, krijgt `404`.

**styles** `object`

Vormen en kleuren van stippen en hoeken. Zie [Aanpassing](https://docs.getqr.com/nl/api/guides/customization.md).

**frameOptions** `object`

Frame rond de QR-code en de bijbehorende call-to-actiontekst. Zie [Aanpassing](https://docs.getqr.com/nl/api/guides/customization.md).

**logoOptions** `object`

Logo in het midden: een voorgesteld logo of je eigen bestand, geüpload met de target `logo`. Een onbekend bestand, een onvoltooide upload of een bestand van een andere target wordt geweigerd. Zie [Aanpassing](https://docs.getqr.com/nl/api/guides/customization.md).

**access** `object`

Planning, scanlimiet en wachtwoordbeveiliging. Zie [Toegangsregels](https://docs.getqr.com/nl/api/guides/access-rules.md).

**properties**

**activeAt** `string | null`

Geplande start, ISO 8601.

**pauseAt** `string | null`

Gepland einde, ISO 8601.

**scanLimit** `integer | null`

Maximaal aantal scans, een positief geheel getal.

**password** `string | null`

Wachtwoord dat bezoekers moeten invoeren. Meesturen schakelt de beveiliging in.

**passwordProtected** `boolean`

Schakelt de beveiliging uit of weer in en behoudt het opgeslagen wachtwoord.

**archived** `boolean`

Of de QR-code gepauzeerd is. `true` maakt hem gepauzeerd aan: scans tonen dan de gepauzeerde pagina in plaats van de bestemming.

Onbekende velden worden zonder foutmelding genegeerd. Zie [Niet ondersteund via de API](https://docs.getqr.com/nl/api/guides/qr-types.md#niet-ondersteund-via-de-api).

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: landing-page-2026-08" \
  -d '{
    "qrType": "website",
    "data": "https://example.com",
    "title": "Landing page",
    "access": { "scanLimit": 500 }
  }'
```

```json 201 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "qrType": "website",
  "title": "Landing page",
  "data": "https://getqr.sh/x7Kd2p1",
  "shortLink": "https://getqr.sh/x7Kd2p1",
  "url": "https://example.com",
  "scans": 0,
  "access": { "passwordProtected": false, "activeAt": null, "pauseAt": null, "scanLimit": 500 },
  "…": "…"
}
```

### Herhaalde pogingen en duplicaten

* **Met een sleutel.** Met een `Idempotency-Key`-header wordt het antwoord 24 uur lang opnieuw afgespeeld.
* **Zonder sleutel.** Een identieke body die binnen 30 seconden wordt verstuurd, wordt als duplicaat behandeld.
* **Herhalingen.** Een herhaling geeft het opgeslagen antwoord terug met `x-idempotent-replay: true`. Een nieuwe QR-code geeft `false`.
* **Nog bezig.** Een tweede verzoek terwijl het eerste nog loopt, krijgt `409 conflict`.
* **Mislukkingen.** Een mislukte aanmaak geeft de sleutel meteen vrij, zodat je het met dezelfde sleutel opnieuw kunt proberen.
* **Naar beste vermogen.** Is de beveiliging tegen duplicaten niet beschikbaar, dan gaan aanmaakverzoeken onbeschermd door.

Zie ook [Idempotentie](https://docs.getqr.com/nl/api/introduction.md#idempotentie).

## Een QR-code ophalen

`GET /api/v1/qrs/{qrId}`

Geeft een [QR-code](#het-qr-code-object) terug met de korte link, toegangsregels, het ontwerp en, bij bestandstypes, het bestand.

**qrId** `string` *required*

ID van de QR-code, uit het antwoord van de lijst of van het aanmaken.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

Het antwoord is het volledige [QR-code-object](#het-qr-code-object).

## Een QR-code bijwerken

`PATCH /api/v1/qrs/{qrId}`

Wijzigt de inhoud, bestemming, het ontwerp of de toegangsregels van een QR-code. Stuur alleen de velden die je wilt wijzigen. Antwoordt met de bijgewerkte [QR-code](#het-qr-code-object).

**qrId** `string` *required*

ID van de QR-code.

De body accepteert dezelfde velden als [Een QR-code maken](#een-qr-code-maken), allemaal optioneel, met deze verschillen:

* **`templateId`.** Niet toegestaan.
* **`link`.** Gedeeltelijk. De huidige bestemming blijft behouden als je `link.url` weglaat. `link.domain` en `link.key` krijgen `422`: de korte link is wat de gedrukte code codeert, dus maak een nieuwe QR-code als je een andere wilt.
* **`data`.** Wordt alleen tegen het resulterende type gecontroleerd als `data` of `qrType` verandert. Wissel je `qrType` zonder bijpassende `data`, dan wordt dat geweigerd. Zie [Van type wisselen](https://docs.getqr.com/nl/api/guides/qr-types.md#van-type-wisselen).
* **Ontwerp.** `styles`, `frameOptions` en `logoOptions` worden samengevoegd met het opgeslagen ontwerp, dus een gedeeltelijk object wijzigt alleen wat het noemt. Kies je een ander logo, dan vervangt dat het oude, maar blijft de grootte behouden.
* **`access`.** Elke sleutel wordt toegepast als hij aanwezig is. `null` wist een regel. Toegangsregels horen onder `access`: stuur je ze onder `link`, dan krijg je `422`.
* **`archived`.** Pauzeert of heractiveert de QR-code en de korte link samen, net als [Pauzeren](#een-qr-code-pauzeren) en [Heractiveren](#een-qr-code-heractiveren).

```bash cURL theme={null}
curl -X PATCH "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Autumn campaign",
    "access": { "password": "s3cr3t", "passwordProtected": true }
  }'
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "title": "Autumn campaign",
  "access": { "passwordProtected": true, "activeAt": null, "pauseAt": null, "scanLimit": null },
  "…": "…"
}
```

Wat je per type na het drukken kunt wijzigen, staat in [QR-codedata per type](https://docs.getqr.com/nl/api/guides/qr-types.md).

## De gepauzeerde status instellen

`PUT /api/v1/qrs/{qrId}`

Stelt de gepauzeerde status direct in. [Pauzeren](#een-qr-code-pauzeren) en [Heractiveren](#een-qr-code-heractiveren) doen hetzelfde en zijn duidelijker.

**qrId** `string` *required*

ID van de QR-code.

**archived** `boolean` *required*

`true` om de QR-code te pauzeren, `false` om hem te heractiveren.

```bash cURL theme={null}
curl -X PUT "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "archived": true }'
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": true,
  "…": "…"
}
```

## Een QR-code pauzeren

`POST /api/v1/qrs/{qrId}/pause`

Zorgt dat de QR-code niet meer naar zijn bestemming doorverwijst: scans tonen in plaats daarvan de gepauzeerde pagina. De gedrukte code en de korte link blijven geldig. Geen request-body.

**qrId** `string` *required*

ID van de QR-code.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/pause" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": true,
  "…": "…"
}
```

## Een QR-code heractiveren

`POST /api/v1/qrs/{qrId}/activate`

Laat een gepauzeerde QR-code weer naar zijn bestemming doorverwijzen. Een eventuele planning en scanlimiet blijven gelden. Geen request-body.

**qrId** `string` *required*

ID van de QR-code.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/activate" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": false,
  "…": "…"
}
```

## Een QR-code dupliceren

`POST /api/v1/qrs/{qrId}/duplicate`

Maakt een kopie met dezelfde inhoud en hetzelfde ontwerp. Geen request-body. Antwoordt met `201 Created` en de nieuwe [QR-code](#het-qr-code-object).

**qrId** `string` *required*

ID van de QR-code die je wilt kopiëren.

* **Korte link.** De kopie krijgt een eigen korte link, met een willekeurige slug op het standaarddomein van de workspace, niet op het domein van het origineel. De scans worden apart geteld.
* **Titel.** De titel krijgt het achtervoegsel ` (Copy)`. Het resultaat blijft binnen 40 tekens: een lange titel wordt eerst ingekort. Een QR-code zonder titel blijft zonder titel.
* **Niet gekopieerd.** Toegangsregels (wachtwoord, planning, scanlimiet) en de gepauzeerde status. De kopie is altijd actief.
* **Bestanden.** Pdf- en afbeeldingsbestanden, ook die van bundels en galerijen, worden gekopieerd, zodat de kopie ze zelf bezit. Videobestanden en ontwerpbestanden, zoals logo's, worden gedeeld met het origineel.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/duplicate" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 201 theme={null}
{
  "id": "qr_7Hk2PqWmX9cTnV4sLbR8YdZe",
  "title": "Landing page (Copy)",
  "shortLink": "https://getqr.sh/p2Wq9dL",
  "url": "https://example.com",
  "archived": false,
  "scans": 0,
  "…": "…"
}
```

## Een QR-code verwijderen

`DELETE /api/v1/qrs/{qrId}`

Verwijdert de QR-code en de korte link. Antwoordt met de verwijderde ID.

> [!WARNING]
>
> Verwijderen is definitief. De gedrukte code en de korte link werken niet meer, en de scangeschiedenis is niet meer bereikbaar. [Pauzeer](#een-qr-code-pauzeren) de QR-code liever als je hem misschien nog nodig hebt.

**qrId** `string` *required*

ID van de QR-code.

**id** `string`

ID van de verwijderde QR-code.

**deleted** `boolean`

Altijd `true`.

```bash cURL theme={null}
curl -X DELETE "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{ "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf", "deleted": true }
```

## Een QR-codeafbeelding downloaden

`GET /api/v1/qrs/{qrId}/download`

Rendert de QR-code met zijn ontwerp en geeft het bestand terug.

**qrId** `string` *required*

ID van de QR-code die je wilt renderen, uit het antwoord van de lijst of van het aanmaken.

**format** `string` (default: jpg)

Uitvoerformaat: `jpg`, `png`, `svg`, `pdf` (een A4-pagina) of `eps`. Een Branded design of AI design kun je alleen als `jpg`, `png` of `pdf` downloaden.

**resolution** `integer` (default: 1024)

Afbeeldingsgrootte in pixels: `1024`, `2048` of `4096`. `svg` en `pdf` negeren dit. Een Branded design of AI design kun je alleen in `1024` downloaden.

| `format` | `Content-Type` | Bestandsnaam |
| - | - | - |
| `jpg` | `image/jpeg` | `<title>-<resolution>px.jpg` |
| `png` | `image/png` | `<title>-<resolution>px.png` |
| `svg` | `image/svg+xml` | `<title>.svg` |
| `pdf` | `application/pdf` | `<title>.pdf` |
| `eps` | `application/postscript` | `<title>-<resolution>px.eps` |

* **Body.** De body van het antwoord is het bestand. De voorgestelde bestandsnaam staat in de `Content-Disposition`-header, opgebouwd uit de titel, of `qr-code` voor een QR-code zonder titel.
* **Caching.** Antwoorden bevatten een `ETag` en `Cache-Control: private, max-age=3600, must-revalidate`. Stuur de `ETag` terug in `If-None-Match` om `304 Not Modified` te krijgen als de QR-code niet is veranderd.
* **Fouten.** Een niet-ondersteund formaat of een niet-ondersteunde resolutie krijgt `400 bad_request`. Het foutbericht noemt de reden: `qr_download_invalid_format`, `qr_download_invalid_resolution`, `qr_download_art_format_unsupported` of `qr_download_art_resolution_unsupported`.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/download?format=png&resolution=1024" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  --output qr-code.png
```

```http 200 theme={null}
HTTP/1.1 200 OK
Content-Type: image/png
Content-Disposition: attachment; filename="landing-page-1024px.png"
ETag: "9f2c0e1b5a7d43c8b016e2f4a9d5c3718be40f92"
Cache-Control: private, max-age=3600, must-revalidate

<binary image data>
```

## Toegangsregels

Stuur een `access`-object mee bij het aanmaken of bijwerken om een begin en einde te plannen, het aantal scans te beperken of een wachtwoord te vereisen. Weggelaten regels blijven ongewijzigd, en `null` wist een regel. Het volledige gedrag, met voorbeelden, staat in [Toegangsregels](https://docs.getqr.com/nl/api/guides/access-rules.md).

## Ontwerpobjecten

`styles`, `frameOptions` en `logoOptions` bepalen de vormen van stippen en hoeken, de kleuren, het frame en het logo. Ze werken hetzelfde bij QR-codes, [sjablonen](https://docs.getqr.com/nl/api/endpoints/templates.md) en [bulkaanmaak](https://docs.getqr.com/nl/api/endpoints/bulk-qr-creations.md). Onbekende vormen, frames of logo's worden geweigerd. Alle toegestane waarden en een uitgewerkt voorbeeld staan in [Aanpassing](https://docs.getqr.com/nl/api/guides/customization.md).

## Veelvoorkomende problemen

> [accordion] 422 bij het instellen van een wachtwoord, planning of scanlimiet
>
> Stuur de regel onder `access`, niet onder `link`.

> [accordion] 422 bij het wijzigen van link.domain of link.key
>
> De korte link kan na het aanmaken niet meer veranderen, omdat de gedrukte code hem codeert. Maak in plaats daarvan een nieuwe QR-code.

> [accordion] 422 "Expected … for qrType"
>
> `data` past niet bij het formaat van `qrType`. Controleer het type in [QR-codedata per type](https://docs.getqr.com/nl/api/guides/qr-types.md).

> [accordion] 409 conflict bij het maken van een QR-code
>
> Een identieke aanmaak loopt nog, of `link.key` is al bezet. Probeer het opnieuw zodra het eerste verzoek klaar is. Met een `Idempotency-Key` geeft de nieuwe poging de oorspronkelijke QR-code terug.

> [accordion] De download is een JPEG, geen PNG
>
> De parameters heten `format` en `resolution`, en `format` is standaard `jpg`. Stuur `format=png`.

> [accordion] 404 voor een QR-code die ik in het dashboard zie
>
> Elk verzoek wordt uitgevoerd in de workspace van je API-sleutel. Controleer of de QR-code daarbij hoort. Zie [Authenticatie](https://docs.getqr.com/nl/api/authentication.md).

## Volgende stappen

> [card] [QR-codedata per type](https://docs.getqr.com/nl/api/guides/qr-types.md)

> [card] [Aanpassing](https://docs.getqr.com/nl/api/guides/customization.md)

> [card] [Toegangsregels](https://docs.getqr.com/nl/api/guides/access-rules.md)

> [card] [Analytics](https://docs.getqr.com/nl/api/endpoints/analytics.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.