API Κωδικών QR
Επισκόπηση
Το Codes API είναι η καρδιά του qr3.app. Με αυτό μπορείτε να δημιουργείτε, να ενημερώνετε και να διαγράφετε δυναμικούς και στατικούς κωδικούς QR.
Βασικό URL: https://qr3.app/v1/codes
Δεσμευτική σύμβαση REST
Η ακόλουθη σύμβαση ισχύει για όλους τους πελάτες:
- Το
POST /v1/codesδέχεται μόνο τους τύπουςurl,vcard,wifi,email,smsκαιlocation. Τα πεδία είναι επίπεδα:url; τουλάχιστονvcard_first_nameήvcard_last_name;wifi_ssid;email_to;sms_phone; ή και τα δύοlocation_latκαιlocation_lng. - Μόνο οι κωδικοί
urlμπορούν να είναι δυναμικοί. Τα αιτήματα δημιουργίας μπορούν προαιρετικά να περιλαμβάνουνexpires_atως χρονική σήμανση ISO 8601· ταab_enabled,ab_target_url_bκαιab_weight_a(προορισμοί A/B) γίνονται δεκτά για δυναμικούς κωδικούςurl· τοredirect_after_expiryδεν αποτελεί μέρος του συμβολαίου δημιουργίας. - Το
GET /v1/codesυποστηρίζει μόνοlimit,cursorκαιstatus(live,paused,flagged,draft). - Το
POST /v1/codes/batchδέχεταιurl,vcardκαιwifi. Το όριο είναι 10 για Free, 500 για Pro και 1.000 εγγραφές για Business/Agency/Enterprise ανά αίτημα. Οι έλεγχοι URL εκτελούνται συγχρονισμένα για έως 50 στοιχεία URL· πάνω από 50 απαιτείταιskip_url_scan: true.
Δημιουργία Κωδικού QR
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,q1Απόκριση (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
| Τύπος | Περιγραφή | Υποχρεωτικά πεδία |
|---|---|---|
url | URL ιστότοπου (δυναμικό ή στατικό) | url |
vcard | Επαγγελματική κάρτα (vCard 3.0) | vcard_first_name ή vcard_last_name |
wifi | Ρύθμιση παραμέτρων Wi-Fi | wifi_ssid |
email | E-mail (mailto:) | email_to |
sms | SMS | sms_phone |
location | Τοποθεσία (geo:) | location_lat, location_lng |
Μαζική Δημιουργία
POST /v1/codes/batch
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 }'Απόκριση (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
GET /v1/codes
curl https://qr3.app/v1/codes?status=live&limit=20 \ -H "Authorization: Bearer qr3_sk_..."Παράμετροι ερωτήματος (Query Parameters):
| Παράμετρος | Τύπος | Προεπιλογή | Περιγραφή |
|---|---|---|---|
cursor | string | — | Δρομέας (cursor) για σελιδοποίηση |
limit | integer | 20 | Αποτελέσματα ανά σελίδα (μέγ. 100) |
status | string | — | Φίλτρο: live, paused, flagged, draft |
Ανάκτηση Κωδικού QR
GET /v1/codes/:id
curl https://qr3.app/v1/codes/qr_a1b2c3d4 \ -H "Authorization: Bearer qr3_sk_..."Ενημέρωση Κωδικού QR
PATCH /v1/codes/:id
Update contract: url may be changed only for an existing type: "url" code, and its value must use http:// or https://. Other code types must not receive url; invalid requests return 422.
Οι δυναμικοί κωδικοί QR σάς επιτρέπουν να αλλάζετε το URL προορισμού ανά πάσα στιγμή — χωρίς να χρειάζεται να εκτυπώσετε ξανά τον κωδικό QR.
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" }'Σελίδα Προορισμού & Εξωτερικοί Σύνδεσμοι
Για δυναμικούς κωδικούς url, μπορείτε να ορίσετε is_landing_page: true (κατά τη δημιουργία ή μέσω PATCH). Μια σάρωση θα εμφανίσει τότε μια σελίδα που φιλοξενείται από το qr3 με τα δημόσια αρχεία και τους εξωτερικούς συνδέσμους του κωδικού, αντί να κάνει ανακατεύθυνση. Οι εξωτερικοί σύνδεσμοι μεταβιβάζονται ως πίνακας links:
{ "is_landing_page": true, "links": [ { "label": "Datenblatt", "url": "https://example.com/datenblatt.pdf" }, { "label": "Zertifikat", "url": "https://example.com/zertifikat.pdf" } ]}- 0–20 σύνδεσμοι ανά κωδικό. Το
labelπρέπει να είναι 1–100 χαρακτήρες. Τοurlπρέπει να είναιhttp(s)(≤ 2048 χαρακτήρες). - Κάθε URL ελέγχεται με το Google Web Risk — ένα μη ασφαλές URL επιστρέφει
422. - Εάν το Web Risk δεν είναι προσβάσιμο κατά την αποθήκευση, ο σύνδεσμος γίνεται παρ’ όλα αυτά αποδεκτός, αλλά επισημαίνεται για επανέλεγχο. Μια καθημερινή εργασία ελέγχει ξανά τους αποθηκευμένους συνδέσμους (και επανελέγχει περιοδικά τους συνδέσμους που έχουν χαρακτηριστεί ως ασφαλείς) και θέτει σε παύση αυτόματα τον κωδικό, εάν κάποιος σύνδεσμος αναγνωριστεί αργότερα ως μη ασφαλής.
- Το
"links": []διαγράφει όλους τους συνδέσμους. Δείτε τον οδηγό σελίδας προορισμού.
Διαγραφή Κωδικού QR
DELETE /v1/codes/:id
Ήπια διαγραφή (Soft-Delete) — ο κωδικός QR αρχειοθετείται, τα δεδομένα σάρωσης διατηρούνται.
Ένα δεύτερο DELETE στον ίδιο κώδικα επιστρέφει 404, ακόμη και αν και τα δύο αιτήματα φτάσουν ταυτόχρονα. Το webhook qr.deleted αποστέλλεται ακριβώς μία φορά.
curl -X DELETE https://qr3.app/v1/codes/qr_a1b2c3d4 \ -H "Authorization: Bearer qr3_sk_..."Λήψη Εικόνων QR
Όλες οι μορφές εικόνας είναι δημόσια προσβάσιμες — δεν απαιτείται έλεγχος ταυτότητας.
| Μορφή | URL | Χρήση |
|---|---|---|
| SVG (Διανυσματικό) | /v1/codes/:code/qr.svg | Ιστός, Κλιμάκωση, Ψηφιακά μέσα |
| PNG (Ψηφιογραφικό) | /v1/codes/:code/qr.png | E-mail, Παρουσιάσεις |
| PDF (Διανυσματικό) | /v1/codes/:code/qr.pdf | Προεπιλογή: τετράγωνο (μόνο ο κώδικας), ?format=a4 για φύλλο εκτύπωσης |
| EPS (Διανυσματικό) | /v1/codes/:code/qr.eps | Επαγγελματικές ροές εργασίας εκτύπωσης (Adobe, τυπογραφεία) |
Προαιρετικά: ?size=N — Μέγεθος στοιχείου (module) σε pixel (2–20, προεπιλογή: 4) για SVG, PNG και EPS. Το PDF χρησιμοποιεί σταθερό μέγεθος στοιχείου.
Μόνο για PDF: ?format=a4|square — Μορφή σελίδας (προεπιλογή: square — μόνο ο κώδικας + Quiet Zone, χωρίς λευκό χώρο A4, a4 για ένα έτοιμο προς εκτύπωση φύλλο A4)
# 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.pdfΧρώματα και διόρθωση σφαλμάτων
Και οι τέσσερις διαδρομές εικόνας δέχονται τρεις προαιρετικές παραμέτρους. Ισχύουν για τη συγκεκριμένη ανάκτηση και υπερισχύουν των χρωμάτων που είναι αποθηκευμένα στον κώδικα (επόμενη ενότητα).
| Παράμετρος | Τιμές | Προεπιλογή | SVG, PNG | PDF, EPS |
|---|---|---|---|---|
fg | Hex RRGGBB ή RGB | 000000 | σχεδιάζεται | σχεδιάζεται ως χρώμα εκτύπωσης |
bg | Hex όπως το fg ή transparent | ffffff | σχεδιάζεται | σχεδιάζεται ως χρώμα εκτύπωσης |
ecc | L, M, Q, H | M | εφαρμόζεται | εφαρμόζεται |
- Τρόπος γραφής: Δεν υπάρχει διάκριση πεζών-κεφαλαίων, το
#είναι προαιρετικό. Αν το στείλετε, κωδικοποιήστε το ως%23. - Οι μη έγκυρες τιμές θεωρούνται ως μη ορισμένες. Το
?fg=lilaεπιστρέφει το χρώμα που είναι αποθηκευμένο στον κώδικα, ή το κανονικό μαύρο εάν δεν υπάρχει αποθηκευμένο χρώμα, με κωδικό200και ποτέ σφάλμα. Μόνο ένα ρητό?fg=000000επιβάλλει το μαύρο χρώμα. bg=transparentεπιστρέφει ένα SVG, PDF ή EPS χωρίς φόντο και ένα PNG με πραγματικό κανάλι άλφα. Το υπόβαθρο στο οποίο τοποθετείται ο κώδικας πρέπει να είναι ανοιχτόχρωμο και να αφήνει ελεύθερη μια ζώνη ησυχίας 4 μονάδων γύρω-γύρω. Ένας σκούρος κώδικας σε σκούρο υπόβαθρο δεν είναι αναγνώσιμος.- PDF και EPS γράφουν το μαύρο και το γκρι ως διαβάθμιση του γκρι (μόνο μαύρη πλάκα) και οποιοδήποτε άλλο χρώμα ως CMYK σε ακέραια ποσοστά, για παράδειγμα το
1F4E79ως C74 M36 Y0 K53. Μόλις επιλεγεί ένα χρώμα, πίσω από τον κώδικα και τη ζώνη ησυχίας του υπάρχει ένα αδιαφανές γέμισμα, λευκό ή στο χρώμα τουbg, όπως και στο SVG. Χωρίς χρώματα, και τα δύο αρχεία παραμένουν αμετάβλητα. Μετατροπή και όρια: Χρώματα στην εκτύπωση. - Αντίθεση: Η διαδρομή εικόνας δεν την ελέγχει. Συνιστάται τουλάχιστον 4:1 και σκούρες μονάδες σε ανοιχτόχρωμο υπόβαθρο. Το
#1F4E79σε λευκό έχει 8,7:1, το#ff6600σε λευκό μόνο 2,9:1. eccαλλάζει το μοτίβο των κουκκίδων, όχι το περιεχόμενο. Ένας εκτυπωμένος κώδικας συνεχίζει να λειτουργεί, αλλά μην αναμιγνύετε παλιά και νέα αρχεία εκτύπωσης. ΤοQή τοHκαθιστούν τον κώδικα πιο ανθεκτικό, για παράδειγμα σε κυματοειδές χαρτόνι. Ένα λογότυπο επιβάλλει πάντα τοH.- Με λογότυπο η περιοχή πίσω από το λογότυπο παραμένει λευκή, ακόμη και με έγχρωμο ή διαφανές φόντο.
- Προσωρινή μνήμη: Μόνο η πραγματική προεπιλεγμένη εικόνα (μαύρο σε λευκό, διόρθωση σφαλμάτων M, χωρίς λογότυπο) παρέχεται ως αμετάβλητη για 24 ώρες· κάθε άλλη απεικόνιση για 5 λεπτά. Για PDF και EPS, οποιοδήποτε καθορισμένο υπόβαθρο θεωρείται ως απόκλιση: το
bg=ffffffσχεδιάζει εκεί ένα λευκό γέμισμα που δεν έχει το προεπιλεγμένο αρχείο. - Πρόγραμμα χρέωσης: Τα χρώματα και η διόρθωση σφαλμάτων είναι διαθέσιμα σε κάθε πρόγραμμα, ακόμη και στο δωρεάν.
# Dark blue code on whitecurl "https://qr3.app/v1/codes/r7f3Kx/qr.svg?fg=1F4E79" -o qr-blue.svg
# Transparent PNG for a layout on a light surfacecurl "https://qr3.app/v1/codes/r7f3Kx/qr.png?size=10&bg=transparent" -o qr-transparent.png
# More robust for corrugated board: error correction Qcurl "https://qr3.app/v1/codes/r7f3Kx/qr.pdf?ecc=Q" -o qr-q.pdf// @qr3/sdk 1.2.0 or later — imageUrl() only builds the URL, it sends no request// Dark blue code on whiteqr3.codes.imageUrl('r7f3Kx', { format: 'svg', fg: '1F4E79' });// → https://qr3.app/v1/codes/r7f3Kx/qr.svg?fg=1F4E79
// Transparent PNG for a layout on a light surfaceqr3.codes.imageUrl('r7f3Kx', { format: 'png', size: 10, bg: 'transparent' });
// More robust for corrugated board: error correction Qqr3.codes.imageUrl('r7f3Kx', { format: 'pdf', ecc: 'Q' });Αποθήκευση χρωμάτων στον κώδικα
Το PATCH /v1/codes/:id αποθηκεύει χρώματα ως appearance στον κώδικα. Οι διαδρομές εικόνας τα σχεδιάζουν στη συνέχεια από προεπιλογή, χωρίς παραμέτρους.
curl -X PATCH https://qr3.app/v1/codes/qr_a1b2c3d4 \ -H "Authorization: Bearer qr3_sk_..." \ -H "Content-Type: application/json" \ -d '{"appearance": {"foreground_color": "#1F4E79"}}'// @qr3/sdk 1.2.0 or laterconst code = await qr3.codes.update('qr_a1b2c3d4', { appearance: { foreground_color: '#1F4E79' },});code.appearance; // { foreground_color: '#1F4E79', background_color: null }code.issues; // contrast check findings, absent when there are noneΑπάντηση (HTTP 200, συντομευμένη):
{ "data": { "id": "qr_a1b2c3d4", "short_code": "r7f3Kx", "appearance": { "foreground_color": "#1F4E79", "background_color": null } }, "meta": { "request_id": "req_xyz", "issues": [] }}- Τιμές:
foreground_colorως#RRGGBB,background_colorως#RRGGBBήtransparent. Άλλα κλειδιά επιστρέφουν400. - Συγχώνευση: Ένα πεδίο που παραλείπεται διατηρεί την αποθηκευμένη του τιμή. Το
nullεπαναφέρει ένα πεδίο, το"appearance": nullκαι τα δύο. Το μαύρο και το λευκό δεν αποθηκεύονται· η απάντηση τα εμφανίζει ωςnull. - Κάθε απάντηση κώδικα περιέχει το
appearance, όπως και τα webhookqr.createdκαιqr.updated. - Σειρά προτεραιότητας στις διαδρομές εικόνας: πρώτα η παράμετρος, μετά το αποθηκευμένο χρώμα, μετά η προεπιλογή. Το
?fg=000000επομένως παρέχει το μαύρο αρχείο εκτύπωσης ενός έγχρωμου κώδικα. - Ενσωματωμένες εικόνες: Μια URL εικόνας ακολουθεί τα αποθηκευμένα χρώματα, εφόσον δεν τα ορίζει η ίδια με
fgκαιbg: μια URL χωρίς παραμέτρους και για τα δύο χρώματα, η?fg=000000για το φόντο, η?ecc=Qεπίσης και για τα δύο. Μετά από μια αλλαγή χρώματος, μια σελίδα που ενσωματώνει μια τέτοια URL μπορεί να εμφανίζει ακόμα την παλιά εικόνα: για έως και 24 ώρες εάν η URL επέστρεφε μέχρι τότε την προεπιλεγμένη εικόνα (μαύρο σε λευκό, διόρθωση σφαλμάτων M, χωρίς λογότυπο), διαφορετικά για έως και 5 λεπτά. Η λύση είναι μια δική σας παράμετρος στη URL που αλλάζει με κάθε αλλαγή χρώματος, όπως?v=2ή τοupdated_atτου κώδικα όπως στο Dashboard. Οι διαδρομές εικόνας αγνοούν τις άγνωστες παραμέτρους. - Η διόρθωση σφαλμάτων δεν αποθηκεύεται ποτέ. Επιλέγεται ανά λήψη με
?ecc=. - Μόνο μέσω
PATCH: ΤοPOST /v1/codes, το batch και η εισαγωγή απορρίπτουν τοappearanceμε422. - Τα PDF και EPS σχεδιάζουν τα αποθηκευμένα χρώματα ως χρώματα εκτύπωσης, ακριβώς όπως και τις παραμέτρους. Επειδή το λευκό δεν αποθηκεύεται ποτέ, ένας κώδικας με αποθηκευμένο χρώμα προσκηνίου αποκτά εκεί ένα λευκό γέμισμα, όπως και στο SVG.
Έλεγχος αντίθεσης
Το API ελέγχει το ζεύγος που προκύπτει από το αίτημα και την αποθηκευμένη τιμή:
| Επίπεδο | Πότε | Απάντηση |
|---|---|---|
blocked | Αντίθεση κάτω από 1,5:1 | 422, τίποτα δεν αποθηκεύεται |
critical | κάτω από 2:1 ή διαφορά φωτεινότητας κάτω από 0,30· μια προειδοποίηση μαζί με ένα λογότυπο· οποιοδήποτε διαφανές υπόβαθρο | 200 με meta.issues |
warning | κάτω από 4:1 ή διαφορά φωτεινότητας κάτω από 0,50· φωτεινές μονάδες σε σκούρο φόντο | 200 με meta.issues |
| ok | όλα τα άλλα | 200, το meta.issues είναι κενό |
Κάθε καταχώριση στο meta.issues έχει code, severity, field, message και προαιρετικά hints όπως contrast_ratio — την ίδια μορφή με τα μηνύματα συμμόρφωσης ενός Ψηφιακού Διαβατηρίου Προϊόντος. Ένα διαφανές υπόβαθρο δεν αποκλείεται ποτέ, επειδή ένας φωτεινός κώδικας σε σκούρα συσκευασία αποτελεί πραγματική περίπτωση χρήσης. Το υπόβαθρο παρ’ όλα αυτά χρειάζεται σαφή αντίθεση και μια ελεύθερη ζώνη ησυχίας (quiet zone) 4 μονάδων γύρω-γύρω.
Η μεταφόρτωση και η αφαίρεση ενός λογοτύπου (POST και DELETE /v1/codes/:id/logo) ελέγχουν επίσης τα αποθηκευμένα χρώματα και επιστρέφουν τα ευρήματα ομοίως στο meta.issues: με ένα λογότυπο μια προειδοποίηση γίνεται critical, χωρίς αυτό γίνεται ξανά προειδοποίηση.
Εάν ένα άλλο αίτημα τροποποιήσει τον ίδιο κώδικα την ίδια στιγμή, το API εφαρμόζει τις αλλαγές στην πιο πρόσφατη κατάσταση. Μόνο εάν αυτό αποτύχει τρεις συνεχόμενες φορές, απαντά με 409· στη συνέχεια, ο client φορτώνει ξανά τον κώδικα και επαναλαμβάνει την αλλαγή.
Λογότυπο
POST /v1/codes/:id/logo
Αίτημα Multipart, πεδίο file: PNG, JPEG ή WebP, το πολύ 1 MB, αναγνωρίζεται από τα Magic Bytes. Κανονικοποιεί την εικόνα σε ένα διαφανές 512×512 PNG και αντικαθιστά ένα υπάρχον λογότυπο.
curl -X POST https://qr3.app/v1/codes/qr_a1b2c3d4/logo \ -H "Authorization: Bearer qr3_sk_..." \Απάντηση (HTTP 201): ο ενημερωμένος κώδικας, με ορισμένο το logo_file_id.
DELETE /v1/codes/:id/logo
Αφαιρεί το λογότυπο και διαγράφει το αποθηκευμένο αντικείμενο. Idempotent — μια κλήση χωρίς να υπάρχει ήδη λογότυπο εξακολουθεί να επιστρέφει 200.
Εάν ένα άλλο αίτημα τροποποιήσει το λογότυπο του ίδιου κώδικα την ίδια στιγμή (μια δεύτερη μεταφόρτωση ή μια αφαίρεση), τα POST και DELETE /v1/codes/:id/logo απαντούν με 409 (errors/conflict) και δεν αλλάζουν τίποτα· μια μεταφορτωμένη εικόνα απορρίπτεται. Φορτώστε ξανά τον κώδικα και δοκιμάστε ξανά. Δύο ταυτόχρονες κλήσεις του DELETE /v1/codes/:id/logo δεν αποτελούν διένεξη· και οι δύο επιστρέφουν 200.
Εάν έχει οριστεί, και τα τέσσερα αρχεία — qr.svg, qr.png, qr.pdf και qr.eps — ενσωματώνουν τα pixel του λογοτύπου και αυξάνουν τη διόρθωση σφαλμάτων σε H. Το πλήρες συμβόλαιο — συμπεριλαμβανομένου του ποια αλλαγή (προσθήκη/αφαίρεση έναντι αντικατάστασης) αλλάζει το μοτίβο κουκκίδων — καθώς και οδηγίες εκτύπωσης βρίσκονται στο Λογότυπο στον κώδικα QR.
Σχόλια
Τα σχόλια επιτρέπουν κύκλους ανατροφοδότησης (feedback loops) μεταξύ διαφημιστικών εταιρειών (agencies) και πελατών.
GET /v1/codes/:id/comments
POST /v1/codes/:id/comments
PATCH /v1/codes/:id/comments/:commentId
DELETE /v1/codes/:id/comments/:commentId
Τα σχόλια που δημιουργούνται από το Dashboard αποδίδονται στον χρήστη που τα δημιούργησε (author_id), ενώ τα σχόλια που δημιουργούνται μέσω απλών API-Keys παραμένουν χωρίς απόδοση (author_id: null). Διαγραφή ενός σχολίου επιτρέπεται μόνο από τον ίδιο τον συντάκτη του ή από έναν org_admin/ws_admin — τα απλά API-Keys μπορούν να διαγράψουν μόνο σχόλια χωρίς απόδοση που έχουν δημιουργηθεί μέσω API.
# 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 }'