genuine Produto verificado
A unidade existe, está ativada e é a primeira vez que é lida. É o único caso em que o comprador lê que o produto é genuíno.
Documentação
Tudo o que segue está em funcionamento. Se algo não está aqui, é porque ainda não existe.
A ordem do passo 4 importa: ativar antes de aplicar significa que um rolo perdido no caminho tem unidades que autenticam. Ative quando a etiqueta já estiver no produto.
Ele escaneia o QR com a câmera do celular e abre uma página no navegador. Não há aplicativo para instalar e nenhum dado é pedido. A página pesa menos de 30 KB para carregar na gôndola com um traço de sinal.
genuine A unidade existe, está ativada e é a primeira vez que é lida. É o único caso em que o comprador lê que o produto é genuíno.
already_seen A unidade é válida, mas alguém já a leu. Mostramos quando e de que país foi a primeira vez, para o próprio comprador julgar: comprou aqui e a etiqueta estreou em outro país há três meses — algo aconteceu.
recalled O lote foi recolhido do mercado. Substitui qualquer outra mensagem, mesmo que a unidade seja perfeitamente legítima. É ligado no painel e vale na leitura seguinte.
unverified Código inventado, unidade sem ativar ou rolo denunciado como roubado. Ao comprador nunca se diz "falsificado": não temos como provar para ele e acusar em falso é problema jurídico. A suspeita, com toda a evidência, aparece no seu painel.
Os códigos são gerados por nós e viajam cifrados até a gráfica. Você nunca precisa manipular um arquivo com milhões de códigos, e quem imprime nunca vê a que cliente pertencem: o código não leva a marca dentro.
Cada rolo traz uma faixa de séries e um estado. O estado é o que se audita quando algo não fecha.
| Estado | O que significa |
|---|---|
ordered | Pedido à gráfica. Os códigos já estão gerados e reservados. |
printed | Impresso. A produção da faixa foi confirmada. |
shipped | Despachado para a sua fábrica. |
received | Recebido e sob a sua custódia. Só aqui pode ser usado. |
consumed | Aplicado por completo no produto. |
stolen | Denunciado como roubado. Nenhuma unidade dele volta a autenticar. |
voided | Anulado: impressão defeituosa, faixa descartada. |
Se um rolo for roubado, marque como roubado no painel. Todas as suas unidades deixam de autenticar na hora, inclusive as já ativadas, e cada tentativa de verificá-las fica registrada com país e horário — que é como se rastreia por onde saíram.
Um produto é o que você vende; um lote é uma corrida de produção desse produto; uma unidade é uma embalagem com a sua etiqueta. Alertas, recall e relatórios trabalham sobre o lote, então vale manter o lote do painel igual ao do seu sistema de produção.
A ativação é feita de três formas, todas pelo painel:
Cada ativação fica no registro de auditoria com quem fez e quando. Esse registro é encadeado por hash: não dá para editar depois sem que apareça, que é exatamente o que um auditor pede.
Você marca o lote como recolhido e a próxima leitura de qualquer unidade dele mostra o alerta sanitário no lugar de "produto verificado". Leva segundos para propagar no mundo todo e não exige reimprimir nem recolher nada.
É reversível: se o recall foi preventivo e é suspenso, o lote volta a verificar normalmente. As duas operações ficam auditadas.
São onze regras olhando o fluxo de leituras. As que mais disparam na prática:
Cada alerta chega com a evidência —quais unidades, onde, quando— e pode virar um caso: com responsável, notas, anexos e uma resolução ao fechar. O caso é o que depois se mostra a um advogado, à aduana ou a um distribuidor.
| Papel | Pode |
|---|---|
| Admin | Tudo: usuários, chaves de API, webhooks, ativação, recall de lote e configuração. |
| Analyst | Toca o dia a dia: ativa, investiga alertas, gerencia casos, exporta. Não mexe em usuários nem credenciais. |
| Viewer | Somente leitura. Para direção, auditoria externa ou o time comercial. |
Os dados de cada marca ficam isolados no banco, não na aplicação: mesmo que um erro de programação pedisse dados de outra empresa, o banco não devolveria.
Verificação pública. É a mesma que a página do QR usa. Não leva autenticação —precisa funcionar do celular de qualquer comprador— e não revela a que marca o código pertence.
GET https://xyvona.com/api/v/K7M2QX9J4TB8WNPC5RDA
{
"result": "genuine",
"message": "Producto verificado.",
"product_id": 412,
"batch_id": 88
} Quando a unidade já foi vista antes, a resposta acrescenta first_seen e first_country. Quando não verifica, o corpo é só result e message: não se vaza se o código não existe, se não está ativado ou se o rolo foi roubado, porque essa diferença é exatamente o que um falsificador precisa para calibrar.
API do painel. Tudo o que o painel faz tem endpoint. Autentica com uma chave que você gera, com escopo próprio, exibida uma única vez.
curl https://xyvona.com/capi/api/v1/batches \
-H "X-API-Key: $XYVONA_API_KEY" Guarde a chave assim que for gerada: não a mostramos de novo e não conseguimos recuperá-la. Se perder, ela é revogada e outra é emitida — que é o que deve acontecer quando uma credencial some.
Você registra uma URL e avisamos quando um alerta é gerado, filtrando por severidade mínima e por tipo. As retentativas usam espera crescente e cada entrega fica registrada, para consultar quando a sua equipe disser "não chegou nada".
POST https://tu-sistema.com/hooks/xyvona
X-Xyvona-Signature: t=1755820800,v1=9f86d081...
{
"version": 1,
"type": "alert.created",
"tenant_id": 7,
"alert": {
"alert_type": "geo_impossible",
"severity": "high",
"severity_level": 4,
"status": "open",
"unit_id": 90210,
"batch_id": 88,
"created_at": "2026-08-21T14:03:11+00:00",
"evidence": { "km": 8410, "hours": 1.5 }
}
} Verifique a assinatura antes de confiar no corpo: é HMAC-SHA256 sobre «timestamp.corpo» com o segredo que damos ao registrar a URL. Rejeite o que chegar com mais de cinco minutos e compare a assinatura em tempo constante.
Escreva para nós e acrescentamos. Se você fez a pergunta, outra pessoa está fazendo também.