Đối với Integration
Mã QR trong một yêu cầu
Gửi nội dung và thiết kế cài đặt thông qua GET và nhận một PNG hoặc SVG mà không cần kiểm tra quét thêm.
Tự do, mãi mãiPNG, SVG và API – không có phí hoặc đăng ký.
Mã QR trực tiếp Không chuyển hướng, không hết hạn.
GEThttps://qivo.umind.group/
Yêu cầu và xác thực
Nhập chìa khóa của bạn vào tiêu đề X-API-Key. phiên chỉnh sửa và cookie không được yêu cầu. QIVO_API_KEY trong ví dụ này là một biến môi trường khách hàng có chứa chìa khóa của bạn.
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.svgNếu sự tích hợp của bạn chỉ chấp nhận một URL, hãy chuyển khóa vào thông số chìa khóa:
https://qivo.umind.group/?key=YOUR_SECRET_KEY&data=https%3A%2F%2Fumind.group&format=png&size=1024Thay thế YOUR_SECRET_KEY với khóa của bạn. tiêu đề chiếm ưu thế trên thông số khóa. URL-code thông số giá trị: # → %23, + → %2B, và & trong một giá trị → %26.
Sử dụng HTTPS và giữ chìa khóa trên máy chủ của bạn. đừng đặt nó trong JavaScript công cộng. Chìa khóa và dữ liệu trong URL GET có thể xuất hiện trong lịch sử trình duyệt hoặc hồ sơ máy chủ; chọn tiêu đề cho chìa khóa của bạn.
Ví dụ code
Lưu chìa khóa trong biến môi trường QIVO_API_KEY; đừng xuất bản nó trong mã trang.
<?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())Thiết kế Parameters
| Các Parameter | Kiểu | Yêu cầu | giá trị |
|---|---|---|---|
X-API-Key / key | string | cần thiết | Chìa khóa bí mật: header hoặc GET parameter |
data | string | Văn bản và URL | Nội dung cần thiết cho text/url |
contentType | string | Tùy chọn | texturlwifivcardwhatsapptelegramphoneviberemailsmsgiả định: text |
format | string | Tùy chọn | pngsvggiả định: png |
size | integer | Tùy chọn | 25651210242048giả định: 1024 |
shape | string | Tùy chọn | squaresoftroundeddotsleaf-softleafhorizontalverticalpointednotchedstardiamondxx-roundedplusplus-roundedheartsparkleconfettigiả định: square |
border | string | Tùy chọn | squarecircleroundedskewdrop-tldrop-brleafleaf-inner-brleaf-circleleaf-inner-tlsquare-circlesoft-tlsoft-brsoft-leafroughgiả định: square |
center | string | Tùy chọn | squarecircleroundedskewroughdrop-tldrop-brleafgearstardiamondxx-roundedplusplus-roundedheartgiả định: square |
foreground / eyeColor | string | Tùy chọn | #RRGGBB giả định: #192b39 |
background | string | Tùy chọn | #RRGGBB giả định: #ffffff |
level | string | Tùy chọn | LMQHgiả định: M |
quietZone | integer | Tùy chọn | 0 - 12 module giả định: 4 |
logo | string | Tùy chọn | nonewhatsapplinklocationwificredentialemailscanbellmenuscan-mescan-me-v2paypalbitcoinsparkplusdiamondgiả định: none |
logoScale | integer | Tùy chọn | 12–30 giả định: 24 |
Mã có logo tự động sử dụng cấp độ H. GET hỗ trợ biểu tượng tích hợp; file upload và URL logo bên ngoài không được hỗ trợ.
Loại nội dung
Các trường phụ thuộc vào nội dungType.Đối với URL, cung cấp một địa chỉ https:// hoặc http:// đầy đủ.Đối với số điện thoại, bao gồm mã quốc gia.
| contentType | Các lĩnh vực cần thiết | Các trường tùy chọn |
|---|---|---|
| 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=svgCâu trả lời API
Một phản ứng thành công là tệp hình ảnh chính nó, mà không có một JSON wrapper. Content-Type là image/png hoặc image/svg+xml. Errors are returned as JSON:
{"error":"Invalid API key."}- 200 — hình ảnh được tạo ra.
- 401 — Chìa khóa bị mất hoặc không có hiệu lực
- 405 — GET là cần thiết.
- 422 — Các thông số không hợp lệ hoặc nội dung thiếu.
- 429 — Tỷ lệ vượt quá; Retry-After: 60.
- 503 — Truy cập API không được cấu hình hoặc bảo vệ tạm thời không sẵn dùng.
- 500 — Lỗi thế hệ nội bộ
Giới hạn và xác nhận
Giới hạn mặc định là 60 yêu cầu mỗi phút cho mỗi IP. Nội dung mã hóa được giới hạn đến 800 byte. PNG output hỗ trợ lên đến 2048 × 2048 px. SVG duy trì các hình dạng vector.
API xác nhận các định dạng thông số, kích thước và tương phản, nhưng không chạy một decoder hoặc kiểm tra xem QR có quét hay không.