QR Codes
Crie, personalize, atualize e baixe QR Codes com as mesmas opções visuais do editor.
Use Authorization: Bearer SUA_CHAVE em todas as chamadas. Obtenha ou renove a chave em Minha conta → API. Exige API ativa no plano, assinatura válida e permissão para o tipo de QR Code. A renovação invalida a chave anterior. Nunca exponha a chave no navegador de visitantes.
Limite: 60 requisições por minuto por chave. Confira X-RateLimit-Limit, X-RateLimit-Remaining e Retry-After em respostas 429. A criação respeita a quantidade de QR Codes do plano.
Envie application/json, application/x-www-form-urlencoded ou multipart/form-data. Use POST com multipart para arquivos; PATCH aceita JSON. Campos omitidos na edição preservam os valores anteriores. Use false/0 para desativar opções, none para remover logo/fundo e null para desvincular projeto/link.
id e uuid retornam o UUID público. Use UUID nas rotas e em project_id/link_id. Identificadores numéricos antigos ainda são aceitos nas rotas de QR Codes, apenas para compatibilidade. Um recurso de outra conta retorna 404.
Operações
| GET | /api/qr-codes |
Listar: page ≥ 1 e results_per_page de 1 a 100 (padrão 25). |
| GET | /api/qr-codes/options |
Consultar tipos, estilos, olhos, molduras, fontes, logos, padrões e limites atuais. |
| POST | /api/qr-codes |
Criar: name, type e os campos obrigatórios do tipo. |
| GET | /api/qr-codes/{uuid} |
Consultar o QR Code e suas configurações. |
| POST / PATCH | /api/qr-codes/{uuid} |
Editar conteúdo, personalização, nome, projeto ou substituir o PDF. |
| DELETE | /api/qr-codes/{uuid} |
Excluir o QR Code e seus arquivos. |
| GET | /api/qr-codes/{uuid}/download |
Baixar: ?format=svg|png|jpg|webp. Padrão: svg. A imagem usa o tamanho salvo; JPG recebe fundo branco quando necessário. |
| GET | /api/qr-codes/{uuid}/readability |
Avaliar legibilidade: nota 0–100, cor, leitura confirmada e mensagem. É uma estimativa de qualidade, não uma probabilidade de leitura. |
Conteúdo por tipo
Textos: até 2048 caracteres. vCard exige pelo menos um campo preenchido. Listas de vCard: até 20 itens, até 1024 caracteres cada; vcard_social_label e vcard_social_value precisam ter o mesmo tamanho. Datas de evento: YYYY-MM-DDTHH:mm, com fuso IANA em event_timezone. Para QR dinâmico de URL, informe link_id com o UUID de um link da conta; seu endereço será usado automaticamente.
| type | Obrigatórios | Opcionais |
|---|---|---|
texto |
text | |
url |
url | |
pdf |
pdf_file | |
telefone |
phone | |
sms |
sms | sms_body |
email |
email_subject, email_body | |
whatsapp |
whatsapp_body | |
facetime |
facetime | |
localizacao |
location_latitude, location_longitude | |
wifi |
wifi_ssid | wifi_password, wifi_encryption, wifi_is_hidden |
evento |
event, event_start_datetime | event_location, event_url, event_note, event_end_datetime, event_timezone |
criptomoeda |
crypto_address | crypto_coin, crypto_amount |
vcard |
vcard_birthday, vcard_city, vcard_company, vcard_country, vcard_email, vcard_first_name, vcard_job_title, vcard_last_name, vcard_note, vcard_phone_numbers, vcard_region, vcard_social_label, vcard_social_value, vcard_street, vcard_url, vcard_zip | |
paypal |
paypal_email, paypal_title, paypal_currency | paypal_type, paypal_price, paypal_thank_you_url, paypal_cancel_url |
pix-estatico |
chave_pix, nome_beneficiario, cidade_beneficiario | valor_pix, descricao_pix |
Integrações antigas: text, phone, location, event e crypto continuam aceitos como aliases dos tipos atuais. style, inner_eye_style e outer_eye_style correspondem a pattern, marker_in e marker_out; square vira default e round vira rounded. Use os nomes atuais em novas integrações.
Personalização comum a todos os tipos
Cores usam #RRGGBB. Transparência: 0 = opaco, 100 = transparente. custom_eyes_color ativa cores dos olhos; different_eyes_color ativa cores diferentes por posição. harmonize_background depende de use_image_background. remove_margin remove a margem somente sem moldura. Use size de 200 a 800, em passos de 100. A aparência não garante leitura: valide o resultado em celulares antes de imprimir.
| Parâmetros | Padrão | Valores e limites |
|---|---|---|
background_color |
"#FFFFFF" |
string |
background_color_transparency |
0 |
0 … 100 |
bg_image |
"none" |
string |
custom_eyes_color |
false |
true / false (1 / 0) |
different_eyes_color |
false |
true / false (1 / 0) |
ecc |
"M" |
L, M, Q, H |
eyes_inner_bottom_left_color |
"#000000" |
string |
eyes_inner_color |
"#000000" |
string |
eyes_inner_top_right_color |
"#000000" |
string |
eyes_outer_bottom_left_color |
"#000000" |
string |
eyes_outer_color |
"#000000" |
string |
eyes_outer_top_right_color |
"#000000" |
string |
foreground_color |
"#000000" |
string |
foreground_gradient_one |
"#000000" |
string |
foreground_gradient_style |
"vertical" |
vertical, horizontal, diagonal, inverse_diagonal, radial |
foreground_gradient_two |
"#FFFFFF" |
string |
foreground_type |
"color" |
color, gradient |
frame |
"none" |
Ver opções com prévia |
frame_color |
"#000000" |
string |
frame_text |
"" |
string |
frame_text_color |
"#FFFFFF" |
string |
frame_text_font |
"Organo.svg" |
Ver opções com prévia |
frame_text_size |
100 |
10 … 100 |
harmonize_background |
false |
true / false (1 / 0) |
logo |
"none" |
string |
margin |
2 |
0 … 25 |
marker_in |
"default" |
Ver opções com prévia |
marker_out |
"default" |
Ver opções com prévia |
pattern |
"default" |
Ver opções com prévia |
qr_code_logo_size |
100 |
30 … 100 |
remove_margin |
false |
true / false (1 / 0) |
size |
500 |
200 … 800 |
use_image_background |
false |
true / false (1 / 0) |
wifi_encryption: nopass, WEP, WPA/WPA2
crypto_coin: bitcoin, ethereum, elrond
paypal_type: buy_now, add_to_cart, donation
Catálogo visual
Compare as opções e use o identificador exibido abaixo da prévia no campo correspondente da API.
Estilo dos Pontos pattern
defaultflurrysdozdrop_indropdropeyecircledotroundedsunstardiamondsparkledangercrossplusxheartshakeblobspecial-circle-orizzspecial-circle-vertspecial-circlespecial-diamondribbonorientalellipsevortexsparkle_dot9-dots9-dots-fatflowerelasticdiagonalropesropes-vertbruisedEstilo da borda do olho marker_out
defaultflurrysdozdrop_indropdropeyedropeyeleftdropeyeleafdropeyerightsquarecirclecircleroundedflowerflower_inleaf3-cornersvortexdotsbruisedcanvasEstilo do centro do olho marker_in
defaultflurrysdozdrop_indropdropeyecircledotroundedsunstardiamondsparkledangercrossplusxheartshakeblobspecial-circle-orizzspecial-circle-vertspecial-circlespecial-diamondribbonorientalellipsevortexsparkle_dot9-dots9-dots-fatflowerelasticdiagonalropesropes-vertbruisedEstilo da borda frame
nonebottomtopballoon-bottomballoon-topribbon-bottomribbon-topphonecineFonte do texto da borda frame_text_font
Leia o QR Code
Organo.svgLeia o QR Code
GhostFestival.svgLeia o QR Code
Always-In-My-Heart.svgLeia o QR Code
AmaticSC-Regular.svgLeia o QR Code
angelina.svgLeia o QR Code
Cookie-Regular.svgLeia o QR Code
Coppint-Medium.svgLeia o QR Code
degrassi.svgLeia o QR Code
Emilia.svgLeia o QR Code
GrandHotel-Regular.svgLeia o QR Code
HomemadeApple.svgLeia o QR Code
LuckiestGuy.svgLeia o QR Code
Marlboro.svgLeia o QR Code
Montserrat-Regular.svgLeia o QR Code
OpenSans-Regular.svgLeia o QR Code
Orbitron-Regular.svgLeia o QR Code
PoiretOne-Regular.svgLeia o QR Code
RalewayDots-Regular.svgLeia o QR Code
theboldfont.svgImagens e PDF
Para logo próprio, envie qr_code_logo como arquivo ou logo como data URI base64. Para fundo, envie bg_image como arquivo ou data URI e use use_image_background=true. Aceitos: PNG, JPEG, GIF, WebP e SVG sanitizado, até 500.000 bytes por imagem; imagens raster até 4096 × 4096 px. URLs remotas e caminhos arbitrários não são aceitos. Para logo pronto, use um nome retornado por GET /api/qr-codes/options em logo.
PDF: envie pdf_file via multipart, até 104.857.600 bytes (100 MB). Exige a permissão exclusiva de PDF. O documento fica público pelo endereço com UUID. Na edição, reenviar pdf_file troca o documento mantendo o endereço. Não envie url para escolher o endereço de um PDF.
Exemplos prontos
cURL — JSON
curl -X POST "https://gerarqrcode.online/api/qr-codes" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Campanha","type":"url","url":"https://example.com","pattern":"rounded","marker_out":"rounded","foreground_color":"#223322","size":800,"ecc":"H"}'
cURL — PDF + logo
curl -X POST "https://gerarqrcode.online/api/qr-codes" \
-H "Authorization: Bearer $API_TOKEN" \
-F "name=Catalogo" -F "type=pdf" \
-F "pdf_file=@catalogo.pdf;type=application/pdf" \
-F "qr_code_logo=@logo.png;type=image/png" \
-F "qr_code_logo_size=60" -F "ecc=H"
cURL — PATCH
curl -X PATCH "https://gerarqrcode.online/api/qr-codes/UUID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Novo nome","foreground_color":"#112233","remove_margin":true}'
cURL — PNG
curl "https://gerarqrcode.online/api/qr-codes/UUID/download?format=png" \
-H "Authorization: Bearer $API_TOKEN" --output qr-code.png
GET /api/qr-codes/{uuid}/readability
Avaliar legibilidade: nota 0–100, cor, leitura confirmada e mensagem. É uma estimativa de qualidade, não uma probabilidade de leitura.
{
"data": {
"score": 100,
"scale": 100,
"color": "hsl(120, 70%, 38%)",
"confirmed": true,
"message": "Leitura confirmada.",
"passes": 5,
"recovered": false,
"contrast": 21,
"marginQuality": 1
}
}
JavaScript — Node.js
const response = await fetch("https://gerarqrcode.online/api/qr-codes", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.API_TOKEN}`, "Content-Type": "application/json" },
body: JSON.stringify({ name: "Contato", type: "vcard", vcard_first_name: "Ana", vcard_phone_numbers: ["+5511999999999"] })
});
const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result.errors));
console.log(result.data.uuid);
Resposta de criação/edição
{
"data": {
"id": "019a0000-0000-7000-8000-000000000001",
"uuid": "019a0000-0000-7000-8000-000000000001",
"name": "Campanha",
"type": "url",
"project_id": null,
"link_id": null,
"qr_code": "https://gerarqrcode.online/uploads/qr_codes/example.svg",
"qr_code_logo": null,
"settings": {
"url": "https://example.com",
"size": 800,
"ecc": "H"
},
"url": "https://example.com",
"pdf_name": null,
"pdf_size": null,
"download": "https://gerarqrcode.online/api/qr-codes/019a0000-0000-7000-8000-000000000001/download",
"datetime": "2026-10-17 12:00:00",
"last_datetime": "2026-10-17 12:00:00"
}
}
Erros
400 JSON inválido; 401 chave ausente/inválida ou sem acesso à API; 403 permissão, assinatura ou limite do plano; 404 recurso inexistente/de outra conta; 405 método; 413 requisição acima do limite; 415 formato de requisição; 422 campo/arquivo inválido; 429 limite de requisições; 500 falha ao salvar/exportar; 503 API desligada. Erros usam {"errors":[{"title":"...","status":422}]}.