Gå til indhold

QR-koder API

Oversigt

Codes-API’en er hjertet i qr3.app. Med den kan du oprette, opdatere og slette dynamiske og statiske QR-koder.

Basis-URL: https://qr3.app/v1/codes

Opret QR-kode

POST /v1/codes

Terminal window
curl -X POST https://qr3.app/v1/codes \
-H "Authorization: Bearer qr3_sk_..." \
-H "Content-Type: application/json" \
-d '{
"type": "url",
"url": "https://example.com",
"title": "Mein erster QR-Code",
"tags": ["marketing", "q1"],
"is_dynamic": true
}'

Response (HTTP 201):

{
"data": {
"id": "qr_a1b2c3d4",
"short_code": "r7f3Kx",
"redirect_url": "https://qr3.app/r7f3Kx",
"image_svg_url": "https://qr3.app/v1/codes/r7f3Kx/qr.svg",
"image_png_url": "https://qr3.app/v1/codes/r7f3Kx/qr.png",
"image_pdf_url": "https://qr3.app/v1/codes/r7f3Kx/qr.pdf",
"image_eps_url": "https://qr3.app/v1/codes/r7f3Kx/qr.eps",
"type": "url",
"target_url": "https://example.com",
"is_dynamic": true,
"status": "live",
"tags": ["marketing", "q1"],
"total_scans": 0,
"created_at": "2026-03-15T10:00:00.000Z"
},
"meta": { "request_id": "req_xyz123" }
}

QR-kodetyper

TypeBeskrivelsePåkrævede felter
urlWebsite-URL (dynamisk eller statisk)url
vcardVisitkort (vCard 3.0)vcard_first_name eller vcard_last_name
wifiWi-Fi-konfigurationwifi_ssid
emailE-mail (mailto:)email_to
smsSMSsms_phone
locationLokation (geo:)location_lat, location_lng

A/B-testing

Test to forskellige destinations-URL’er med vægtet viderestilling:

{
"type": "url",
"url": "https://version-a.example.com",
"ab_enabled": true,
"ab_target_url_b": "https://version-b.example.com",
"ab_weight_a": 50
}

Udløb (Expiry)

QR-koder kan udløbe automatisk:

{
"type": "url",
"url": "https://aktionsseite.example.com",
"expires_at": "2026-12-31T23:59:59Z",
"redirect_after_expiry": "https://archiv.example.com"
}

Efter udløb viderestilles der enten til redirect_after_expiry, eller der vises en 410-side.


Batch-oprettelse

POST /v1/codes/batch

Opretter op til 1.000 QR-koder i en enkelt anmodning. Ideelt til masseoprettelser.

Terminal window
curl -X POST https://qr3.app/v1/codes/batch \
-H "Authorization: Bearer qr3_sk_..." \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "type": "url", "url": "https://produkt-1.example.com", "tags": ["batch"] },
{ "type": "url", "url": "https://produkt-2.example.com", "tags": ["batch"] },
{ "type": "wifi", "wifi_ssid": "GastWLAN", "wifi_password": "geheim123" }
],
"skip_url_scan": false
}'

Response (HTTP 201):

{
"data": {
"created": [
{ "id": "qr_...", "short_code": "abc123", "redirect_url": "https://qr3.app/abc123" },
{ "id": "qr_...", "short_code": "def456", "redirect_url": "https://qr3.app/def456" },
{ "id": "qr_...", "short_code": "ghi789", "status": "live" }
],
"total": 3,
"failed": 0
}
}

QR-kodeliste

GET /v1/codes

Terminal window
curl https://qr3.app/v1/codes?status=live&limit=20 \
-H "Authorization: Bearer qr3_sk_..."

Query-parametre:

ParameterTypeStandardBeskrivelse
cursorstringCursor til paginering
limitinteger20Resultater pr. side (maks. 100)
statusstringFilter: live, paused, flagged, draft

Hent QR-kode

GET /v1/codes/:id

Terminal window
curl https://qr3.app/v1/codes/qr_a1b2c3d4 \
-H "Authorization: Bearer qr3_sk_..."

Opdater QR-kode

PATCH /v1/codes/:id

Dynamiske QR-koder gør det muligt at ændre destinations-URL’en når som helst — uden at skulle genprinte QR-koden.

