API pública de QR Code em JSON
Gere QR Code em SVG ou PNG, analise um conteúdo, monte um BR Code de Pix e consulte a
tabela de capacidade da ISO/IEC 18004 — sem chave, sem cadastro e sem custo. A
resposta é JSON ou a própria imagem, com Access-Control-Allow-Origin: *.
429. Para volume maior, escreva pelo contato
descrevendo o caso — costuma ser resolvido rápido.Antes de tudo: onde o conteúdo trafega
O gerador da interface do site monta o QR Code no navegador: nada do que é digitado lá chega até nós. A API é a exceção óbvia — para gerar a imagem no servidor, o conteúdo precisa viajar na requisição. Ele não é gravado em banco, aparecendo apenas no log volátil de acesso do servidor, que é rotacionado.
Consequência prática: não use a API para conteúdo sensível — chave Pix de terceiro, senha de rede corporativa, dados pessoais. Para esses casos, gere pelo navegador, na página do formato, ou rode o codificador do lado do seu servidor.
GET /api/v1/qr
Gera o símbolo e devolve a imagem pronta. É o endpoint que serve para embutir um QR Code direto no seu HTML, com uma tag <img>.
| Parâmetro | Tipo | Descrição |
|---|---|---|
texto | string | obrigatório. O conteúdo do código, até 2.953 bytes. |
formato | string | svg (padrão), png ou json. |
nivel | string | correção de erro: L, M (padrão), Q ou H. |
escala | inteiro | só no PNG: pixels por módulo, de 1 a 30 (padrão 8). |
px | inteiro | só no SVG: largura e altura declaradas na tag. |
cor | hex | cor dos módulos, 6 dígitos sem # (padrão 000000). Precisa ser escura. |
Exemplo: /api/v1/qr?texto=https://www.qrcodeja.com.br&formato=png&escala=8
GET /api/v1/analisar
Identifica o formato do conteúdo e devolve como ele se comporta nos quatro níveis de correção — versão, módulos, modo, ocupação e lado mínimo de impressão.
| Parâmetro | Tipo | Descrição |
|---|---|---|
texto | string | obrigatório. O conteúdo a analisar. |
Exemplo: /api/v1/analisar?texto=WIFI:T:WPA;S:Loja;P:senha2026;;
GET /api/v1/pix
Monta um BR Code estático de Pix, com o CRC16 já calculado, conforme o Manual de Padrões para Iniciação do Pix do Banco Central.
| Parâmetro | Tipo | Descrição |
|---|---|---|
chave | string | obrigatório. CPF, CNPJ, e-mail, telefone ou chave aleatória. |
nome | string | nome do recebedor, até 25 caracteres. Acentos são removidos automaticamente. |
cidade | string | cidade do recebedor, até 15 caracteres. |
valor | número | opcional. Sem valor, o pagador escolhe quanto pagar. |
txid | string | identificador da transação. Padrão ***. |
Exemplo: /api/v1/[email protected]&nome=Loja%20Exemplo&cidade=Vitoria&valor=25.50
GET /api/v1/capacidade
Consulta a tabela de capacidade calculada a partir dos parâmetros da ISO/IEC 18004. Informe versao para os dados completos de uma versão, ou nivel e modo para a tabela das 40.
| Parâmetro | Tipo | Descrição |
|---|---|---|
versao | inteiro | 1 a 40. Devolve módulos, codewords, blocos e capacidade nos quatro níveis. |
nivel | string | usado com modo: L, M, Q ou H. |
modo | string | usado com nivel: numerico, alfanumerico ou byte. |
Exemplo: /api/v1/capacidade?versao=10
GET /api/v1/tipos
Lista os 18 tipos de QR Code documentados no site, com o formato do payload, a correção recomendada e a especificação que define cada um.
Exemplo: /api/v1/tipos
GET /api/v1/segmentos
Lista os 42 segmentos de negócio e quais formatos têm aplicação documentada em cada um.
Exemplo: /api/v1/segmentos
Exemplos de uso
Embutir um QR Code numa página
Como o endpoint devolve a imagem, ele funciona direto numa tag de imagem. Lembre de codificar o conteúdo para URL:
<img src="https://www.qrcodeja.com.br/api/v1/qr?texto=https%3A%2F%2Fexemplo.com.br&formato=png&escala=6"
alt="QR Code do site" width="248" height="248">
Gerar em lote no terminal
while read linha; do
curl -s "https://www.qrcodeja.com.br/api/v1/qr?texto=$(printf %s "$linha" | jq -sRr @uri)&formato=png" \
-o "qr-$(echo "$linha" | md5sum | cut -c1-8).png"
done < lista.txt
Descobrir a versão antes de decidir o tamanho de impressão
curl -s "https://www.qrcodeja.com.br/api/v1/analisar?texto=BEGIN:VCARD..." | jq '.niveis.M'
A resposta traz ladoMinimoCm, que é o menor lado em que aquele símbolo ainda mantém
módulos de 0,4 mm — o piso prático para impressão comum.
Quando usar a API e quando não usar
Usar: geração em lote (etiquetas, crachás, mesas numeradas de um salão), integração com sistema próprio (cada pedido gera um QR de Pix com valor), consulta de capacidade dentro de um validador de arte, e embutir um código estático numa página que você controla.
Não usar: conteúdo sensível de terceiros, volume acima do limite sem combinar
antes, e — o mais importante — como fonte em tempo real de um material impresso. QR Code
estático não precisa de servidor: gere uma vez, salve o SVG e imprima. Um <img>
apontando para a nossa API dentro do seu site funciona, mas cria uma dependência desnecessária
entre o seu site e o nosso.
Se o volume for grande e recorrente, o caminho mais robusto é rodar o codificador do seu lado: o
arquivo qr.js deste site é servido publicamente em
/qr.js, funciona em Node e no navegador, não tem dependência e
implementa a norma inteira. Copie e use.
Códigos de resposta
| Código | Significado |
|---|---|
200 | Sucesso. |
400 | Parâmetro ausente ou inválido. O corpo traz erro com a explicação. |
404 | Endpoint inexistente. |
413 | Conteúdo maior que 2.953 bytes, a capacidade máxima do QR Code. |
429 | Limite de 40 requisições por minuto excedido. |
As respostas de imagem têm Cache-Control: public, max-age=86400 — o mesmo conteúdo
gera exatamente o mesmo símbolo, então cachear é seguro e economiza requisição.
Perguntas frequentes
Preciso de chave de API?
Não. A API é aberta, com limite de 40 requisições por minuto por IP. Para volume maior, fale pelo contato.
Posso usar em produto comercial?
Pode, respeitando o limite e os termos de uso. O que pedimos é citar a fonte quando reproduzir as tabelas técnicas, e não usar a API como infraestrutura de um serviço concorrente sem falar antes.
A API guarda o que eu envio?
Não em banco. O conteúdo aparece no log volátil de acesso do servidor, que é rotacionado. Para conteúdo sensível, gere pelo navegador na página do gerador, onde nada trafega.
Por que o mesmo texto gera sempre a mesma imagem?
Porque a codificação é determinística: mesmo conteúdo, mesmo nível e mesma máscara vencedora produzem a mesma matriz. É o que permite cachear a resposta por 24 horas.
Dá para gerar QR Code de Pix com valor variável?
Dá: chame /api/v1/pix com o parâmetro valor a cada cobrança. Cada chamada devolve um BR Code novo, com o CRC recalculado. Sem o parâmetro, o código sai com valor em aberto.