QivoQR code studio
Creëren van QR code

Voor integratie

Een QR-code in één verzoek

Stuur inhoud en ontwerpinstellingen via GET en ontvang een PNG of SVG zonder extra scancheck.

Vrij en voor altijd.PNG, SVG en API – geen kosten of abonnementen.

Direct QR codes. Geen redirect, geen beëindiging.

GEThttps://qivo.umind.group/

Verzoek en authenticatie

Geef uw sleutel in de X-API-Key header. Editor sessies en cookies zijn niet vereist. QIVO_API_KEY in dit voorbeeld is een cliëntomgeving variabele die uw sleutel bevat.

Curl voorbeeld
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

Als uw integratie slechts een URL accepteert, ga dan de sleutel in de sleutelparameters door:

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

Vervang YOUR_SECRET_KEY met uw sleutel. de header neemt voorrang over de sleutelparameters. URL-encode parameter waarden: # → %23, + → %2B, en & binnen een waarde → %26.

Gebruik HTTPS en houd de sleutel op uw server. Laat het niet in openbaar JavaScript. Keys en gegevens in GET URL's kunnen verschijnen in de browsergeschiedenis of serverlogs; voorziet de header voor uw sleutel.

Code voorbeelden

Speel de sleutel in de QIVO_API_KEY omgeving variabele; publiceer het niet in pagina-code.

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())

Ontwerpparameters

ParametersTypeVerplichtingwaarden
X-API-Key / keystringvereist
Geheime sleutel: header of GET parameter
datastringVoor tekst en url
Beperkte inhoud voor tekst/url
contentTypestringOptieel
texturlwifivcardwhatsapptelegramphoneviberemailsms
Default: text
formatstringOptieel
pngsvg
Default: png
sizeintegerOptieel
25651210242048
Default: 1024
shapestringOptieel
squaresoftroundeddotsleaf-softleafhorizontalverticalpointednotchedstardiamondxx-roundedplusplus-roundedheartsparkleconfetti
Default: square
borderstringOptieel
squarecircleroundedskewdrop-tldrop-brleafleaf-inner-brleaf-circleleaf-inner-tlsquare-circlesoft-tlsoft-brsoft-leafrough
Default: square
centerstringOptieel
squarecircleroundedskewroughdrop-tldrop-brleafgearstardiamondxx-roundedplusplus-roundedheart
Default: square
foreground / eyeColorstringOptieel
#RRGGBB
Default: #192b39
backgroundstringOptieel
#RRGGBB
Default: #ffffff
levelstringOptieel
LMQH
Default: M
quietZoneintegerOptieel
0 - 12 modules
Default: 4
logostringOptieel
nonewhatsapplinklocationwificredentialemailscanbellmenuscan-mescan-me-v2paypalbitcoinsparkplusdiamond
Default: none
logoScaleintegerOptieel
12–30
Default: 24

Codes met een logo gebruiken automatisch niveau H. GET ondersteunt ingebouwde iconen; bestand uploads en externe logo URL's zijn niet ondersteund.

Inhoudstypen

De velden zijn afhankelijk van contentType. voor URL's, een volledige https:// of http:// adres. voor telefoonnummers, de landcode.

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

Vuur reacties

Een succesvolle reactie is het beeldbestand zelf, zonder een JSON-verwijder. Content-Type is image/png of image/svg+xml.

JSON
{"error":"Invalid API key."}
  • 200 — De afbeelding wordt gegenereerd.
  • 401 — Vermijd of ongeldig sleutel.
  • 405 — GET is vereist.
  • 422 — Invalide parameters of ontbrekende inhoud.
  • 429 — Rate limit overschreden; Retry-After: 60.
  • 503 — API-toegang is niet geconfigureerd of bescherming is tijdelijk niet beschikbaar.
  • 500 — Een interne generatiefout.

Limieten en validatie

De standaardgrens is 60 verzoeken per minuut per IP. Encoded content is beperkt tot 800 byten. PNG output ondersteunt tot 2048 × 2048 px. SVG behoudt vectorvormingen.

De API valideren parametersformaat, grootte en contrast, maar werkt niet met een decoder of controleert of de QR scans.

toegang krijgen

De API is gratis en blijft altijd gratis.Vul het korte formulier om een geheime sleutel te vragen.

Alle drie velden zijn vereist.De formuliergegevens worden naar het Qivo-team gestuurd om uw verzoek en antwoord te beoordelen.