QivoQR-Code-Werkstatt
QR-Code erstellen

Für Integrationen

QR-Code mit einer Anfrage

QR-Code-Generierung in deinen Dienst integrieren. Inhalt und Design per GET senden und PNG oder SVG ohne zusätzliche Leseprüfung erhalten.

Kostenlos. Für immer.PNG, SVG und API — ohne Gebühren oder Abos.

Direkte QR-Codes. Keine Weiterleitungen. Kein Ablaufdatum.

GEThttps://qivo.umind.group/

Anfrage und Authentifizierung

Schlüssel im Header X-API-Key senden. Editor-Sitzung und Cookies sind nicht nötig. QIVO_API_KEY ist im Beispiel eine Umgebungsvariable des Clients mit deinem Schlüssel.

curl-Beispiel
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

Wenn die Integration nur URLs akzeptiert, den Schlüssel als Parameter key senden:

GET-URL-Beispiel
https://qivo.umind.group/?key=YOUR_SECRET_KEY&data=https%3A%2F%2Fumind.group&format=png&size=1024

YOUR_SECRET_KEY durch deinen Schlüssel ersetzen. Der Header hat Vorrang. URL-Werte codieren: # → %23, + → %2B, & innerhalb eines Werts → %26.

HTTPS verwenden und den Schlüssel auf dem Server aufbewahren, nicht in öffentlichem JavaScript. URL-Daten können in Verlauf und Logs landen; den Schlüssel bevorzugt im Header senden.

Code Beispiele

Speichern Sie den Schlüssel in der QIVO_API_KEY Umgebung Variable; veröffentlichen Sie ihn nicht in Seitencode.

qr-code.php
<?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);
qr-code.mjs
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()));
qr-code.py
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())

Designparameter

ParameterTypAnforderungWerte
X-API-Key / keystringerforderlich
Geheimschlüssel: Header oder GET-Parameter
datastringText und URL
Erforderlicher Inhalt für text/url
contentTypestringOptional
texturlwifivcardwhatsapptelegramphoneviberemailsms
Standard: text
formatstringOptional
pngsvg
Standard: png
sizeintegerOptional
25651210242048
Standard: 1024
shapestringOptional
squaresoftroundeddotsleaf-softleafhorizontalverticalpointednotchedstardiamondxx-roundedplusplus-roundedheartsparkleconfetti
Standard: square
borderstringOptional
squarecircleroundedskewdrop-tldrop-brleafleaf-inner-brleaf-circleleaf-inner-tlsquare-circlesoft-tlsoft-brsoft-leafrough
Standard: square
centerstringOptional
squarecircleroundedskewroughdrop-tldrop-brleafgearstardiamondxx-roundedplusplus-roundedheart
Standard: square
foreground / eyeColorstringOptional
#RRGGBB
Standard: #192b39
backgroundstringOptional
#RRGGBB
Standard: #ffffff
levelstringOptional
LMQH
Standard: M
quietZoneintegerOptional
0–12 Module
Standard: 4
logostringOptional
nonewhatsapplinklocationwificredentialemailscanbellmenuscan-mescan-me-v2paypalbitcoinsparkplusdiamond
Standard: none
logoScaleintegerOptional
12–30
Standard: 24

Mit Logo wird automatisch H verwendet. GET unterstützt eingebaute Symbole, keine Datei-Uploads oder externen Logo-URLs.

Inhaltstypen

Die Felder hängen von contentType ab. URLs vollständig mit https:// oder http:// und Telefonnummern mit Landesvorwahl angeben.

contentTypeerforderliche FelderOptionelle Felder
text / urldata
phone / viberphone
whatsapp / smsphonemessage
telegramtelegram
emailemailsubject, message
wifissid; wifiSecurity≠nopass → wifiPasswordwifiSecurity (WPA), wifiHidden (0)
vcardfirstName / lastNameorganization, jobTitle, phone, email, website, address
Telefonbeispiel
https://qivo.umind.group/?key=YOUR_SECRET_KEY&contentType=phone&phone=%2B380671234567&format=svg

API-Antworten

Eine erfolgreiche Antwort ist die Bilddatei ohne JSON-Hülle. Content-Type: image/png oder image/svg+xml. Fehler werden als JSON ausgegeben:

JSON
{"error":"Invalid API key."}
  • 200 — Bild erzeugt.
  • 401 — Schlüssel fehlt oder ist ungültig.
  • 405 — GET erforderlich.
  • 422 — Ungültige Parameter oder fehlender Inhalt.
  • 429 — Limit überschritten; Retry-After: 60.
  • 503 — API nicht eingerichtet oder Schutz vorübergehend nicht verfügbar.
  • 500 — Interner Generierungsfehler.

Limits und Validierung

Standardmäßig 60 Anfragen pro Minute und IP, maximal 800 Bytes codierter Inhalt und PNG bis 2048 × 2048 px. SVG bewahrt Vektorformen.

Die API prüft Parameter, Größe und Kontrast, führt aber keinen Decoder aus. Dekorative Designs und Drucke mit der Kamera testen.

Zugang erhalten

Die API ist kostenlos und bleibt immer frei.Füllen Sie das kurze Formular, um einen geheimen Schlüssel zu beantragen.

Alle drei Felder sind erforderlich. Die Formulardaten werden an das Qivo-Team geschickt, um Ihre Anfrage und Antwort zu überprüfen.