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

> Opret, vis, opdater, sæt på pause, duplikér, slet og download QR-koder.

> [!NOTE]
>
> GetQR API'et er i beta og er tilgængeligt for udvalgte arbejdsområder. Detaljer kan ændre sig før den generelle udgivelse.

En QR-kode i GetQR er billedet plus et kortlink, som den løses igennem. Når du opretter en QR-kode, oprettes dens kortlink også, så du senere kan ændre destinationen uden at trykke koden igen.

| Metode | Sti | Beskrivelse |
| - | - | - |
| `GET` | `/api/v1/qrs` | [Vis QR-koder](#vis-qr-koder) |
| `POST` | `/api/v1/qrs` | [Opret en QR-kode](#opret-en-qr-kode) |
| `GET` | `/api/v1/qrs/{qrId}` | [Hent en QR-kode](#hent-en-qr-kode) |
| `PATCH` | `/api/v1/qrs/{qrId}` | [Opdater en QR-kode](#opdater-en-qr-kode) |
| `PUT` | `/api/v1/qrs/{qrId}` | [Angiv pausetilstanden](#angiv-pausetilstanden) |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Sæt en QR-kode på pause](#sæt-en-qr-kode-på-pause) |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Genaktiver en QR-kode](#genaktiver-en-qr-kode) |
| `POST` | `/api/v1/qrs/{qrId}/duplicate` | [Duplikér en QR-kode](#duplikér-en-qr-kode) |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Slet en QR-kode](#slet-en-qr-kode) |
| `GET` | `/api/v1/qrs/{qrId}/download` | [Download et QR-kodebillede](#download-et-qr-kodebillede) |

> [card] [QR-kodedata efter type](https://docs.getqr.com/da/api/guides/qr-types.md)
>
> `data`-formatet for hver af de 16 typer.

> [card] [Tilpasning](https://docs.getqr.com/da/api/guides/customization.md)
>
> Prikformer, farver, rammer og logoer.

> [card] [Adgangsregler](https://docs.getqr.com/da/api/guides/access-rules.md)
>
> Tidsplan, scanningsgrænse og adgangskode.

Se [Statistik](https://docs.getqr.com/da/api/endpoints/analytics.md) for scanningsstatistik for en QR-kode.

## QR-kodeobjektet

Alle QR-kode-endepunkter svarer med dette objekt, undtagen [Slet](#slet-en-qr-kode) og [Download](#download-et-qr-kodebillede). Listen returnerer et array af dem.

**id** `string`

QR-kodens unikke id, f.eks. `qr_1EPcVfeHZAY2iNoVLsgW2Aqf`.

**qrType** `string`

QR-kodens type, f.eks. `website`. Se [QR-kodedata efter type](https://docs.getqr.com/da/api/guides/qr-types.md) for alle 16 værdier.

**title** `string | null`

QR-kodens navn, som vises i dashboardet.

**description** `string | null`

Fri note om QR-koden.

**data** `string`

Den gemte payload. For `wifi`, `vcard`, `social`, `multilink`, `event` og `sms` er det den payload, du sendte. For alle andre typer er det kortlinket, så læs destinationen fra `url`.

**archived** `boolean`

`true`, når QR-koden er sat på pause.

**isStatic** `boolean`

`true` for en statisk QR-kode lavet i dashboardet, som ikke har noget kortlink. API'et opretter altid dynamiske QR-koder.

**shortLink** `string | null`

Det fulde kortlink, f.eks. `https://getqr.sh/x7Kd2p1`.

**domain** `string | null`

Kortlinkets domæne.

**key** `string | null`

Kortlinkets slug.

**keyIsCustom** `boolean`

`true`, når sluggen er valgt i stedet for genereret.

**url** `string | null`

Destinationen, som kortlinket viderestiller til.

**ios** `string | null`

Destination for besøgende på iOS, for `app`-QR-koder.

**android** `string | null`

Destination for besøgende på Android, for `app`-QR-koder.

**scans** `integer`

Samlet antal scanninger.

**access** `object`

Adgangsregler. Selve adgangskoden returneres aldrig. Se [Adgangsregler](https://docs.getqr.com/da/api/guides/access-rules.md).

**properties**

**passwordProtected** `boolean`

Om besøgende skal indtaste en adgangskode.

**activeAt** `string | null`

Planlagt start, ISO 8601.

**pauseAt** `string | null`

Planlagt slutning, ISO 8601.

**scanLimit** `integer | null`

Maksimalt antal scanninger.

**designKind** `string`

Skrivebeskyttet. `custom` er et design, som API'et kan redigere fuldt ud. `branded` og `ai` er et Branded design eller AI design lavet i dashboardet. API'et kan ikke redigere dets billede, men bevarer det, når du ændrer andre felter.

**design** `object`

Det gemte design: `styles`, `frameOptions` og `logoOptions`, hver et objekt eller `null`. De har samme form som felterne i forespørgslen, så du kan sende dem tilbage. Se [Tilpasning](https://docs.getqr.com/da/api/guides/customization.md).

**file** `object | null`

Filen til en `pdf`-, `image`- eller `video`-QR-kode: `id`, `name` og `size` i bytes.

**appName** `string | null`

Skrivebeskyttet. Visningsnavnet på en `app`-QR-kode lavet i dashboardet.

**pdfBundle** `object | null`

Skrivebeskyttet. En `pdf`-QR-kode med flere filer, lavet i dashboardet: `title`, `layout` og `files`.

**imageGallery** `object | null`

Skrivebeskyttet. En `image`-QR-kode med flere billeder, lavet i dashboardet: `title`, `layout` og `files`.

**createdAt** `string`

Oprettelsesdato, ISO 8601.

**updatedAt** `string`

Dato for seneste opdatering, ISO 8601.

Hemmeligheder og interne id'er (`password`, `userId`, `workspaceId`, `projectId`) returneres aldrig.

```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"
}
```

## Vis QR-koder

`GET /api/v1/qrs`

Returnerer QR-koderne i dit arbejdsområde, én side ad gangen.

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

Siden, der returneres, 1 eller derover.

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

QR-koder pr. side, fra 1 til 100. En større værdi afvises.

**search** `string`

Matcher QR-kodens titel. Søgninger på mere end 2 tegn matcher også de gemte `data`. For linktyper er de gemte `data` kortlinket, så destinations-URL'er kan ikke søges frem.

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

Felt, der sorteres efter: `createdAt`, `updatedAt`, `clicks` (samlede scanninger), `lastClicked` (seneste scanning) eller `type`. `type` sorterer altid faldende og ignorerer `sortOrder`.

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

Sorteringsretning: `asc` eller `desc`.

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

Tag QR-koder på pause med.

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

Returnér kun QR-koder på pause. Går forud for `showArchived`.

Booleske parametre tager strengene `true` eller `false`. Hent næste side, så længe `pagination.hasMore` er `true`. Se [Paginering](https://docs.getqr.com/da/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 }
}
```

## Opret en QR-kode

`POST /api/v1/qrs`

Opretter en QR-kode og dens kortlink samtidig. Svarer `201 Created` med den nye [QR-kode](#qr-kodeobjektet).

**Idempotency-Key** `string`

Dit eget token til gentagne forsøg. Gentager du forespørgslen med samme nøgle inden for 24 timer, returneres det oprindelige svar i stedet for at oprette en QR-kode mere. Se [Gentagne forsøg og dubletter](#gentagne-forsøg-og-dubletter).

**qrType** `string` *required*

Hvad QR-koden koder. Den bestemmer også, hvilket format `data` skal have. En af `website`, `pdf`, `image`, `video`, `whatsapp`, `social`, `wifi`, `app`, `feedback`, `vcard`, `sms`, `payment`, `location`, `multilink`, `email`, `event`.

**data** `string` *required*

Typens payload, kontrolleret mod `qrType`. En tom streng springer kontrollen over. Formatet for hver type står i [QR-kodedata efter type](https://docs.getqr.com/da/api/guides/qr-types.md).

**link** `object`

Kortlinket, som QR-koden løses igennem. Valgfrit: Udelades det, følger `link.url` `data`.

**properties**

**url** `string`

Destinationen, som kortlinket viderestiller til. Udeladt eller tom er standard `data`. Når begge sendes og er forskellige, vinder `link.url`. QR-koder af typen `vcard`, `social`, `multilink` og `event` peger altid på deres hostede side, og QR-koder af typen `pdf`, `image` og `video` med en `fileId` peger på filen. Accepterede skemaer: `http:`, `https:`, `wifi:`, `mailto:`, `sms:`, `begin:`.

**domain** `string`

Kortlinkets domæne. Det skal være et aktivt domæne i dit arbejdsområde: Et andet domæne giver `403`, og et domæne, der endnu ikke er aktivt, giver `422`. Standard er arbejdsområdets standarddomæne.

**key** `string`

Kortlinkets slug, 3 til 15 tegn, gemt med små bogstaver. En slug, der ikke er tilladt, giver `422`, og en, der er optaget, giver `409`. Udelades den, genereres en tilfældig slug på 7 tegn.

**ios** `string | null`

Destinations-URL for besøgende på iOS, for `app`-QR-koder.

**android** `string | null`

Destinations-URL for besøgende på Android, for `app`-QR-koder.

**title** `string | null`

Titel til linkforhåndsvisning (`og:title`), gemt på kortlinket. Er ikke det samme som QR-kodens egen `title`. Den vises ikke nogen steder endnu.

**description** `string | null`

Beskrivelse til linkforhåndsvisning (`og:description`), gemt på kortlinket. Den vises ikke nogen steder endnu.

**expiresAt, expiredUrl** `—`

Ikke tilgængelige i dette API: Sender du en af dem, får du `422`. Brug `access.pauseAt` til at stoppe QR-koden på et bestemt tidspunkt.

**title** `string`

QR-kodens navn, som vises i dashboardet. Trimmes, 1 til 40 tegn. Udelades det, har QR-koden ingen titel.

**description** `string`

Fri note om QR-koden. Op til 280 tegn.

**fileId** `string`

Filen til en `pdf`-, `image`- eller `video`-QR-kode, uploadet med det tilsvarende target. For `vcard`, `social` og `multilink` et valgfrit profilbillede, uploadet med target `logo`. `event` accepterer det også, men dens side læser forsidebilledet fra `data.fileId`. Andre typer giver `422`. Upload først filen med [Filer](https://docs.getqr.com/da/api/endpoints/files.md). Se [Filer i QR-koder](https://docs.getqr.com/da/api/guides/qr-types.md#filer-i-qr-koder).

**templateId** `string`

[Skabelon](https://docs.getqr.com/da/api/endpoints/templates.md), hvis design anvendes på den nye QR-kode. Designfelter, du sender, flettes oven på den. En skabelon med Branded design eller AI design giver `422` (`art_template_unsupported`). En ukendt skabelon eller en fra et andet arbejdsområde giver `404`.

**styles** `object`

Former og farver på prikker og hjørner. Se [Tilpasning](https://docs.getqr.com/da/api/guides/customization.md).

**frameOptions** `object`

Rammen rundt om QR-koden og dens handlingstekst. Se [Tilpasning](https://docs.getqr.com/da/api/guides/customization.md).

**logoOptions** `object`

Logo i midten: et foreslået logo eller din egen fil uploadet med target `logo`. En ukendt fil, en ufærdig upload eller en fil fra et andet target afvises. Se [Tilpasning](https://docs.getqr.com/da/api/guides/customization.md).

**access** `object`

Tidsplan, scanningsgrænse og adgangskodebeskyttelse. Se [Adgangsregler](https://docs.getqr.com/da/api/guides/access-rules.md).

**properties**

**activeAt** `string | null`

Planlagt start, ISO 8601.

**pauseAt** `string | null`

Planlagt slutning, ISO 8601.

**scanLimit** `integer | null`

Maksimalt antal scanninger, et positivt heltal.

**password** `string | null`

Adgangskode, som besøgende skal indtaste. Når du sender den, slås beskyttelsen til.

**passwordProtected** `boolean`

Slår beskyttelsen fra eller til igen og beholder den gemte adgangskode.

**archived** `boolean`

Om QR-koden er sat på pause. `true` opretter den på pause: Scanninger viser pausesiden i stedet for destinationen.

Ukendte felter droppes uden fejl. Se [Ikke understøttet via API'et](https://docs.getqr.com/da/api/guides/qr-types.md#ikke-understøttet-via-api-et).

```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 },
  "…": "…"
}
```

### Gentagne forsøg og dubletter

* **Med en nøgle.** Med en `Idempotency-Key`-header afspilles svaret igen i 24 timer.
* **Uden en nøgle.** En identisk body, der sendes inden for 30 sekunder, behandles som en dublet.
* **Gentagelser.** En gentagelse returnerer det gemte svar med `x-idempotent-replay: true`. En ny QR-kode returnerer `false`.
* **Under behandling.** En forespørgsel nummer to, mens den første stadig kører, får `409 conflict`.
* **Fejl.** En mislykket oprettelse frigiver nøglen med det samme, så du kan prøve igen med samme nøgle.
* **Bedste indsats.** Hvis beskyttelsen ikke er tilgængelig, gennemføres oprettelser uden beskyttelse.

Se også [Idempotens](https://docs.getqr.com/da/api/introduction.md#idempotens).

## Hent en QR-kode

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

Returnerer en [QR-kode](#qr-kodeobjektet) med dens kortlink, adgangsregler, design og, for filbaserede typer, dens fil.

**qrId** `string` *required*

QR-kodens id fra svaret på listen eller oprettelsen.

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

Svaret er det fulde [QR-kodeobjekt](#qr-kodeobjektet).

## Opdater en QR-kode

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

Ændrer en QR-kodes indhold, destination, design eller adgangsregler. Send kun de felter, du vil ændre. Svarer med den opdaterede [QR-kode](#qr-kodeobjektet).

**qrId** `string` *required*

QR-kodens id.

Body tager de samme felter som [Opret en QR-kode](#opret-en-qr-kode), alle valgfri, med disse forskelle:

* **`templateId`.** Accepteres ikke.
* **`link`.** Delvis. Den nuværende destination bevares, når du udelader `link.url`. `link.domain` og `link.key` giver `422`: Kortlinket er det, den trykte kode koder, så opret en ny QR-kode for at bruge et andet.
* **`data`.** Kontrolleres kun mod den resulterende type, når `data` eller `qrType` ændres. Skift af `qrType` uden passende `data` afvises. Se [Skift af type](https://docs.getqr.com/da/api/guides/qr-types.md#skift-af-type).
* **Design.** `styles`, `frameOptions` og `logoOptions` flettes ind i det gemte design, så et delvist objekt kun ændrer det, det nævner. Vælger du et andet logo, erstattes det, men størrelsen bevares.
* **`access`.** Hver nøgle anvendes, når den er til stede. `null` rydder en regel. Adgangsregler hører til under `access`: Sender du dem under `link`, får du `422`.
* **`archived`.** Sætter QR-koden og dens kortlink på pause eller genaktiverer dem samlet, ligesom [Pause](#sæt-en-qr-kode-på-pause) og [Genaktiver](#genaktiver-en-qr-kode).

```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 },
  "…": "…"
}
```

Hvad du kan ændre efter tryk for hver type, står i [QR-kodedata efter type](https://docs.getqr.com/da/api/guides/qr-types.md).

## Angiv pausetilstanden

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

Angiver pausetilstanden direkte. [Pause](#sæt-en-qr-kode-på-pause) og [Genaktiver](#genaktiver-en-qr-kode) gør det samme og er tydeligere at læse.

**qrId** `string` *required*

QR-kodens id.

**archived** `boolean` *required*

`true` sætter QR-koden på pause, `false` genaktiverer den.

```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,
  "…": "…"
}
```

## Sæt en QR-kode på pause

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

Forhindrer QR-koden i at blive løst til sin destination: Scanninger viser i stedet pausesiden. Den trykte kode og dens kortlink forbliver gyldige. Ingen body.

**qrId** `string` *required*

QR-kodens id.

```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,
  "…": "…"
}
```

## Genaktiver en QR-kode

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

Får en QR-kode på pause til at blive løst til sin destination igen. Eventuelle tidsplaner og scanningsgrænser gælder stadig. Ingen body.

**qrId** `string` *required*

QR-kodens id.

```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,
  "…": "…"
}
```

## Duplikér en QR-kode

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

Opretter en kopi med samme indhold og design. Ingen body. Svarer `201 Created` med den nye [QR-kode](#qr-kodeobjektet).

**qrId** `string` *required*

Id'et på den QR-kode, der skal kopieres.

* **Kortlink.** Kopien får sit eget kortlink med en tilfældig slug på arbejdsområdets standarddomæne, ikke kildens domæne. Dens scanninger tælles separat.
* **Titel.** Titlen får suffikset ` (Copy)`. Resultatet holder sig inden for 40 tegn: En lang titel forkortes først. En QR-kode uden titel forbliver uden titel.
* **Kopieres ikke.** Adgangsregler (adgangskode, tidsplan, scanningsgrænse) og pausetilstanden. Kopien er altid aktiv.
* **Filer.** PDF- og billedfiler, også filer i pakker og gallerier, kopieres, så kopien ejer dem. Videofiler og designfiler, f.eks. logoer, deles med kilden.

```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,
  "…": "…"
}
```

## Slet en QR-kode

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

Sletter QR-koden og dens kortlink. Svarer med det slettede id.

> [!WARNING]
>
> Sletning er permanent. Den trykte kode og dens kortlink holder op med at virke, og scanningshistorikken kan ikke længere nås. Sæt i stedet QR-koden [på pause](#sæt-en-qr-kode-på-pause), hvis du måske får brug for den igen.

**qrId** `string` *required*

QR-kodens id.

**id** `string`

Id'et på den slettede QR-kode.

**deleted** `boolean`

Altid `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 }
```

## Download et QR-kodebillede

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

Renderer QR-koden med dens design og returnerer filen.

**qrId** `string` *required*

Id'et på den QR-kode, der skal renderes, fra svaret på listen eller oprettelsen.

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

Outputformat: `jpg`, `png`, `svg`, `pdf` (en A4-side) eller `eps`. Et Branded design eller AI design kan kun downloades som `jpg`, `png` eller `pdf`.

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

Billedstørrelse i pixels: `1024`, `2048` eller `4096`. `svg` og `pdf` ignorerer den. Et Branded design eller AI design kan kun downloades i `1024`.

| `format` | `Content-Type` | Filnavn |
| - | - | - |
| `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.** Svarets body er filen. Det foreslåede filnavn står i `Content-Disposition`-headeren og er bygget ud fra titlen, eller `qr-code` for en QR-kode uden titel.
* **Caching.** Svar har en `ETag` og `Cache-Control: private, max-age=3600, must-revalidate`. Send `ETag` tilbage i `If-None-Match` for at få `304 Not Modified`, når QR-koden ikke er ændret.
* **Fejl.** Et format eller en opløsning, der ikke understøttes, giver `400 bad_request`. Fejlbeskeden nævner årsagen: `qr_download_invalid_format`, `qr_download_invalid_resolution`, `qr_download_art_format_unsupported` eller `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>
```

## Adgangsregler

Send et `access`-objekt ved oprettelse eller opdatering for at planlægge en start og en slutning, begrænse antallet af scanninger eller kræve en adgangskode. Udeladte regler forbliver uændrede, og `null` rydder en regel. Den fulde beskrivelse med eksempler står i [Adgangsregler](https://docs.getqr.com/da/api/guides/access-rules.md).

## Designobjekter

`styles`, `frameOptions` og `logoOptions` angiver former på prikker og hjørner, farver, ramme og logo. De fungerer ens på QR-koder, [skabeloner](https://docs.getqr.com/da/api/endpoints/templates.md) og [bulk-oprettelser](https://docs.getqr.com/da/api/endpoints/bulk-qr-creations.md). Ukendte former, rammer eller logoer afvises. Alle accepterede værdier og et gennemarbejdet eksempel står i [Tilpasning](https://docs.getqr.com/da/api/guides/customization.md).

## Almindelige problemer

> [accordion] 422, når en adgangskode, tidsplan eller scanningsgrænse angives
>
> Send reglen under `access`, ikke under `link`.

> [accordion] 422, når link.domain eller link.key ændres
>
> Kortlinket kan ikke ændres efter oprettelsen, fordi den trykte kode koder det. Opret i stedet en ny QR-kode.

> [accordion] 422 "Expected … for qrType"
>
> `data` passer ikke til formatet for `qrType`. Tjek typen i [QR-kodedata efter type](https://docs.getqr.com/da/api/guides/qr-types.md).

> [accordion] 409 conflict ved oprettelse af en QR-kode
>
> En identisk oprettelse kører stadig, eller `link.key` er optaget. Prøv igen, når den første forespørgsel er færdig. Med en `Idempotency-Key` returnerer det nye forsøg den oprindelige QR-kode.

> [accordion] Downloaden er en JPEG, ikke en PNG
>
> Parametrene hedder `format` og `resolution`, og `format` er som standard `jpg`. Send `format=png`.

> [accordion] 404 for en QR-kode, jeg kan se i dashboardet
>
> Hver forespørgsel kører i arbejdsområdet for din API-nøgle. Tjek, at QR-koden hører til det. Se [Godkendelse](https://docs.getqr.com/da/api/authentication.md).

## Næste skridt

> [card] [QR-kodedata efter type](https://docs.getqr.com/da/api/guides/qr-types.md)

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

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

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


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