Untuk integrasi
Kode QR dalam satu permintaan
Tambah generasi kode QR ke layanan Anda. mengirimkan pengaturan konten dan desain melalui GET dan menerima PNG atau SVG tanpa pemeriksaan pemindaian tambahan.
bebas untuk selamanya.PNG, SVG dan API – tidak ada biaya atau langganan.
dengan kode QR langsung. Tidak ada redirect, tidak ada habisnya.
GEThttps://qivo.umind.group/
Permintaan dan autentikasi
Tuliskan kunci Anda di kepala X-API-Key. sesi editor dan cookie tidak diperlukan. QIVO_API_KEY dalam contoh ini adalah variabel lingkungan klien yang mengandung kunci Anda.
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.svgJika integrasi Anda hanya menerima URL, masukkan kunci ke parameter kunci:
https://qivo.umind.group/?key=YOUR_SECRET_KEY&data=https%3A%2F%2Fumind.group&format=png&size=1024Mengganti YOUR_SECRET_KEY dengan kunci Anda. tajuk mengambil keunggulan di atas parameter kunci. nilai parameter kode URL: # → %23, + → %2B, dan & dalam nilai → %26.
Gunakan HTTPS dan simpan kunci pada server Anda.Jangan letakkan kunci di JavaScript publik.Kunci dan data dalam URL GET mungkin muncul dalam sejarah browser atau log server; prefer the headline for your key.
Contoh kode
Simpan kunci di variabel lingkungan QIVO_API_KEY; jangan menerbitkannya dalam kode halaman.
<?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())Parameter desain
| Parameter | Tipe | Kebutuhan | Nilai |
|---|---|---|---|
X-API-Key / key | string | Diperlukan | Kunci rahasia: header atau parameter GET |
data | string | Untuk teks dan url | Informasi yang dibutuhkan untuk text/url |
contentType | string | Pilihan | texturlwifivcardwhatsapptelegramphoneviberemailsmsyang default: text |
format | string | Pilihan | pngsvgyang default: png |
size | integer | Pilihan | 25651210242048yang default: 1024 |
shape | string | Pilihan | squaresoftroundeddotsleaf-softleafhorizontalverticalpointednotchedstardiamondxx-roundedplusplus-roundedheartsparkleconfettiyang default: square |
border | string | Pilihan | squarecircleroundedskewdrop-tldrop-brleafleaf-inner-brleaf-circleleaf-inner-tlsquare-circlesoft-tlsoft-brsoft-leafroughyang default: square |
center | string | Pilihan | squarecircleroundedskewroughdrop-tldrop-brleafgearstardiamondxx-roundedplusplus-roundedheartyang default: square |
foreground / eyeColor | string | Pilihan | #RRGGBB yang default: #192b39 |
background | string | Pilihan | #RRGGBB yang default: #ffffff |
level | string | Pilihan | LMQHyang default: M |
quietZone | integer | Pilihan | 0 - 12 modul yang default: 4 |
logo | string | Pilihan | nonewhatsapplinklocationwificredentialemailscanbellmenuscan-mescan-me-v2paypalbitcoinsparkplusdiamondyang default: none |
logoScale | integer | Pilihan | 12–30 yang default: 24 |
Kod dengan logo secara otomatis menggunakan level H. GET mendukung ikon terintegrasi; file upload dan URL logo eksternal tidak didukung.
Jenis konten
Untuk URL, berikan alamat lengkap https:// atau http://. Untuk nomor telepon, termasuk kode negara.
| contentType | Bidang yang diperlukan | Bidang optional |
|---|---|---|
| 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=svgTanggapan api
Jawaban yang sukses adalah file gambar itu sendiri, tanpa pengikat JSON.Tipe konten adalah image/png atau image/svg+xml.
{"error":"Invalid API key."}- 200 — Gambar yang dihasilkan.
- 401 — kekurangan atau kekurangan kunci.
- 405 — Dapatkan yang diperlukan.
- 422 — Parameter yang tidak sah atau konten yang hilang.
- 429 — Rata-rata yang melebihi batas; Retry-After: 60.
- 503 — Akses API tidak terkonfigurasi atau perlindungan sementara tidak tersedia.
- 500 — Kesalahan Generasi Internal
Batas dan validasi
Batas default adalah 60 permintaan per menit per IP. Kandungan terkod terbatas pada 800 byte. output PNG mendukung hingga 2048 × 2048 px. SVG mempertahankan bentuk vektor.
API validasi format parameter, ukuran dan kontras, tetapi tidak menjalankan decoder atau memeriksa apakah QR scans.