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

# Rapporter

> Exportera en engångsrapport över skanningar eller schemalägg återkommande rapporter via e-post.

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

Rapporter sammanfattar skanningar per QR-kod för en avslutad dag, vecka eller månad. Exportera en direkt, eller schemalägg en rapport som skickas via e-post med jämna mellanrum.

| Metod | Sökväg | Beskrivning |
| - | - | - |
| `POST` | `/api/v1/reports` | [Exportera en rapport](#exportera-en-rapport) |
| `GET` | `/api/v1/reports/schedules` | [Lista schemalagda rapporter](#lista-schemalagda-rapporter) |
| `POST` | `/api/v1/reports/schedules` | [Schemalägg en rapport](#schemalägg-en-rapport) |
| `PATCH` | `/api/v1/reports/schedules/{id}` | [Uppdatera en schemalagd rapport](#uppdatera-en-schemalagd-rapport) |
| `DELETE` | `/api/v1/reports/schedules/{id}` | [Ta bort en schemalagd rapport](#ta-bort-en-schemalagd-rapport) |

## Huvuden

**Authorization** `string` *required*

`Bearer` följt av din API-nyckel. Se [Autentisering](https://docs.getqr.com/sv/api/authentication.md).

**Content-Type** `string`

`application/json`. Krävs för `POST`- och `PATCH`-begäranden.

## Omfång

Både engångsrapporter och schemalagda rapporter tar ett `scope`:

| `scope` | Omfattar | `qrIds` |
| - | - | - |
| `all` | QR-koderna i din arbetsyta | Utelämna |
| `selected` | En vald uppsättning QR-koder | Ett eller flera id:n |
| `single` | Exakt en QR-kod | Exakt ett id |

En rapport listar högst 50 QR-koder. Med `all` är det de senast skapade aktiva QR-koderna; pausade koder utesluts. Med `selected` och `single` tas pausade koder med. QR-koder utan kort länk har inga skanningar och hoppas över.

## Period

Perioden är alltid den senast avslutade, så en rapport innehåller aldrig dagens ofullständiga data. Gränserna går vid midnatt i rapportens tidszon.

| `period` eller `frequency` | Omfattar |
| - | - |
| `daily` | Föregående dag |
| `weekly` | Föregående vecka, måndag till söndag |
| `monthly` | Föregående kalendermånad |

## Exportera en rapport

`POST /api/v1/reports`

Skapar en rapport för den senast avslutade perioden och returnerar den i svaret.

**scope** `string` *required*

`all`, `selected` eller `single`. Se [Omfång](#omfång).

**period** `string` *required*

`daily`, `weekly` eller `monthly`. Se [Period](#period).

**format** `string` *required*

`json` returnerar rapporten i svarets body. `csv` och `pdf` returnerar en fil för nedladdning.

**qrIds** `string[]`

QR-koder som ska ingå. Krävs för `selected` (ett eller flera id:n) och `single` (exakt ett id). Utelämna det för `all`.

**timezone** `string` (default: UTC)

IANA-tidszon som periodens gränser anpassas efter, till exempel `America/New_York`. En okänd tidszon returnerar `422`.

**locale** `string` (default: en)

Språk för PDF-filen, till exempel `en` eller `de`. Ett värde som inte stöds faller tillbaka på engelska. Ignoreras av `csv` och `json`.

**name** `string`

Titel som visas i PDF-filen, högst 40 tecken. Ignoreras av `csv` och `json`.

### JSON-svar

**periodStart** `string`

Periodens första dag, `YYYY-MM-DD`.

**periodEnd** `string`

Första dagen efter perioden, `YYYY-MM-DD`. Perioden slutar vid midnatt i början av den här dagen.

**qrs** `object[]`

En post per QR-kod.

**properties**

**qrId** `string`

QR-kodens id.

**name** `string`

QR-kodens titel, eller `Untitled QR`.

**type** `string`

QR-kodens typ, till exempel `website`.

**totalScans** `integer`

Totalt antal skanningar under perioden.

**uniqueScans** `integer`

Unika skanningar under perioden.

**topGeography** `string`

Landskoden med flest skanningar, eller `—` utan skanningar.

**topDevice** `string`

Enheten med flest skanningar, eller `—`.

**topOs** `string`

Operativsystemet med flest skanningar, eller `—`.

**topBrowser** `string`

Webbläsaren med flest skanningar, eller `—`.

### CSV- och PDF-svar

Bodyn är filen. `Content-Disposition` namnger den efter perioden, till exempel `report-2026-08-10_2026-08-17.csv`. CSV-filen har en rad per QR-kod med kolumnerna `QR ID`, `QR name`, `QR type`, `Total scans`, `Unique scans`, `Top geography`, `Top device`, `Top OS` och `Top browser`.

```bash JSON theme={null}
curl -X POST "https://getqr.com/api/v1/reports" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": "selected",
    "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
    "period": "weekly",
    "format": "json",
    "timezone": "America/New_York"
  }'
```

```bash PDF theme={null}
curl -X POST "https://getqr.com/api/v1/reports" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "scope": "all", "period": "monthly", "format": "pdf", "locale": "de" }' \
  --output report.pdf
```

```json 200 theme={null}
{
  "periodStart": "2026-08-10",
  "periodEnd": "2026-08-17",
  "qrs": [
    {
      "qrId": "clw3n7t1x0002ab0d5mqe8pkr",
      "name": "Landing page",
      "type": "website",
      "totalScans": 128,
      "uniqueScans": 96,
      "topGeography": "US",
      "topDevice": "Mobile",
      "topOs": "iOS",
      "topBrowser": "Safari"
    }
  ]
}
```

## Objektet för schemalagd rapport

En schemalagd rapport skickas via e-post till kontot som skapade den, vid midnatt i dess tidszon.

**id** `string`

Den schemalagda rapportens id.

**name** `string | null`

Etikett som visas i e-postmeddelandets ämnesrad och i instrumentpanelen.

**frequency** `string`

`daily`, `weekly` eller `monthly`.

**scope** `string`

`all`, `selected` eller `single`.

**qrIds** `string[] | null`

QR-koder som rapporten omfattar med omfången `selected` och `single`. `null` när inga id:n skickades.

**filters** `null`

Alltid `null`. Reserverat.

**includePdf** `boolean`

Om en PDF bifogas i e-postmeddelandet.

**status** `string`

`active` eller `paused`.

**timezone** `string`

IANA-tidszon som sändningstiden och perioden anpassas efter.

**locale** `string`

Språk för e-postmeddelandet och PDF-filen.

**nextRunAt** `string`

När nästa e-postmeddelande ska skickas, ISO 8601: nästa midnatt (`daily`), nästa måndag (`weekly`) eller den 1:a i nästa månad (`monthly`), i rapportens tidszon.

**lastRunAt** `string | null`

När det senaste e-postmeddelandet skickades, ISO 8601.

**createdAt** `string`

Datum då den skapades, ISO 8601.

**updatedAt** `string`

Datum för senaste uppdatering, ISO 8601.

## Lista schemalagda rapporter

`GET /api/v1/reports/schedules`

Returnerar arbetsytans schemalagda rapporter, även de som andra medlemmar har skapat, med de nyaste först. Listan är paginerad: se [Paginering](https://docs.getqr.com/sv/api/introduction.md#paginering).

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

Sidan som returneras, 1 eller högre.

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

Resultat per sida, 1 till 100.

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

```json 200 theme={null}
{
  "data": [
    {
      "id": "clx8f2k9a0001qk0c8vhd3xyz",
      "name": "Weekly campaign digest",
      "frequency": "weekly",
      "scope": "selected",
      "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr", "clw3n7t1x0004ab0d9rzu2wfh"],
      "filters": null,
      "includePdf": true,
      "status": "active",
      "timezone": "America/New_York",
      "locale": "en",
      "nextRunAt": "2026-08-10T04:00:00.000Z",
      "lastRunAt": "2026-08-03T04:00:12.000Z",
      "createdAt": "2026-07-01T12:34:56.000Z",
      "updatedAt": "2026-07-28T09:12:00.000Z"
    }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 1, "hasMore": false }
}
```

## Schemalägg en rapport

`POST /api/v1/reports/schedules`

Skapar en rapport som skickas via e-post med jämna mellanrum. `nextRunAt` beräknas utifrån frekvensen och tidszonen.

> [!NOTE]
>
> En QR-kod kan bara ingå i en schemalagd rapport per frekvens. Ett överlappande schema returnerar `409 conflict`.

En rapport med omfånget `all` överlappar alla andra rapporter med samma frekvens. Pausade rapporter räknas också.

**frequency** `string` *required*

Hur ofta rapporten skickas: `daily`, `weekly` eller `monthly`. Styr även vilken period den omfattar. Se [Period](#period).

**scope** `string` *required*

`all`, `selected` eller `single`. Se [Omfång](#omfång).

**timezone** `string` *required*

IANA-tidszon som sändningstiden och perioden anpassas efter, till exempel `America/New_York`. En okänd tidszon returnerar `422`.

**locale** `string` *required*

Språk för e-postmeddelandet och PDF-filen, till exempel `en` eller `de`. Ett värde som inte stöds faller tillbaka på engelska. PDF-filer på `zh`, `ja`, `ko` och `ar` renderas på engelska.

**qrIds** `string[]`

QR-koder som ska ingå. Krävs för `selected` (ett eller flera id:n) och `single` (exakt ett id). Varje id måste vara en QR-kod i din arbetsyta, annars returnerar begäran `404`.

**name** `string`

Etikett som visas i e-postmeddelandets ämnesrad och i instrumentpanelen, högst 40 tecken.

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

Bifoga en PDF-version av rapporten i e-postmeddelandet.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/reports/schedules" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekly campaign digest",
    "frequency": "weekly",
    "scope": "selected",
    "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
    "includePdf": true,
    "timezone": "America/New_York",
    "locale": "en"
  }'
```

```json 200 theme={null}
{
  "id": "clx8f2k9a0001qk0c8vhd3xyz",
  "name": "Weekly campaign digest",
  "frequency": "weekly",
  "scope": "selected",
  "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
  "filters": null,
  "includePdf": true,
  "status": "active",
  "timezone": "America/New_York",
  "locale": "en",
  "nextRunAt": "2026-08-10T04:00:00.000Z",
  "lastRunAt": null,
  "createdAt": "2026-08-03T12:34:56.000Z",
  "updatedAt": "2026-08-03T12:34:56.000Z"
}
```

## Uppdatera en schemalagd rapport

`PATCH /api/v1/reports/schedules/{id}`

Ändrar en schemalagd rapport, eller pausar och återupptar den. Skicka bara de fält du vill ändra, minst ett. Om du ändrar frekvensen eller tidszonen, eller återupptar en pausad rapport, beräknas `nextRunAt` om. Regeln om en rapport per frekvens gäller fortfarande, så en överlappande ändring returnerar `409`.

**id** `string` *required*

Den schemalagda rapportens id. Hämta det från svaret på listningen eller skapandet.

**status** `string`

`paused` stoppar e-postmeddelandena utan att ta bort schemat. `active` återupptar dem.

**name** `string`

Etikett, högst 40 tecken.

**frequency** `string`

`daily`, `weekly` eller `monthly`.

**scope** `string`

`all`, `selected` eller `single`.

**qrIds** `string[]`

QR-koder som ska ingå. Varje id måste vara en QR-kod i din arbetsyta.

**includePdf** `boolean`

Bifoga en PDF i e-postmeddelandet.

**timezone** `string`

IANA-tidszon.

**locale** `string`

Språk för e-postmeddelandet och PDF-filen.

```bash cURL theme={null}
curl -X PATCH "https://getqr.com/api/v1/reports/schedules/clx8f2k9a0001qk0c8vhd3xyz" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Monthly campaign digest",
    "frequency": "monthly",
    "status": "active"
  }'
```

```json 200 theme={null}
{
  "id": "clx8f2k9a0001qk0c8vhd3xyz",
  "name": "Monthly campaign digest",
  "frequency": "monthly",
  "scope": "selected",
  "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
  "filters": null,
  "includePdf": true,
  "status": "active",
  "timezone": "America/New_York",
  "locale": "en",
  "nextRunAt": "2026-09-01T04:00:00.000Z",
  "lastRunAt": "2026-08-03T04:00:12.000Z",
  "createdAt": "2026-07-01T12:34:56.000Z",
  "updatedAt": "2026-08-05T10:15:00.000Z"
}
```

## Ta bort en schemalagd rapport

`DELETE /api/v1/reports/schedules/{id}`

Tar bort schemat och stoppar alla kommande e-postmeddelanden.

> [!WARNING]
>
> Det går inte att ångra borttagningen av en schemalagd rapport.

**id** `string` *required*

Den schemalagda rapportens id.

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

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

## Vanliga problem

> [accordion] 404 vid export av en rapport
>
> Med omfånget `selected` eller `single` matchade inget av `qrIds` en QR-kod med kort länk i din arbetsyta. Kontrollera id:na.

> [accordion] 404 "QR not found." vid schemaläggning av en rapport
>
> Ett av `qrIds` är inte en QR-kod i din arbetsyta, eller så har den tagits bort. Kontrollera id:na med [Lista QR-koder](https://docs.getqr.com/sv/api/endpoints/qr-codes.md).

> [accordion] 409 vid schemaläggning av en rapport
>
> En av QR-koderna ingår redan i en schemalagd rapport med samma frekvens, eller så använder en rapport med den frekvensen omfånget `all`. Redigera eller ta bort den rapporten, eller välj en annan frekvens.

> [accordion] 404 "Scheduled report not found."
>
> `id` matchar ingen schemalagd rapport i din arbetsyta. Hämta det från [Lista schemalagda rapporter](#lista-schemalagda-rapporter).

> [accordion] Rapporten saknar dagens skanningar
>
> Rapporter omfattar bara den senast avslutade perioden. Använd [Analys](https://docs.getqr.com/sv/api/endpoints/analytics.md) för aktuella siffror.

## Nästa steg

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

> [card] [Schemalagda rapporter i appen](https://docs.getqr.com/sv/analytics/scheduled-reports.md)

> [card] [Läs dina rapporter](https://docs.getqr.com/sv/analytics/reading-reports.md)

> [card] [Fel](https://docs.getqr.com/sv/api/errors.md)


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