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

# Introductie van de API

> Beheer QR-codes, sjablonen, analytics en rapporten vanuit je eigen code.

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

De GetQR API is een REST API voor wat je in het dashboard doet: QR-codes maken en bijwerken, hun afbeeldingen downloaden, scananalytics lezen en rapporten exporteren. Je authenticeert met de API-sleutel van je account en roept geversioneerde endpoints aan onder `/api/v1`.

## Wat je kunt doen

> [card] [QR-codes](https://docs.getqr.com/nl/api/endpoints/qr-codes.md)
>
> QR-codes maken, weergeven, bijwerken, pauzeren, dupliceren, verwijderen en downloaden.

> [card] [Analytics](https://docs.getqr.com/nl/api/endpoints/analytics.md)
>
> Scantotalen en uitsplitsingen voor één QR-code of de hele workspace.

> [card] [Rapporten](https://docs.getqr.com/nl/api/endpoints/reports.md)
>
> Exporteer een eenmalig rapport of plan terugkerende rapportmails.

> [card] [Sjablonen](https://docs.getqr.com/nl/api/endpoints/templates.md)
>
> Sla ontwerpen op en pas ze toe op nieuwe QR-codes.

> [card] [Bulkaanmaak van QR-codes](https://docs.getqr.com/nl/api/endpoints/bulk-qr-creations.md)
>
> Maak tot 100 QR-codes tegelijk vanuit JSON of een CSV-bestand.

> [card] [Bestanden](https://docs.getqr.com/nl/api/endpoints/files.md)
>
> Upload pdf's, afbeeldingen, video's en logo's voor je QR-codes.

> [card] [Statuscontrole](https://docs.getqr.com/nl/api/endpoints/health.md)
>
> Controleer of de API bereikbaar is. Geen API-sleutel nodig.

## Handleidingen

> [card] [QR-types](https://docs.getqr.com/nl/api/guides/qr-types.md)
>
> Het dataformaat van elk van de 16 QR-types.

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

> [card] [Toegangsregels](https://docs.getqr.com/nl/api/guides/access-rules.md)
>
> Planningen, scanlimieten, wachtwoorden, pauzeren en verwijderen.

## Basis-URL

Alle endpoints vallen onder één basis-URL:

```text theme={null}
https://getqr.com/api/v1
```

## Versiebeheer

De API-versie maakt deel uit van het pad: elk endpoint valt onder `/api/v1/`.

* Wijzigingen die niet achterwaarts compatibel zijn, verschijnen onder een nieuw versievoorvoegsel zoals `/api/v2/`, en `/api/v1/` blijft werken.
* Toevoegingen, zoals nieuwe optionele velden of nieuwe endpoints, kunnen binnen v1 verschijnen. Negeer velden in het antwoord die je code niet kent.

## Snel aan de slag

**1. Haal je API-sleutel op**

Genereer of toon je sleutel in je accountinstellingen. Zie [Authenticatie](https://docs.getqr.com/nl/api/authentication.md).

**2. Controleer of de API bereikbaar is**

```bash theme={null}
curl https://getqr.com/api/v1/health
```

Het antwoord is `{ "status": "ok", "version": "v1" }`.

**3. Maak je eerste QR-code**

```bash 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: first-qr-0001" \
  -d '{
    "qrType": "website",
    "data": "https://example.com",
    "title": "Landing page"
  }'
```

De API antwoordt met `201` en de nieuwe QR-code, inclusief de `id` en `shortLink`.

**4. Download de afbeelding**

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

## Verzoeken en antwoorden

* **Formaat.** Stuur de body van een verzoek als JSON met `Content-Type: application/json`. De uitzondering is de CSV-upload voor [bulkaanmaak](https://docs.getqr.com/nl/api/endpoints/bulk-qr-creations.md), die `multipart/form-data` gebruikt.
* **Antwoorden.** Antwoorden zijn JSON. Downloads, zoals QR-afbeeldingen en ZIP-archieven van een bulkaanmaak, geven het bestand zelf terug.
* **Datums.** Datums zijn ISO 8601-strings in UTC, bijvoorbeeld `2026-08-01T10:00:00.000Z`.
* **Queryparameters.** Booleaanse parameters accepteren de strings `true` of `false`.
* **Gedeeltelijke updates.** `PATCH`-endpoints wijzigen alleen de velden die je meestuurt.
* **Geheimen.** Antwoorden bevatten nooit wachtwoorden of interne ID's. Een QR-code met wachtwoord meldt alleen `passwordProtected: true`.
* **Workspace.** Elk verzoek wordt uitgevoerd in de workspace waar je API-sleutel bij hoort. Je geeft geen workspace-ID mee. Zie [Toegang en rollen](https://docs.getqr.com/nl/api/authentication.md#toegang-en-rollen).
* **Fouten.** Mislukte verzoeken geven een `error`-object terug met een vaste `code`. Zie [Fouten](https://docs.getqr.com/nl/api/errors.md).

## Paginering

Lijst-endpoints (QR-codes, sjablonen en geplande rapporten) accepteren twee queryparameters:

| Parameter | Beschrijving |
| - | - |
| `page` | Pagina die wordt teruggegeven. Standaard `1`. |
| `pageSize` | Resultaten per pagina, maximaal `100`. Standaard `100`. |

Ze antwoorden met een `data`-array en een `pagination`-object:

```json theme={null}
{
  "data": [ … ],
  "pagination": { "page": 1, "pageSize": 50, "total": 128, "hasMore": true }
}
```

| Veld | Beschrijving |
| - | - |
| `page` | De pagina die je hebt ontvangen. |
| `pageSize` | De paginagrootte die je hebt ontvangen. |
| `total` | Aantal resultaten over alle pagina's. |
| `hasMore` | `true` zolang er nog een pagina klaarstaat. |

Vraag de volgende pagina op zolang `hasMore` `true` is. Een `pageSize` boven `100` geeft [`422`](https://docs.getqr.com/nl/api/errors#validatiefouten).

## Idempotentie

Na een netwerkfout weet je soms niet zeker of een verzoek is aangekomen. Om [Een QR-code maken](https://docs.getqr.com/nl/api/endpoints/qr-codes.md#een-qr-code-maken) veilig opnieuw te proberen, stuur je een `Idempotency-Key`-header mee met een unieke waarde naar keuze:

```bash theme={null}
-H "Idempotency-Key: order-4821-qr"
```

* Herhaal je het verzoek binnen 24 uur met dezelfde sleutel, dan krijg je het oorspronkelijke antwoord terug in plaats van een tweede QR-code.
* De header `x-idempotent-replay` in het antwoord is `true` bij een herhaald antwoord en `false` bij een nieuw antwoord.
* Loopt het eerste verzoek met die sleutel nog, dan antwoordt de API met `409 conflict`. Probeer het opnieuw zodra het klaar is.
* Gebruik je een sleutel opnieuw met een andere body, dan antwoordt de API met `422 unprocessable_entity`.
* Zonder de header wordt een identieke body die binnen 30 seconden wordt verstuurd als duplicaat behandeld.

Een bulkaanmaak gebruikt in plaats daarvan een `idempotencyKey`-veld in de body. Zie [Bulkaanmaak van QR-codes](https://docs.getqr.com/nl/api/endpoints/bulk-qr-creations.md).

## Rate limits

Elke API-sleutel kan tot 600 verzoeken per minuut versturen. Zie [Rate limits](https://docs.getqr.com/nl/api/rate-limits.md).

## Later beschikbaar

Drukklare pakketten staan gepland voor een latere release.

## Volgende stappen

> [card] [Authenticatie](https://docs.getqr.com/nl/api/authentication.md)

> [card] [QR-codes](https://docs.getqr.com/nl/api/endpoints/qr-codes.md)


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