QR-koder API
Översikt
Codes-API är hjärtat i qr3.app. Med den skapar, uppdaterar och raderar du dynamiska och statiska QR-koder.
Bas-URL: https://qr3.app/v1/codes
Skapa QR-kod
POST /v1/codes
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 }'const code = await qr3.codes.create({ type: 'url', url: 'https://example.com', title: 'Mein erster QR-Code', tags: ['marketing', 'q1'], is_dynamic: true,});qr3 create https://example.com --title "Mein QR-Code" --tags marketing,q1Svar (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-kodtyper
| Typ | Beskrivning | Obligatoriska fält |
|---|---|---|
url | Webbplats-URL (dynamisk eller statisk) | url |
vcard | Visitkort (vCard 3.0) | vcard_first_name eller vcard_last_name |
wifi | Wi-Fi-konfiguration | wifi_ssid |
email | E-post (mailto:) | email_to |
sms | SMS | sms_phone |
location | Plats (geo:) | location_lat, location_lng |
A/B-testning
Testa två olika mål-URL:er med viktad omdirigering:
{ "type": "url", "url": "https://version-a.example.com", "ab_enabled": true, "ab_target_url_b": "https://version-b.example.com", "ab_weight_a": 50}Giltighetstid (Expiry)
QR-koder kan löpa ut automatiskt:
{ "type": "url", "url": "https://aktionsseite.example.com", "expires_at": "2026-12-31T23:59:59Z", "redirect_after_expiry": "https://archiv.example.com"}Efter att giltighetstiden har löpt ut omdirigeras användaren antingen till redirect_after_expiry eller så visas en 410-sida.
Batch-skapande
POST /v1/codes/batch
Skapar upp till 1 000 QR-koder i en enda förfrågan. Perfekt för massapplikationer.
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 }'Svar (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 }}Lista QR-koder
GET /v1/codes
curl https://qr3.app/v1/codes?status=live&limit=20 \ -H "Authorization: Bearer qr3_sk_..."Query-parametrar:
| Parameter | Typ | Standard | Beskrivning |
|---|---|---|---|
cursor | string | — | Cursor för paginering |
limit | integer | 20 | Resultat per sida (max 100) |
status | string | — | Filter: live, paused, flagged, draft |
Hämta QR-kod
GET /v1/codes/:id
curl https://qr3.app/v1/codes/qr_a1b2c3d4 \ -H "Authorization: Bearer qr3_sk_..."Uppdatera QR-kod
PATCH /v1/codes/:id
Dynamiska QR-koder gör det möjligt att ändra mål-URL:en när som helst — utan att behöva trycka om QR-koden.
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" }'Landningssida & externa länkar
För dynamiska url-koder kan du ställa in is_landing_page: true (vid skapande eller via PATCH). En skanning visar då en sida som qr3 är värd för med kodens offentliga filer och externa länkar, istället för att omdirigera. Externa länkar skickas som en 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 länkar per kod;
labelär 1–100 tecken;urlmåste varahttp(s)(≤ 2048 tecken). - Varje URL kontrolleras med Google Web Risk — en osäker URL returnerar
422. - Om Web Risk inte är tillgängligt vid sparning accepteras länken ändå, men markeras för ny kontroll. Ett dagligt jobb kontrollerar sparade länkar igen (och kontrollerar regelbundet länkar som klassificerats som säkra) och pausar koden automatiskt om en länk senare identifieras som osäker.
"links": []raderar alla länkar. Se guiden för landningssidor.
Radera QR-kod
DELETE /v1/codes/:id
Soft-delete — QR-koden arkiveras, skanningsdata bevaras.
curl -X DELETE https://qr3.app/v1/codes/qr_a1b2c3d4 \ -H "Authorization: Bearer qr3_sk_..."Ladda ner QR-bilder
Alla bildformat är offentligt tillgängliga — ingen autentisering krävs.
| Format | URL | Användning |
|---|---|---|
| SVG (vektor) | /v1/codes/:code/qr.svg | Webb, skalning, digitalt |
| PNG (raster) | /v1/codes/:code/qr.png | E-post, presentationer |
| PDF (vektor) | /v1/codes/:code/qr.pdf | Standard: kvadratisk (endast koden); ?format=a4 för ett utskriftsblad |
| EPS (vektor) | /v1/codes/:code/qr.eps | Professionella tryckarbetsflöden (Adobe, tryckerier) |
Valfritt: ?size=N — Modulstorlek i pixlar (2–20, standard: 4) för SVG, PNG och EPS. PDF:en använder en fast modulstorlek.
Endast PDF: ?format=a4|square — Sidformat (standard: square — endast kod + tyst zon (quiet zone), inget vitt utrymme för A4; a4 för ett utskriftsklart A4-ark)
# SVG für Webcurl https://qr3.app/v1/codes/r7f3Kx/qr.svg
# PNG in hoher Auflösungcurl 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-Blattcurl "https://qr3.app/v1/codes/r7f3Kx/qr.pdf?format=a4" -o qr-a4.pdfKommentarer
Kommentarer möjliggör feedback-loopar mellan byråer och kunder.
GET /v1/codes/:id/comments
POST /v1/codes/:id/comments
PATCH /v1/codes/:id/comments/:commentId
DELETE /v1/codes/:id/comments/:commentId
# Kommentar hinzufügencurl -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 auflistencurl "https://qr3.app/v1/codes/qr_a1b2c3d4/comments?resolved=false" \ -H "Authorization: Bearer qr3_sk_..."
# Kommentar als erledigt markierencurl -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 }'