QivoEstúdio de código QR
Crie o código QR

Para a integração

Um código QR em uma única solicitação

Envie configurações de conteúdo e design através do GET e receba um PNG ou SVG sem um exame de escaneamento adicional.

Livre e para sempre.PNG, SVG e API – sem taxas ou assinaturas.

Código QR direto. Não se redireciona, não expira.

GEThttps://qivo.umind.group/

Solicitação e autenticação

Passar a sua chave no cabeçalho X-API-Key. sessões de editor e cookies não são necessárias. QIVO_API_KEY neste exemplo é uma variável do ambiente do cliente que contém a sua chave.

Exemplo de currículo
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 a sua integração aceitar apenas um URL, entre a chave no parâmetro-chave:

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

Substitua YOUR_SECRET_KEY com a sua chave. o título toma precedencia sobre o parâmetro chave. URL-encodado valores de parâmetro: # → %23, + → %2B, e & dentro de um valor → %26.

Use HTTPS e mantenha a chave no seu servidor. não coloque-a em JavaScript público. chaves e dados nas URLs GET podem aparecer na história do navegador ou nos logs do servidor; prefira o cabeçalho para a sua chave.

Exemplos de Código

Mantenha a chave na variável ambiente QIVO_API_KEY; não a publica no código de página.

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

Parâmetros de Design

ParâmetrosTipoRequisitosValores
X-API-Key / keystringNecessidade
Cabeça secreta: cabeçalho ou parâmetro GET
datastringPara texto e URL
Conteúdo necessário para texto/url
contentTypestringOpcional
texturlwifivcardwhatsapptelegramphoneviberemailsms
Definição: text
formatstringOpcional
pngsvg
Definição: png
sizeintegerOpcional
25651210242048
Definição: 1024
shapestringOpcional
squaresoftroundeddotsleaf-softleafhorizontalverticalpointednotchedstardiamondxx-roundedplusplus-roundedheartsparkleconfetti
Definição: square
borderstringOpcional
squarecircleroundedskewdrop-tldrop-brleafleaf-inner-brleaf-circleleaf-inner-tlsquare-circlesoft-tlsoft-brsoft-leafrough
Definição: square
centerstringOpcional
squarecircleroundedskewroughdrop-tldrop-brleafgearstardiamondxx-roundedplusplus-roundedheart
Definição: square
foreground / eyeColorstringOpcional
#RRGGBB
Definição: #192b39
backgroundstringOpcional
#RRGGBB
Definição: #ffffff
levelstringOpcional
LMQH
Definição: M
quietZoneintegerOpcional
0 - 12 módulos
Definição: 4
logostringOpcional
nonewhatsapplinklocationwificredentialemailscanbellmenuscan-mescan-me-v2paypalbitcoinsparkplusdiamond
Definição: none
logoScaleintegerOpcional
12–30
Definição: 24

Os códigos com um logotipo utilizam automaticamente o nível H. GET suporta ícones incorporados; upload de arquivos e URLs de logotipo externos não são suportados.

Tipos de Conteúdo

Para URLs, forneça um endereço completo https:// ou http://. Para números de telefone, inclua o código do país.

contentTypeÁreas necessáriasCampos opcionais
text / urldata
phone / viberphone
whatsapp / smsphonemessage
telegramtelegram
emailemailsubject, message
wifissid; wifiSecurity≠nopass → wifiPasswordwifiSecurity (WPA), wifiHidden (0)
vcardfirstName / lastNameorganization, jobTitle, phone, email, website, address
Exemplo de telefone
https://qivo.umind.group/?key=YOUR_SECRET_KEY&contentType=phone&phone=%2B380671234567&format=svg

Fogo de resposta

Uma resposta bem-sucedida é o arquivo da imagem em si, sem um JSON Wrapper.Type de conteúdo é imagem/png ou imagem/svg+xml. Erros são devolvidos como JSON:

JSON
{"error":"Invalid API key."}
  • 200 — A imagem gerada.
  • 401 — A chave falha ou inválida.
  • 405 — GET é necessário.
  • 422 — Parâmetros inválidos ou conteúdos ausentes.
  • 429 — Rate limit excedido; Retry-After: 60.
  • 503 — O acesso à API não é configurado ou a proteção não está temporariamente disponível.
  • 500 — Erro de geração interna.

Limites e validação

O limite padrão é 60 pedidos por minuto por IP. Conteúdo codificado é limitado a 800 bytes. PNG output suporta até 2048 × 2048 px. SVG preserva formas vector.

A API valida os formatos de parâmetros, tamanho e contraste, mas não executa um decoder ou verifica se os QR escaneam.

Obtenha acesso

A API é gratuita e permanecerá sempre gratuita. Complete o curto formulário para solicitar uma chave secreta.

Os detalhes do formulário serão enviados à equipe Qivo para revisar a sua solicitação e resposta.