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

> Eksporter en enkeltstående skannerapport, eller planlegg gjentakende rapporter på e-post.

> [!NOTE]
>
> GetQR API-et er i beta og er tilgjengelig for utvalgte arbeidsområder. Detaljer kan endres før den generelle lanseringen.

Rapporter oppsummerer skanninger per QR-kode for en avsluttet dag, uke eller måned. Eksporter en rapport med en gang, eller planlegg en rapport som sendes på e-post med jevne mellomrom.

| Metode | Bane | Beskrivelse |
| - | - | - |
| `POST` | `/api/v1/reports` | [Eksporter en rapport](#eksporter-en-rapport) |
| `GET` | `/api/v1/reports/schedules` | [Vis planlagte rapporter](#vis-planlagte-rapporter) |
| `POST` | `/api/v1/reports/schedules` | [Planlegg en rapport](#planlegg-en-rapport) |
| `PATCH` | `/api/v1/reports/schedules/{id}` | [Oppdater en planlagt rapport](#oppdater-en-planlagt-rapport) |
| `DELETE` | `/api/v1/reports/schedules/{id}` | [Slett en planlagt rapport](#slett-en-planlagt-rapport) |

## Headere

**Authorization** `string` *required*

`Bearer` etterfulgt av API-nøkkelen din. Se [Autentisering](https://docs.getqr.com/no/api/authentication.md).

**Content-Type** `string`

`application/json`. Påkrevd ved `POST`- og `PATCH`-forespørsler.

## Omfang

Både enkeltstående og planlagte rapporter tar et `scope`:

| `scope` | Dekker | `qrIds` |
| - | - | - |
| `all` | QR-kodene i arbeidsområdet ditt | Utelat |
| `selected` | Et utvalg QR-koder | Én eller flere ID-er |
| `single` | Nøyaktig én QR-kode | Nøyaktig én ID |

En rapport viser maksimalt 50 QR-koder. Med `all` er det de sist opprettede aktive QR-kodene; koder som er satt på pause, utelates. Med `selected` og `single` tas koder som er satt på pause, med. QR-koder uten kortlenke har ingen skanninger og hoppes over.

## Periode

Perioden er alltid den siste avsluttede, så en rapport inneholder aldri delvise data fra i dag. Grensene er midnatt i rapportens tidssone.

| `period` eller `frequency` | Dekker |
| - | - |
| `daily` | Forrige dag |
| `weekly` | Forrige uke, mandag til søndag |
| `monthly` | Forrige kalendermåned |

## Eksporter en rapport

`POST /api/v1/reports`

Bygger en rapport for den siste avsluttede perioden og returnerer den i svaret.

**scope** `string` *required*

`all`, `selected` eller `single`. Se [Omfang](#omfang).

**period** `string` *required*

`daily`, `weekly` eller `monthly`. Se [Periode](#periode).

**format** `string` *required*

`json` returnerer rapporten i svarets body. `csv` og `pdf` returnerer en fil som lastes ned.

**qrIds** `string[]`

QR-kodene rapporten skal dekke. Påkrevd for `selected` (én eller flere ID-er) og `single` (nøyaktig én ID). Utelat den for `all`.

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

IANA-tidssone som periodegrensene justeres etter, for eksempel `America/New_York`. En ukjent tidssone returnerer `422`.

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

Språket i PDF-en, for eksempel `en` eller `de`. En verdi som ikke støttes, faller tilbake til engelsk. Ignoreres av `csv` og `json`.

**name** `string`

Tittel som vises på PDF-en, opptil 40 tegn. Ignoreres av `csv` og `json`.

### JSON-svar

**periodStart** `string`

Første dag i perioden, `YYYY-MM-DD`.

**periodEnd** `string`

Første dag etter perioden, `YYYY-MM-DD`. Perioden slutter ved midnatt i starten av denne dagen.

**qrs** `object[]`

Én oppføring per QR-kode.

**properties**

**qrId** `string`

ID-en til QR-koden.

**name** `string`

Tittelen på QR-koden, eller `Untitled QR`.

**type** `string`

QR-kodetype, for eksempel `website`.

**totalScans** `integer`

Totalt antall skanninger i perioden.

**uniqueScans** `integer`

Unike skanninger i perioden.

**topGeography** `string`

Landkoden med flest skanninger, eller `—` uten skanninger.

**topDevice** `string`

Enheten med flest skanninger, eller `—`.

**topOs** `string`

Operativsystemet med flest skanninger, eller `—`.

**topBrowser** `string`

Nettleseren med flest skanninger, eller `—`.

### CSV- og PDF-svar

Body er filen. `Content-Disposition` gir den navn etter perioden, for eksempel `report-2026-08-10_2026-08-17.csv`. CSV-filen har én rad per QR-kode med kolonnene `QR ID`, `QR name`, `QR type`, `Total scans`, `Unique scans`, `Top geography`, `Top device`, `Top OS` og `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 for planlagt rapport

En planlagt rapport sendes på e-post til kontoen som opprettet den, ved midnatt i rapportens tidssone.

**id** `string`

ID-en til den planlagte rapporten.

**name** `string | null`

Etikett som vises i emnet på e-posten og i dashbordet.

**frequency** `string`

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

**scope** `string`

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

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

QR-kodene rapporten dekker med omfangene `selected` og `single`. `null` når ingen ID-er ble sendt.

**filters** `null`

Alltid `null`. Reservert.

**includePdf** `boolean`

Om en PDF legges ved e-posten.

**status** `string`

`active` eller `paused`.

**timezone** `string`

IANA-tidssone som sendetidspunktet og perioden justeres etter.

**locale** `string`

Språket i e-posten og PDF-en.

**nextRunAt** `string`

Når neste e-post skal sendes, ISO 8601: neste midnatt (`daily`), neste mandag (`weekly`) eller den 1. i neste måned (`monthly`), i rapportens tidssone.

**lastRunAt** `string | null`

Når siste e-post ble sendt, ISO 8601.

**createdAt** `string`

Opprettelsesdato, ISO 8601.

**updatedAt** `string`

Dato for siste oppdatering, ISO 8601.

## Vis planlagte rapporter

`GET /api/v1/reports/schedules`

Returnerer de planlagte rapportene i arbeidsområdet ditt, også de som andre medlemmer har opprettet, med de nyeste først. Listen er paginert: se [Paginering](https://docs.getqr.com/no/api/introduction.md#paginering).

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

Siden som skal returneres, 1 eller høyere.

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

Resultater per side, 1 til 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 }
}
```

## Planlegg en rapport

`POST /api/v1/reports/schedules`

Oppretter en rapport som sendes på e-post med jevne mellomrom. `nextRunAt` beregnes ut fra frekvensen og tidssonen.

> [!NOTE]
>
> En QR-kode kan bare tilhøre én planlagt rapport per frekvens. En overlappende tidsplan returnerer `409 conflict`.

En rapport med omfanget `all` overlapper alle andre rapporter med samme frekvens. Rapporter som er satt på pause, teller også.

**frequency** `string` *required*

Hvor ofte rapporten sendes: `daily`, `weekly` eller `monthly`. Bestemmer også perioden den dekker. Se [Periode](#periode).

**scope** `string` *required*

`all`, `selected` eller `single`. Se [Omfang](#omfang).

**timezone** `string` *required*

IANA-tidssone som sendetidspunktet og perioden justeres etter, for eksempel `America/New_York`. En ukjent tidssone returnerer `422`.

**locale** `string` *required*

Språket i e-posten og PDF-en, for eksempel `en` eller `de`. En verdi som ikke støttes, faller tilbake til engelsk. PDF-er på `zh`, `ja`, `ko` og `ar` gjengis på engelsk.

**qrIds** `string[]`

QR-kodene rapporten skal dekke. Påkrevd for `selected` (én eller flere ID-er) og `single` (nøyaktig én ID). Hver ID må være en QR-kode i arbeidsområdet ditt, ellers returnerer forespørselen `404`.

**name** `string`

Etikett som vises i emnet på e-posten og i dashbordet, opptil 40 tegn.

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

Legg ved en PDF-versjon av rapporten i e-posten.

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

## Oppdater en planlagt rapport

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

Endrer en planlagt rapport, eller setter den på pause og gjenopptar den. Send bare feltene du vil endre, minst ett. Endrer du frekvensen eller tidssonen, eller gjenopptar en rapport som er satt på pause, beregnes `nextRunAt` på nytt. Regelen om én rapport per frekvens gjelder fortsatt, så en overlappende endring returnerer `409`.

**id** `string` *required*

ID-en til den planlagte rapporten. Hent den fra svaret på listen eller opprettelsen.

**status** `string`

`paused` stopper e-postene uten å slette tidsplanen. `active` gjenopptar dem.

**name** `string`

Etikett, opptil 40 tegn.

**frequency** `string`

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

**scope** `string`

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

**qrIds** `string[]`

QR-kodene rapporten skal dekke. Hver ID må være en QR-kode i arbeidsområdet ditt.

**includePdf** `boolean`

Legg ved en PDF i e-posten.

**timezone** `string`

IANA-tidssone.

**locale** `string`

Språket i e-posten og PDF-en.

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

## Slett en planlagt rapport

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

Sletter tidsplanen og stopper alle videre e-poster.

> [!WARNING]
>
> Sletting av en planlagt rapport kan ikke angres.

**id** `string` *required*

ID-en til den planlagte rapporten.

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

## Vanlige problemer

> [accordion] 404 når jeg eksporterer en rapport
>
> Med omfanget `selected` eller `single` samsvarte ingen av `qrIds` med en QR-kode med kortlenke i arbeidsområdet ditt. Sjekk ID-ene.

> [accordion] 404 "QR not found." når jeg planlegger en rapport
>
> En av `qrIds` er ikke en QR-kode i arbeidsområdet ditt, eller den er slettet. Sjekk ID-ene med [Vis QR-koder](https://docs.getqr.com/no/api/endpoints/qr-codes.md).

> [accordion] 409 når jeg planlegger en rapport
>
> En av QR-kodene tilhører allerede en planlagt rapport med samme frekvens, eller en rapport med den frekvensen bruker omfanget `all`. Rediger eller slett den rapporten, eller velg en annen frekvens.

> [accordion] 404 "Scheduled report not found."
>
> `id` samsvarer ikke med en planlagt rapport i arbeidsområdet ditt. Hent den fra [Vis planlagte rapporter](#vis-planlagte-rapporter).

> [accordion] Rapporten mangler dagens skanninger
>
> Rapporter dekker bare den siste avsluttede perioden. Bruk [Analyse](https://docs.getqr.com/no/api/endpoints/analytics.md) for tall i sanntid.

## Neste steg

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

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

> [card] [Les rapportene dine](https://docs.getqr.com/no/analytics/reading-reports.md)

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


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