Pular para o conteúdo principal

Configuracao do widget

Referencia completa de tudo o que e configuravel no custom element <veridia-widget>.

Todos os atributos

AtributoObrigatorioDefaultDescricao
publishable-keySim-Sua key qv_pub_* ou qv_pub_test_*
api-baseSim-Endpoint da API (https://api.xxuxe.online para producao)
user-refNao-Seu proprio identificador de usuario (max 128 chars)
countryNao-Codigo ISO 3166-1 alpha-2 (PY, BR, MX, etc.)
document-typeNao-dni, passport, drivers_license, national_id, ou other
submitted-full-nameNao-Nome completo para fuzzy matching (max 255 chars)
require-doc-backNao"false"Defina "true" se o documento precisar de captura do verso
localeNaobrowserIdioma da UI: en, es, pt
accent-colorNao#2563EBCor hex para botoes e estados ativos

Detalhe dos atributos

publishable-key (obrigatorio)

A key que identifica seu tenant. Dois prefixos:

  • qv_pub_test_* — environment de teste (gratis, nao conta para faturamento)
  • qv_pub_* — environment live (faturamento real)

Obtenha a sua do dashboard em API keys.

<veridia-widget publishable-key="qv_pub_test_FJJWXMA2RN2XPRDK6YJX4KTVD0XSQHW9">

api-base (obrigatorio)

O endpoint da API Veridia. Para producao sempre:

<veridia-widget api-base="https://api.xxuxe.online">

user-ref (opcional mas recomendado)

Seu proprio identificador para o usuario. Ecoado em eventos de webhook como userRef. Max 128 chars. Padrao recomendado: sua primary key do DB.

<veridia-widget user-ref="customer-12345">

country (opcional mas recomendado)

Codigo ISO 3166-1 alpha-2. Melhora o accuracy do OCR sugerindo qual layout de documento esperar.

<veridia-widget country="BR">

Codigos LATAM comuns:

CodigoPais
PYParaguai
BRBrasil
MXMexico
ARArgentina
COColombia
CLChile
PEPeru
UYUruguai

document-type (opcional)

Sugestao de qual documento o usuario vai enviar. O VLM ainda valida, mas isso melhora o prompting.

ValorDescricao
dniCartao de identidade nacional (DNI, CI, cedula)
passportPassaporte
drivers_licenseCarteira de motorista
national_idID nacional generico
otherQualquer outro documento de identidade
<veridia-widget document-type="national_id">

submitted-full-name (opcional)

O nome legal completo do usuario como digitado no seu form. Usado pelo backend para fuzzy matching contra o nome OCRdo. Melhora o accuracy do veredicto quando os nomes batem.

<veridia-widget submitted-full-name="Joao Carlos Silva Souza">

Se o resultado do OCR bate (permitindo typos e ordenacao), boosta a confianca. Se nao bate, dispara um flag name_mismatch.

require-doc-back (opcional)

Defina "true" se seu tipo de documento exigir foto do verso. Default "false".

<veridia-widget require-doc-back="true">

Quando "true", o widget adiciona um terceiro passo de captura entre a frente do documento e a selfie.

Quando voce precisa: a maioria dos DNIs/CIs latinoamericanos tem info importante (endereco, MRZ) no verso. RG brasileiro, INE mexicana, e similares sempre precisam ambos lados.

locale (opcional)

Idioma da UI. Default e o idioma do browser, fallback ingles.

ValorIdioma
enIngles
esEspanhol
ptPortugues (Brasil)
<veridia-widget locale="pt">

accent-color (opcional)

Cor hex para botoes primarios, estados ativos e indicadores de progresso. Default #2563EB (azul).

<veridia-widget accent-color="#7C3AED"> <!-- violeta -->
<veridia-widget accent-color="#10B981"> <!-- verde -->
<veridia-widget accent-color="#F59E0B"> <!-- ambar -->

Use cores com contraste WCAG AA contra branco. Evite pasteis — falham checks de acessibilidade.

Eventos

O widget emite dois CustomEvents no elemento host.

veridia:complete

Disparado quando o usuario termina as capturas e a API aceita o envio. O veredicto NAO esta neste evento — voce ainda precisa obte-lo da API ou esperar o webhook.

widget.addEventListener('veridia:complete', (e) => {
console.log(e.detail);
// {
// verificationId: "vf_AG07CDWRRFQV4T05ZXG2",
// userRef: "customer-12345",
// status: "queued"
// }
});

O e.detail contem:

CampoTipoDescricao
verificationIdstringO ID para obter o veredicto
userRefstring | nullO user-ref que voce passou
statusstringStatus inicial — geralmente "queued"

veridia:error

Disparado quando algo da errado client-side de que o usuario nao pode se recuperar (falha de auth, rede caida, etc.).

widget.addEventListener('veridia:error', (e) => {
console.error(e.detail);
// {
// code: "errorInvalidKey",
// message: "API key invalida ou revogada",
// detail: { ... }
// }
});

O e.detail contem:

CampoTipoDescricao
codestringCodigo de erro machine-readable
messagestringResumo human-readable
detailobjectContexto extra opcional

Codigos de erro comuns:

CodigoSignificado
errorInvalidKeyPublishable key ruim/revogada
errorRateLimitedMuitas requests
errorInsufficientCreditsO tenant tem 0 creditos
errorBlurryQualidade de captura abaixo do threshold (auto-retried)
errorNoFaceA selfie nao tem rosto detectavel (auto-retried)
errorUploadO upload R2 falhou (auto-retried)
errorNetworkFalha de rede generica

O widget gerencia errorBlurry, errorNoFace, e errorUpload automaticamente pedindo ao usuario para tentar de novo. Os outros codigos chegam ao seu handler.

Atualizando atributos em runtime

Voce pode mudar atributos via JavaScript. O widget se atualiza reativamente:

const widget = document.querySelector('veridia-widget');

// Mudar locale dinamicamente
widget.setAttribute('locale', 'pt');

// Mudar cor de accent
widget.setAttribute('accent-color', '#10B981');

// Mudar pais (deve acontecer antes do usuario comecar a capturar)
widget.setAttribute('country', 'BR');

Limitacao: mudar publishable-key apos o widget ter sido usado uma vez reseta o estado interno. Nao faca isso mid-flow.

Sizing

O widget e responsivo por padrao. Tenta preencher a largura do seu container, com altura minima de 380px.

veridia-widget {
display: block;
width: 100%;
max-width: 600px;
min-height: 480px;
margin: 0 auto;
}

O layout interno se adapta a mobile (abaixo de 480px) automaticamente.

Estilos

O widget usa Shadow DOM para isolamento de estilos. O CSS da sua pagina nao afeta os internos do widget, e o CSS do widget nao vaza para fora.

O que voce pode customizar:

  • Atributo accent-color (cor primaria)
  • Tamanho do elemento container (width, height, margin)
  • Conteudo de fora (heading da sua pagina, instrucoes, etc.)

O que voce nao pode customizar sem forkar:

  • Tipografia interna
  • Espacamento interno
  • Design de overlay de captura

Se voce precisa de customizacao mais profunda, contate o suporte — oferecemos um tier white-label com temas custom.

Multiplos widgets na mesma pagina

Voce pode ter multiplas instancias de widget em uma pagina (ex: um para usuario primario, um para fiador). Cada um opera independentemente:

<veridia-widget
id="primary-user"
publishable-key="..."
user-ref="user-123">
</veridia-widget>

<veridia-widget
id="guarantor"
publishable-key="..."
user-ref="guarantor-456">
</veridia-widget>

<script>
document.getElementById('primary-user').addEventListener('veridia:complete', (e) => {
// Gerenciar usuario primario
});
document.getElementById('guarantor').addEventListener('veridia:complete', (e) => {
// Gerenciar fiador
});
</script>

Cada instancia carrega face-api.js uma vez globalmente — sem dupla penalizacao de carga.

Notas de performance

  • Primeira carga: ~6 MB face-api.js + ~150 KB widget = ~6.2 MB. A maioria dos usuarios em 4G carrega em 2-3 segundos.
  • Cargas subsequentes: cacheado pelo browser; quase instantaneo.
  • Arquivos de modelo: ~14 MB lazy-loaded a primeira vez que o usuario inicia uma captura. Cacheado depois.
  • Bandwidth total por verificacao: ~20 MB primeira vez, ~150 KB em uso repetido.

Para usuarios em conexoes lentas, considere uma UI placeholder que mostra enquanto os scripts carregam:

<div id="kyc-placeholder">
Carregando widget de verificacao...
</div>
<veridia-widget id="kyc" hidden ...></veridia-widget>

<script>
customElements.whenDefined('veridia-widget').then(() => {
document.getElementById('kyc-placeholder').remove();
document.getElementById('kyc').hidden = false;
});
</script>

Proximos passos