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

> Skapa, lista, uppdatera, pausa, duplicera, ta bort och ladda ned QR-koder.

> [!NOTE]
>
> GetQR:s API är i beta och finns för utvalda arbetsytor. Detaljer kan ändras före den allmänna lanseringen.

En QR-kod i GetQR är bilden plus en kort länk som den löses in via. När du skapar en QR-kod skapas även dess korta länk, så att du kan ändra målet senare utan att trycka koden på nytt.

| Metod | Sökväg | Beskrivning |
| - | - | - |
| `GET` | `/api/v1/qrs` | [Lista QR-koder](#lista-qr-koder) |
| `POST` | `/api/v1/qrs` | [Skapa en QR-kod](#skapa-en-qr-kod) |
| `GET` | `/api/v1/qrs/{qrId}` | [Hämta en QR-kod](#hämta-en-qr-kod) |
| `PATCH` | `/api/v1/qrs/{qrId}` | [Uppdatera en QR-kod](#uppdatera-en-qr-kod) |
| `PUT` | `/api/v1/qrs/{qrId}` | [Ange pausat läge](#ange-pausat-läge) |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Pausa en QR-kod](#pausa-en-qr-kod) |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Återaktivera en QR-kod](#återaktivera-en-qr-kod) |
| `POST` | `/api/v1/qrs/{qrId}/duplicate` | [Duplicera en QR-kod](#duplicera-en-qr-kod) |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Ta bort en QR-kod](#ta-bort-en-qr-kod) |
| `GET` | `/api/v1/qrs/{qrId}/download` | [Ladda ned en QR-kodbild](#ladda-ned-en-qr-kodbild) |

> [card] [QR-koddata per typ](https://docs.getqr.com/sv/api/guides/qr-types.md)
>
> `data`-formatet för var och en av de 16 typerna.

> [card] [Anpassning](https://docs.getqr.com/sv/api/guides/customization.md)
>
> Prickstilar, färger, ramar och logotyper.

> [card] [Åtkomstregler](https://docs.getqr.com/sv/api/guides/access-rules.md)
>
> Schema, skanningsgräns och lösenord.

Skanningsstatistik för en QR-kod finns i [Analys](https://docs.getqr.com/sv/api/endpoints/analytics.md).

## QR-kodobjektet

Alla slutpunkter för QR-koder svarar med det här objektet, utom [Ta bort](#ta-bort-en-qr-kod) och [Ladda ned](#ladda-ned-en-qr-kodbild). Listan returnerar en array av sådana objekt.

**id** `string`

QR-kodens unika id, till exempel `qr_1EPcVfeHZAY2iNoVLsgW2Aqf`.

**qrType** `string`

QR-kodens typ, till exempel `website`. Alla 16 värden finns i [QR-koddata per typ](https://docs.getqr.com/sv/api/guides/qr-types.md).

**title** `string | null`

QR-kodens namn, som visas i instrumentpanelen.

**description** `string | null`

Fri anteckning om QR-koden.

**data** `string`

Den sparade payloaden. För `wifi`, `vcard`, `social`, `multilink`, `event` och `sms` är det payloaden du skickade. För alla andra typer är det den korta länken, så läs målet från `url`.

**archived** `boolean`

`true` när QR-koden är pausad.

**isStatic** `boolean`

`true` för en statisk QR-kod som skapats i instrumentpanelen och saknar kort länk. API:et skapar alltid dynamiska QR-koder.

**shortLink** `string | null`

Den fullständiga korta länken, till exempel `https://getqr.sh/x7Kd2p1`.

**domain** `string | null`

Den korta länkens domän.

**key** `string | null`

Den korta länkens slug.

**keyIsCustom** `boolean`

`true` när slugen valdes i stället för att genereras.

**url** `string | null`

Målet som den korta länken omdirigerar till.

**ios** `string | null`

Mål för besökare på iOS, för QR-koder av typen `app`.

**android** `string | null`

Mål för besökare på Android, för QR-koder av typen `app`.

**scans** `integer`

Totalt antal skanningar.

**access** `object`

Åtkomstregler. Själva lösenordet returneras aldrig. Se [Åtkomstregler](https://docs.getqr.com/sv/api/guides/access-rules.md).

**properties**

**passwordProtected** `boolean`

Om besökare måste ange ett lösenord.

**activeAt** `string | null`

Schemalagd start, ISO 8601.

**pauseAt** `string | null`

Schemalagt slut, ISO 8601.

**scanLimit** `integer | null`

Högsta antal skanningar.

**designKind** `string`

Skrivskyddat. `custom` är en design som API:et kan redigera helt. `branded` och `ai` är en varumärkesdesign eller AI-design som skapats i instrumentpanelen. API:et kan inte redigera dess bild, men behåller den när du ändrar andra fält.

**design** `object`

Den sparade designen: `styles`, `frameOptions` och `logoOptions`, vart och ett ett objekt eller `null`. De har samma form som fälten i begäran, så du kan skicka tillbaka dem. Se [Anpassning](https://docs.getqr.com/sv/api/guides/customization.md).

**file** `object | null`

Filen för en QR-kod av typen `pdf`, `image` eller `video`: `id`, `name` och `size` i byte.

**appName** `string | null`

Skrivskyddat. Visningsnamnet för en `app`-QR-kod som skapats i instrumentpanelen.

**pdfBundle** `object | null`

Skrivskyddat. En `pdf`-QR-kod med flera filer, skapad i instrumentpanelen: `title`, `layout` och `files`.

**imageGallery** `object | null`

Skrivskyddat. En `image`-QR-kod med flera bilder, skapad i instrumentpanelen: `title`, `layout` och `files`.

**createdAt** `string`

Datum då den skapades, ISO 8601.

**updatedAt** `string`

Datum för senaste uppdatering, ISO 8601.

Hemligheter och interna id:n (`password`, `userId`, `workspaceId`, `projectId`) returneras 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"
}
```

## Lista QR-koder

`GET /api/v1/qrs`

Returnerar QR-koderna i din arbetsyta, en sida i taget.

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

Sidan som returneras, 1 eller högre.

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

QR-koder per sida, från 1 till 100. Ett större värde avvisas.

**search** `string`

Matchar QR-kodens titel. Sökningar längre än 2 tecken matchar även den sparade `data`. För länktyper är den sparade `data` den korta länken, så mål-URL:er går inte att söka på.

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

Fält att sortera på: `createdAt`, `updatedAt`, `clicks` (totalt antal skanningar), `lastClicked` (senaste skanning) eller `type`. `type` sorterar alltid fallande och ignorerar `sortOrder`.

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

Sorteringsriktning: `asc` eller `desc`.

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

Ta med pausade QR-koder.

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

Returnera bara pausade QR-koder. Går före `showArchived`.

Booleska parametrar tar strängarna `true` eller `false`. Begär nästa sida så länge `pagination.hasMore` är `true`. Se [Paginering](https://docs.getqr.com/sv/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 }
}
```

## Skapa en QR-kod

`POST /api/v1/qrs`

Skapar en QR-kod och dess korta länk tillsammans. Svarar `201 Created` med den nya [QR-koden](#qr-kodobjektet).

**Idempotency-Key** `string`

Din egen token för omförsök. Om du upprepar begäran med samma nyckel inom 24 timmar returneras det ursprungliga svaret i stället för att en andra QR-kod skapas. Se [Omförsök och dubbletter](#omförsök-och-dubbletter).

**qrType** `string` *required*

Vad QR-koden kodar. Det avgör också vilket format `data` måste ha. Ett av `website`, `pdf`, `image`, `video`, `whatsapp`, `social`, `wifi`, `app`, `feedback`, `vcard`, `sms`, `payment`, `location`, `multilink`, `email`, `event`.

**data** `string` *required*

Typens payload, kontrollerad mot `qrType`. En tom sträng hoppar över kontrollen. Formatet för varje typ finns i [QR-koddata per typ](https://docs.getqr.com/sv/api/guides/qr-types.md).

**link** `object`

Den korta länk som QR-koden löses in via. Valfritt: om det utelämnas följer `link.url` värdet i `data`.

**properties**

**url** `string`

Målet som den korta länken omdirigerar till. Utelämnat eller tomt blir det `data`. När båda skickas och skiljer sig åt vinner `link.url`. QR-koder av typen `vcard`, `social`, `multilink` och `event` pekar alltid på sin hostade sida, och QR-koder av typen `pdf`, `image` och `video` med ett `fileId` på filen. Scheman som accepteras: `http:`, `https:`, `wifi:`, `mailto:`, `sms:`, `begin:`.

**domain** `string`

Den korta länkens domän. Den måste vara en aktiv domän i din arbetsyta: en annan domän får `403`, och en domän som inte är aktiv än får `422`. Standard är arbetsytans standarddomän.

**key** `string`

Den korta länkens slug, 3 till 15 tecken, sparas med gemener. En slug som inte är tillåten får `422`, och en som är upptagen får `409`. En slumpmässig slug på 7 tecken genereras om den utelämnas.

**ios** `string | null`

Mål-URL för besökare på iOS, för QR-koder av typen `app`.

**android** `string | null`

Mål-URL för besökare på Android, för QR-koder av typen `app`.

**title** `string | null`

Titel för länkförhandsvisningen (`og:title`), sparad på den korta länken. Skiljer sig från QR-kodens egen `title`. Inget visar den än.

**description** `string | null`

Beskrivning för länkförhandsvisningen (`og:description`), sparad på den korta länken. Inget visar den än.

**expiresAt, expiredUrl** `—`

Finns inte i det här API:et: om du skickar något av dem får du `422`. Använd `access.pauseAt` för att stoppa QR-koden vid en viss tidpunkt.

**title** `string`

QR-kodens namn, som visas i instrumentpanelen. Trimmas, 1 till 40 tecken. Om det utelämnas blir QR-koden namnlös.

**description** `string`

Fri anteckning om QR-koden. Högst 280 tecken.

**fileId** `string`

Filen för en QR-kod av typen `pdf`, `image` eller `video`, uppladdad med matchande target. För `vcard`, `social` och `multilink` en valfri profilbild uppladdad med target `logo`. `event` accepterar det också, men dess sida läser omslagsbilden från `data.fileId`. Andra typer får `422`. Ladda först upp filen med [Filer](https://docs.getqr.com/sv/api/endpoints/files.md). Se [Filer i QR-koder](https://docs.getqr.com/sv/api/guides/qr-types.md#filer-i-qr-koder).

**templateId** `string`

[Mall](https://docs.getqr.com/sv/api/endpoints/templates.md) vars design tillämpas på den nya QR-koden. Designfält som du skickar slås samman ovanpå den. En mall med varumärkesdesign eller AI-design får `422` (`art_template_unsupported`). En okänd mall, eller en från en annan arbetsyta, får `404`.

**styles** `object`

Former och färger för prickar och hörn. Se [Anpassning](https://docs.getqr.com/sv/api/guides/customization.md).

**frameOptions** `object`

Ramen runt QR-koden och dess uppmaningstext. Se [Anpassning](https://docs.getqr.com/sv/api/guides/customization.md).

**logoOptions** `object`

Logotyp i mitten: en föreslagen logotyp eller din egen fil uppladdad med target `logo`. En okänd fil, en ofullständig uppladdning eller en fil från en annan target avvisas. Se [Anpassning](https://docs.getqr.com/sv/api/guides/customization.md).

**access** `object`

Schema, skanningsgräns och lösenordsskydd. Se [Åtkomstregler](https://docs.getqr.com/sv/api/guides/access-rules.md).

**properties**

**activeAt** `string | null`

Schemalagd start, ISO 8601.

**pauseAt** `string | null`

Schemalagt slut, ISO 8601.

**scanLimit** `integer | null`

Högsta antal skanningar, ett positivt heltal.

**password** `string | null`

Lösenord som besökare måste ange. Om du skickar det aktiveras skyddet.

**passwordProtected** `boolean`

Stänger av eller aktiverar skyddet igen och behåller det sparade lösenordet.

**archived** `boolean`

Om QR-koden är pausad. `true` skapar den pausad: skanningar visar pausningssidan i stället för målet.

Okända fält ignoreras utan fel. Se [Stöds inte via API:et](https://docs.getqr.com/sv/api/guides/qr-types.md#stöds-inte-via-apiet).

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

### Omförsök och dubbletter

* **Med nyckel.** Med ett `Idempotency-Key`-huvud spelas svaret upp igen i 24 timmar.
* **Utan nyckel.** En identisk body som skickas inom 30 sekunder behandlas som en dubblett.
* **Uppspelningar.** En uppspelning returnerar det sparade svaret med `x-idempotent-replay: true`. En ny QR-kod returnerar `false`.
* **Pågående.** En andra begäran medan den första fortfarande körs får `409 conflict`.
* **Misslyckanden.** Ett misslyckat skapande frigör nyckeln direkt, så du kan försöka igen med samma nyckel.
* **Bästa förmåga.** Om skyddet inte är tillgängligt går skapanden igenom utan skydd.

Se även [Idempotens](https://docs.getqr.com/sv/api/introduction.md#idempotens).

## Hämta en QR-kod

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

Returnerar en [QR-kod](#qr-kodobjektet) med dess korta länk, åtkomstregler, design och, för filbaserade typer, dess fil.

**qrId** `string` *required*

QR-kodens id, från svaret på listningen eller skapandet.

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

Svaret är det fullständiga [QR-kodobjektet](#qr-kodobjektet).

## Uppdatera en QR-kod

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

Ändrar innehåll, mål, design eller åtkomstregler för en QR-kod. Skicka bara de fält du vill ändra. Svarar med den uppdaterade [QR-koden](#qr-kodobjektet).

**qrId** `string` *required*

QR-kodens id.

Bodyn tar samma fält som [Skapa en QR-kod](#skapa-en-qr-kod), alla valfria, med dessa skillnader:

* **`templateId`.** Accepteras inte.
* **`link`.** Partiellt. Det nuvarande målet behålls när du utelämnar `link.url`. `link.domain` och `link.key` får `422`: den korta länken är det som den tryckta koden kodar, så skapa en ny QR-kod om du vill använda en annan.
* **`data`.** Kontrolleras mot den resulterande typen bara när `data` eller `qrType` ändras. Byte av `qrType` utan matchande `data` avvisas. Se [Byta typ](https://docs.getqr.com/sv/api/guides/qr-types.md#byta-typ).
* **Design.** `styles`, `frameOptions` och `logoOptions` slås samman med den sparade designen, så ett partiellt objekt ändrar bara det som det anger. Om du väljer en annan logotyp ersätts den, men storleken behålls.
* **`access`.** Varje nyckel tillämpas när den finns med. `null` rensar en regel. Åtkomstregler hör hemma under `access`: om du skickar dem under `link` får du `422`.
* **`archived`.** Pausar eller återaktiverar QR-koden och dess korta länk tillsammans, som [Pausa](#pausa-en-qr-kod) och [Återaktivera](#återaktivera-en-qr-kod).

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

Vad du kan ändra efter tryck för varje typ finns i [QR-koddata per typ](https://docs.getqr.com/sv/api/guides/qr-types.md).

## Ange pausat läge

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

Anger pausat läge direkt. [Pausa](#pausa-en-qr-kod) och [Återaktivera](#återaktivera-en-qr-kod) gör samma sak och är tydligare.

**qrId** `string` *required*

QR-kodens id.

**archived** `boolean` *required*

`true` för att pausa QR-koden, `false` för att återaktivera 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,
  "…": "…"
}
```

## Pausa en QR-kod

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

Hindrar QR-koden från att lösas in till sitt mål: skanningar visar pausningssidan i stället. Den tryckta koden och dess korta länk förblir giltiga. 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,
  "…": "…"
}
```

## Återaktivera en QR-kod

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

Gör att en pausad QR-kod löses in till sitt mål igen. Scheman och skanningsgränser gäller fortfarande. 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,
  "…": "…"
}
```

## Duplicera en QR-kod

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

Skapar en kopia med samma innehåll och design. Ingen body. Svarar `201 Created` med den nya [QR-koden](#qr-kodobjektet).

**qrId** `string` *required*

Id för QR-koden som ska kopieras.

* **Kort länk.** Kopian får en egen kort länk, med en slumpmässig slug på arbetsytans standarddomän, inte källans domän. Dess skanningar räknas separat.
* **Titel.** Titeln får suffixet ` (Copy)`. Resultatet håller sig inom 40 tecken: en lång titel kortas först. En namnlös QR-kod förblir namnlös.
* **Kopieras inte.** Åtkomstregler (lösenord, schema, skanningsgräns) och pausat läge. Kopian är alltid aktiv.
* **Filer.** PDF- och bildfiler, även filer i paket och gallerier, kopieras, så att kopian äger dem. Videofiler och designfiler, som logotyper, delas med källan.

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

## Ta bort en QR-kod

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

Tar bort QR-koden och dess korta länk. Svarar med det borttagna id:t.

> [!WARNING]
>
> Borttagningen är permanent. Den tryckta koden och dess korta länk slutar fungera, och skanningshistoriken går inte längre att nå. [Pausa](#pausa-en-qr-kod) QR-koden i stället om du kan behöva den igen.

**qrId** `string` *required*

QR-kodens id.

**id** `string`

Den borttagna QR-kodens id.

**deleted** `boolean`

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

## Ladda ned en QR-kodbild

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

Renderar QR-koden med dess design och returnerar filen.

**qrId** `string` *required*

Id för QR-koden som ska renderas, från svaret på listningen eller skapandet.

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

Utdataformat: `jpg`, `png`, `svg`, `pdf` (en A4-sida) eller `eps`. En varumärkesdesign eller AI-design kan bara laddas ned som `jpg`, `png` eller `pdf`.

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

Bildstorlek i pixlar: `1024`, `2048` eller `4096`. `svg` och `pdf` ignorerar den. En varumärkesdesign eller AI-design laddas bara ned i `1024`.

| `format` | `Content-Type` | Filnamn |
| - | - | - |
| `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 är filen. Det föreslagna filnamnet finns i `Content-Disposition`-huvudet och bygger på titeln, eller `qr-code` för en namnlös QR-kod.
* **Cachning.** Svaren har en `ETag` och `Cache-Control: private, max-age=3600, must-revalidate`. Skicka tillbaka `ETag` i `If-None-Match` för att få `304 Not Modified` när QR-koden inte har ändrats.
* **Fel.** Ett format eller en upplösning som inte stöds får `400 bad_request`. Felmeddelandet anger orsaken: `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>
```

## Åtkomstregler

Skicka ett `access`-objekt vid skapande eller uppdatering för att schemalägga start och slut, begränsa antalet skanningar eller kräva ett lösenord. Utelämnade regler lämnas oförändrade, och `null` rensar en regel. Hela beteendet, med exempel, finns i [Åtkomstregler](https://docs.getqr.com/sv/api/guides/access-rules.md).

## Designobjekt

`styles`, `frameOptions` och `logoOptions` anger former för prickar och hörn, färger, ram och logotyp. De fungerar likadant för QR-koder, [mallar](https://docs.getqr.com/sv/api/endpoints/templates.md) och [massskapanden](https://docs.getqr.com/sv/api/endpoints/bulk-qr-creations.md). Okända former, ramar eller logotyper avvisas. Alla accepterade värden och ett genomarbetat exempel finns i [Anpassning](https://docs.getqr.com/sv/api/guides/customization.md).

## Vanliga problem

> [accordion] 422 när ett lösenord, schema eller en skanningsgräns anges
>
> Skicka regeln under `access`, inte under `link`.

> [accordion] 422 när link.domain eller link.key ändras
>
> Den korta länken kan inte ändras efter skapandet, eftersom den tryckta koden kodar den. Skapa en ny QR-kod i stället.

> [accordion] 422 "Expected … for qrType"
>
> `data` matchar inte formatet för `qrType`. Kontrollera typen i [QR-koddata per typ](https://docs.getqr.com/sv/api/guides/qr-types.md).

> [accordion] 409 conflict när en QR-kod skapas
>
> Ett identiskt skapande körs fortfarande, eller så är `link.key` upptagen. Försök igen när den första begäran är klar. Med ett `Idempotency-Key` returnerar omförsöket den ursprungliga QR-koden.

> [accordion] Nedladdningen är en JPEG, inte en PNG
>
> Parametrarna heter `format` och `resolution`, och `format` är som standard `jpg`. Skicka `format=png`.

> [accordion] 404 för en QR-kod som jag ser i instrumentpanelen
>
> Varje begäran körs i API-nyckelns arbetsyta. Kontrollera att QR-koden hör till den. Se [Autentisering](https://docs.getqr.com/sv/api/authentication.md).

## Nästa steg

> [card] [QR-koddata per typ](https://docs.getqr.com/sv/api/guides/qr-types.md)

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

> [card] [Åtkomstregler](https://docs.getqr.com/sv/api/guides/access-rules.md)

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


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