Για την ενσωμάτωση
Κωδικός QR σε ένα μόνο αίτημα
Προσθήκη γενιάς κωδικού QR στην υπηρεσία σας. Στείλτε τις ρυθμίσεις περιεχομένου και σχεδιασμού μέσω GET και λάβετε ένα PNG ή SVG χωρίς περαιτέρω έλεγχο σάρωσης.
Δωρεάν για πάντα.PNG, SVG και API – χωρίς χρεώσεις ή συνδρομές.
Κωδικός QR. Καμία αναδρομή, καμία λήξη.
GEThttps://qivo.umind.group/
Αίτηση και Πιστοποίηση
Πληκτρολογήστε το κλειδί σας στον τίτλο κλειδιού X-API. Δεν απαιτούνται συνεδρίες επεξεργασίας και cookies. QIVO_API_KEY σε αυτό το παράδειγμα είναι μια μεταβλητή περιβάλλοντος πελατών που περιέχει το κλειδί σας.
curl --fail --show-error --get 'https://qivo.umind.group/' \
--header "X-API-Key: $QIVO_API_KEY" \
--data-urlencode 'data=https://umind.group' \
--data-urlencode 'contentType=url' \
--data-urlencode 'format=svg' \
--data-urlencode 'shape=rounded' \
--data-urlencode 'size=1024' \
--output qr-code.svgΕάν η ενσωμάτωσή σας αποδέχεται μόνο ένα URL, μεταβείτε το κλειδί στη βασική παράμετρο:
https://qivo.umind.group/?key=YOUR_SECRET_KEY&data=https%3A%2F%2Fumind.group&format=png&size=1024Αντικαταστήστε το YOUR_SECRET_KEY με το κλειδί σας. ο τίτλος παίρνει προτεραιότητα πάνω από την παράμετρο κλειδιού. URL κωδικοποίηση παραμέτρων τιμές: # → %23, + → %2B, και & μέσα σε μια τιμή → %26.
Χρησιμοποιήστε HTTPS και κρατήστε το κλειδί στον διακομιστή σας. Μην το τοποθετείτε στο δημόσιο JavaScript. Τα κλειδιά και τα δεδομένα στις URL GET μπορεί να εμφανιστούν στην ιστορία του προγράμματος περιήγησης ή στα αρχεία καταγραφής του διακομιστή. προτιμάτε τον τίτλο για το κλειδί σας.
Παραδείγματα κώδικα
Αποθηκεύστε το κλειδί στο QIVO_API_KEY περιβαλλοντικό μεταβλητό. μην το δημοσιεύσετε στον κώδικα σελίδας.
<?php
$key = getenv('QIVO_API_KEY');
if (!$key) throw new RuntimeException('Set QIVO_API_KEY');
$query = http_build_query([
'data' => 'https://umind.group', 'format' => 'svg',
'shape' => 'rounded', 'size' => 1024,
], '', '&', PHP_QUERY_RFC3986);
$curl = curl_init('https://qivo.umind.group/?' . $query);
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . $key],
CURLOPT_TIMEOUT => 30,
]);
$image = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
if ($image === false || $status !== 200) {
throw new RuntimeException('Qivo request failed: ' . $status);
}
file_put_contents('qr-code.svg', $image);import { writeFile } from 'node:fs/promises';
const key = process.env.QIVO_API_KEY;
if (!key) throw new Error('Set QIVO_API_KEY');
const url = new URL('https://qivo.umind.group/');
url.search = new URLSearchParams({
data: 'https://umind.group', format: 'svg',
shape: 'rounded', size: '1024'
});
const response = await fetch(url, {
headers: { 'X-API-Key': key },
signal: AbortSignal.timeout(30000)
});
if (!response.ok) throw new Error(`Qivo request failed: ${response.status}`);
await writeFile('qr-code.svg', Buffer.from(await response.arrayBuffer()));import os
from pathlib import Path
from urllib.parse import urlencode
from urllib.request import Request, urlopen
key = os.environ['QIVO_API_KEY']
query = urlencode({
'data': 'https://umind.group', 'format': 'svg',
'shape': 'rounded', 'size': 1024,
})
request = Request('https://qivo.umind.group/?' + query,
headers={'X-API-Key': key})
# urlopen raises HTTPError for unsuccessful HTTP responses.
with urlopen(request, timeout=30) as response:
Path('qr-code.svg').write_bytes(response.read())Παραμέτρους σχεδιασμού
| Παράμετρος | Τύπος | Απαιτήσεις | Αξίες |
|---|---|---|---|
X-API-Key / key | string | Απαιτείται | Μυστικό κλειδί: επικεφαλής ή παράμετρο GET |
data | string | Το κείμενο και το URL | Απαραίτητο περιεχόμενο για κείμενο/URL |
contentType | string | Εναλλακτικά | texturlwifivcardwhatsapptelegramphoneviberemailsmsΥποκατάσταση: text |
format | string | Εναλλακτικά | pngsvgΥποκατάσταση: png |
size | integer | Εναλλακτικά | 25651210242048Υποκατάσταση: 1024 |
shape | string | Εναλλακτικά | squaresoftroundeddotsleaf-softleafhorizontalverticalpointednotchedstardiamondxx-roundedplusplus-roundedheartsparkleconfettiΥποκατάσταση: square |
border | string | Εναλλακτικά | squarecircleroundedskewdrop-tldrop-brleafleaf-inner-brleaf-circleleaf-inner-tlsquare-circlesoft-tlsoft-brsoft-leafroughΥποκατάσταση: square |
center | string | Εναλλακτικά | squarecircleroundedskewroughdrop-tldrop-brleafgearstardiamondxx-roundedplusplus-roundedheartΥποκατάσταση: square |
foreground / eyeColor | string | Εναλλακτικά | #RRGGBB Υποκατάσταση: #192b39 |
background | string | Εναλλακτικά | #RRGGBB Υποκατάσταση: #ffffff |
level | string | Εναλλακτικά | LMQHΥποκατάσταση: M |
quietZone | integer | Εναλλακτικά | 0 - 12 μονάδες Υποκατάσταση: 4 |
logo | string | Εναλλακτικά | nonewhatsapplinklocationwificredentialemailscanbellmenuscan-mescan-me-v2paypalbitcoinsparkplusdiamondΥποκατάσταση: none |
logoScale | integer | Εναλλακτικά | 12–30 Υποκατάσταση: 24 |
Οι κωδικοί με ένα λογότυπο χρησιμοποιούν αυτόματα το επίπεδο H. Το GET υποστηρίζει ενσωματωμένα εικονίδια, δεν υποστηρίζονται ανεβάσεις αρχείων και εξωτερικές διευθύνσεις URL λογότυπου.
Τύποι περιεχομένου
Τα πεδία εξαρτώνται από το περιεχόμενοType. για τις διευθύνσεις URL, δώστε μια πλήρη διεύθυνση https:// ή http://. για τους αριθμούς τηλεφώνου, συμπεριλαμβάνετε τον κωδικό χώρας.
| contentType | Απαιτούμενα πεδία | Εναλλακτικά πεδία |
|---|---|---|
| text / url | data | — |
| phone / viber | phone | — |
| whatsapp / sms | phone | message |
| telegram | telegram | — |
| subject, message | ||
| wifi | ssid; wifiSecurity≠nopass → wifiPassword | wifiSecurity (WPA), wifiHidden (0) |
| vcard | firstName / lastName | organization, jobTitle, phone, email, website, address |
https://qivo.umind.group/?key=YOUR_SECRET_KEY&contentType=phone&phone=%2B380671234567&format=svgΠυροσβεστικές απαντήσεις
Μια επιτυχημένη απάντηση είναι το ίδιο το αρχείο εικόνας, χωρίς JSON ερεθιστή. Content-Type είναι image/png ή image/svg+xml. Τα σφάλματα επιστρέφονται ως JSON:
{"error":"Invalid API key."}- 200 — Φωτογραφία που δημιουργήθηκε.
- 401 — Απαλλαγμένο ή ανεπιθύμητο κλειδί.
- 405 — Το GET είναι απαραίτητο.
- 422 — Ακυρωμένες παραμέτρους ή έλλειψη περιεχομένου.
- 429 — Το κατώτατο όριο υπερβαίνει· Retry-After: 60.
- 503 — Η πρόσβαση στο API δεν ρυθμίζεται ή η προστασία δεν είναι προσωρινά διαθέσιμη.
- 500 — Εσωτερικό σφάλμα γενιάς.
Περιορισμοί και επικύρωση
Το προεπιλεγμένο όριο είναι 60 αιτήσεις ανά λεπτό ανά IP. Το κρυπτογραφημένο περιεχόμενο περιορίζεται σε 800 bytes. Η παραγωγή PNG υποστηρίζει μέχρι 2048 × 2048 px. Το SVG διατηρεί μορφές vector.
Το API επικυρώνει τις μορφές παραμέτρων, το μέγεθος και την αντίθεση, αλλά δεν εκτελεί έναν αποκωδικοποιητή ή ελέγχει αν οι QR σάρωση. δοκιμάστε διακοσμητικές συνδυασμούς και εκτυπωμένη έκδοση με μια κάμερα.