QivoStudio di codice QR
Creare il codice QR

per l’integrazione

Un codice QR in una sola richiesta

Invia i contenuti e le impostazioni di design attraverso GET e riceve un PNG o SVG senza ulteriore controllo di scansione.

Libero e per sempre.PNG, SVG e API - nessuna tassa o abbonamenti.

Codice QR diretto. Nessuna trasmissione, nessuna scadenza.

GEThttps://qivo.umind.group/

Richiesta e autenticazione

Passare la tua chiave nell'anello X-API-Key. sessioni editoriali e cookie non sono richiesti. QIVO_API_KEY in questo esempio è una variabile di ambiente client contenente la tua chiave.

L'esempio di curl
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

Se la tua integrazione accetta solo un URL, passare la chiave nel parametro chiave:

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

Il titolo prende precedenza sul parametro chiave. URL codifica valori di parametri: # → %23, + → %2B, e & dentro un valore → %26.

Utilizzare HTTPS e tenere la chiave sul tuo server. Non metterla in JavaScript pubblico. Le chiavi e i dati nelle URL GET possono apparire nella storia del browser o nei log del server; preferisci il titolo per la tua chiave.

Esempi di codice

Mantenere la chiave nella variabile ambiente QIVO_API_KEY; non pubblicarla nel codice di pagina.

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

Parametri di design

ParametriTipoRequisitiValori
X-API-Key / keystringrichiesto
chiave segreta: capo o parametro GET
datastringIl testo e l'URL
Contenuto richiesto per testo/url
contentTypestringOpzionale
texturlwifivcardwhatsapptelegramphoneviberemailsms
di default: text
formatstringOpzionale
pngsvg
di default: png
sizeintegerOpzionale
25651210242048
di default: 1024
shapestringOpzionale
squaresoftroundeddotsleaf-softleafhorizontalverticalpointednotchedstardiamondxx-roundedplusplus-roundedheartsparkleconfetti
di default: square
borderstringOpzionale
squarecircleroundedskewdrop-tldrop-brleafleaf-inner-brleaf-circleleaf-inner-tlsquare-circlesoft-tlsoft-brsoft-leafrough
di default: square
centerstringOpzionale
squarecircleroundedskewroughdrop-tldrop-brleafgearstardiamondxx-roundedplusplus-roundedheart
di default: square
foreground / eyeColorstringOpzionale
#RRGGBB
di default: #192b39
backgroundstringOpzionale
#RRGGBB
di default: #ffffff
levelstringOpzionale
LMQH
di default: M
quietZoneintegerOpzionale
0 - 12 moduli
di default: 4
logostringOpzionale
nonewhatsapplinklocationwificredentialemailscanbellmenuscan-mescan-me-v2paypalbitcoinsparkplusdiamond
di default: none
logoScaleintegerOpzionale
12–30
di default: 24

I codici con un logo utilizzano automaticamente il livello H. GET supporta le icone incorporate; i file upload e gli URL di logo esterni non sono supportati.

Tipi di contenuto

I campi dipendono dal contenutoType. per gli URL, fornire un completo https:// o http:// indirizzo. per i numeri di telefono, includere il codice paese.

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

Risposte di fuoco

Una risposta di successo è il file dell'immagine stesso, senza un taglio JSON. Il contenuto-tipo è immagine/png o immagine/svg+xml. Gli errori vengono restituiti come JSON:

JSON
{"error":"Invalid API key."}
  • 200 — Immagine generata .
  • 401 — La chiave scomparsa o invalidata.
  • 405 — GET è richiesto.
  • 422 — Parametri invalidi o contenuti mancanti.
  • 429 — Il limite del tasso è superato; Retry-After: 60.
  • 503 — L'accesso API non è configurato o la protezione non è temporaneamente disponibile.
  • 500 — errore di generazione interna.

Limiti e validità

Il limite predefinito è 60 richieste al minuto per IP. Il contenuto codificato è limitato a 800 byte. la produzione PNG supporta fino a 2048 × 2048 px. SVG conserva le forme vectorali.

L'API valida i formati di parametri, la dimensione e il contrasto, ma non esegue un decoder o verifica se i QR scansono.

Ottieni l’accesso

L'API è gratuito e rimarrà sempre gratuito. completare il breve modulo per richiedere una chiave segreta.

I dettagli del modulo saranno inviati al team Qivo per esaminare la tua richiesta e rispondere.