Terminal window
curl -X PATCH https://qr3.app/v1/codes/qr_a1b2c3d4 \
-H "Authorization: Bearer qr3_sk_..." \
-H "Content-Type: application/json" \
-d '{ "url": "https://neue-zielseite.example.com", "status": "live" }'

For dynamiske url-koder kan du angive is_landing_page: true (ved oprettelse eller via PATCH). En scanning vil derefter vise en side hostet af qr3 med kodens offentlige filer og eksterne links i stedet for at viderestille. Eksterne links overføres som et links-array:

{
"is_landing_page": true,
"links": [
{ "label": "Datenblatt", "url": "https://example.com/datenblatt.pdf" },
{ "label": "Zertifikat", "url": "https://example.com/zertifikat.pdf" }
]
}
  • 0–20 links pr. kode; label er 1–100 tegn; url skal være http(s) (≤ 2048 tegn).
  • Hver URL kontrolleres med Google Web Risk — en usikker URL returnerer 422.
  • Hvis Web Risk ikke er tilgængelig under lagring, accepteres linket stadig, men markeres til fornyet kontrol. Et dagligt job kontrollerer gemte links igen (og tjekker regelmæssigt links, der tidligere blev klassificeret som sikre) og sætter automatisk koden på pause, hvis et link senere identificeres som usikkert.
  • "links": [] sletter alle links. Se vejledningen til landingssider.

Slet QR-kode

DELETE /v1/codes/:id

Soft-delete — QR-koden arkiveres, scanningsdata bevares.

Terminal window
curl -X DELETE https://qr3.app/v1/codes/qr_a1b2c3d4 \
-H "Authorization: Bearer qr3_sk_..."

Download QR-billeder

Alle billedformater er offentligt tilgængelige — ingen godkendelse påkrævet.

FormatURLAnvendelse
SVG (vektor)/v1/codes/:code/qr.svgWeb, skalering, digital
PNG (raster)/v1/codes/:code/qr.pngE-mail, præsentationer
PDF (vektor)/v1/codes/:code/qr.pdfStandard: kvadratisk (kun koden); ?format=a4 til et printark
EPS (vektor)/v1/codes/:code/qr.epsProfessionelle print-workflows (Adobe, trykkerier)

Valgfrit: ?size=N — modulstørrelse i pixels (2–20, standard: 4) for SVG, PNG og EPS. PDF’en bruger en fast modulstørrelse.

Kun PDF: ?format=a4|square — sideformat (standard: square — kun kode + quiet zone, intet hvidt A4-område; a4 til et printklart A4-ark)

Terminal window
# SVG für Web
curl https://qr3.app/v1/codes/r7f3Kx/qr.svg
# PNG in hoher Auflösung
curl https://qr3.app/v1/codes/r7f3Kx/qr.png?size=10 -o qr-hires.png
# Kompaktes PDF (nur der Code, Standard)
curl https://qr3.app/v1/codes/r7f3Kx/qr.pdf -o qr.pdf
# Druckfertiges A4-Blatt
curl "https://qr3.app/v1/codes/r7f3Kx/qr.pdf?format=a4" -o qr-a4.pdf

Kommentarer

Kommentarer muliggør feedback-loops mellem bureauer og kunder.

GET /v1/codes/:id/comments

POST /v1/codes/:id/comments

PATCH /v1/codes/:id/comments/:commentId

DELETE /v1/codes/:id/comments/:commentId

Terminal window
# Kommentar hinzufügen
curl -X POST https://qr3.app/v1/codes/qr_a1b2c3d4/comments \
-H "Authorization: Bearer qr3_sk_..." \
-H "Content-Type: application/json" \
-d '{ "body": "QR-Code bitte auf grünen Hintergrund abstimmen.", "author_name": "Max Müller" }'
# Offene Kommentare auflisten
curl "https://qr3.app/v1/codes/qr_a1b2c3d4/comments?resolved=false" \
-H "Authorization: Bearer qr3_sk_..."
# Kommentar als erledigt markieren
curl -X PATCH https://qr3.app/v1/codes/qr_a1b2c3d4/comments/cmt_xyz \
-H "Authorization: Bearer qr3_sk_..." \
-H "Content-Type: application/json" \
-d '{ "resolved": true }'