Passo 6 · Configuração da sua conta
Alguns comportamentos do Web SDK não vivem no seu código — eles são configurados na sua conta Provvi e valem para todas as sessões que você cria. Esta página lista cada ajuste, o efeito que ele tem no fluxo dos passos anteriores e o que você precisa pedir à Provvi.
Suas credenciais (x-api-key de backend e license-key de frontend) são emitidas no admin-console em admin.provvi.com.br. Os ajustes abaixo são feitos pela Provvi mediante solicitação — escreva ao seu contato ou abra um chamado.
Domínios autorizados (origin allowlist)
Seção intitulada “Domínios autorizados (origin allowlist)”Sua license-key só é aceita nos domínios que você registrar previamente. É o que permite deixar a license key no frontend com segurança: ela está amarrada à origem (origin-scoping), não a um segredo.
Antes de ir ao ar, envie à Provvi a lista de domínios de onde o componente será servido — por exemplo app.seusite.com.br e vistoria.seusite.com.br. Inclua também os domínios de homologação e de desenvolvimento que você usa.
O domínio é conferido em três momentos do fluxo — os dois últimos passaram a valer em 2026-09-18 —, e cada um chega ao seu código de um jeito:
| Momento | O que o seu código recebe | O que fazer |
|---|---|---|
| Validação da licença (ao abrir a câmera) | LICENSE_INVALID (8002) com error.details.reason = ORIGIN_NOT_ALLOWED — ou, numa origem que nunca passou pelo onboarding, LICENSE_NETWORK_ERROR (8003) |
Registre o domínio com a Provvi. Não repita em laço: a captura não passa enquanto o domínio não for habilitado. |
| Carregamento da sessão | SESSION_FETCH_FAILED (4001) com error.details.status = 403; o corpo traz block_reason web_origin_not_allowed ou web_origin_allowlist_empty (este quando a licença ainda não tem domínio algum registrado) |
Mesma ação: registre o domínio. Não recrie sessões em laço — cada sessão nova conta no limite de criação (100 por hora, abaixo) e uma sessão nova também será recusada até o domínio ser habilitado: a autorização é da licença, não da sessão. A sessão continua válida: habilitado o domínio, a mesma sessão pode ser carregada de novo. |
| Envio da captura | INGEST_FAILED (4002) com error.details.status = 403 e os mesmos block_reason; se a sessão foi carregada em um domínio e enviada de outro, o block_reason é web_origin_session_mismatch |
Domínio não habilitado ⇒ fale com a Provvi; a sessão continua válida e, habilitado o domínio, pode ser carregada de novo. web_origin_session_mismatch ⇒ o vínculo é definido no carregamento e não muda: conclua a captura na mesma página em que a sessão foi aberta, ou crie uma sessão nova e abra-a já nessa página. |
Os corpos literais de cada caso estão no Passo 4 · Erros.
Armazenamento do JPEG autenticado (store_asset_policy)
Seção intitulada “Armazenamento do JPEG autenticado (store_asset_policy)”Por padrão, a Provvi opera em modo zero-knowledge: o JPEG autenticado não é retido nos nossos servidores. Nesse caso o evento uploaded da captura entrega authenticated_jpeg_url: null e nenhum manifest_url é entregue ao seu código (ele viaja na resposta HTTP do ingest, mas o componente não o expõe no evento). O sidecar do manifesto fica disponível ao seu backend em GET /web/session-results/:token — busque e guarde o manifest_url logo após o uploaded: o registro da sessão vale 30 minutos e a rota não é garantida depois disso (ver Referência da API Web).
Se você precisa que a Provvi guarde e sirva o JPEG autenticado por você, peça para mudar a política. São três modos:
store_asset_policy (definido na sua licença) |
authenticated_jpeg_url |
|---|---|
NEVER (default, fail-closed) |
null — o evento traz só o session_id; o sidecar do manifesto sai por GET /web/session-results/:token, que você busca logo após o uploaded (não garantida depois dos 30 minutos de validade da sessão) |
ALWAYS |
URL presigned do JPEG autenticado |
PER_SESSION |
null no Web SDK — sem opt-in por sessão (ver abaixo) |
O armazenamento é derivado da sua licença (store_asset_policy, definido junto à Provvi) — não é um parâmetro do POST /web/sessions. ALWAYS e NEVER decidem direto. O modo PER_SESSION é um opt-in por sessão que o Web SDK não expõe (não há parâmetro de request no SDK puro); sob PER_SESSION, o Web SDK se comporta como NEVER. Se você precisa do JPEG autenticado, use ALWAYS. Se a política não estiver definida, o comportamento é NEVER por design (fail-closed).
Verificação de localização (gps_mode)
Seção intitulada “Verificação de localização (gps_mode)”A Provvi valida a localização reportada pelo dispositivo. O nível dessa verificação é configurado por conta (gps_mode) e definido com a Provvi; os critérios da validação não são publicados. Uma captura que não passa na validação pode ser recusada com 422 (Passo 4 · Erros).
Limites e prazos de validade
Seção intitulada “Limites e prazos de validade”Estes limites e TTLs valem para toda conta. Trate-os no seu fluxo de retry e ao decidir quando renovar uma URL.
| Limite / prazo | Valor |
|---|---|
Sessões criadas por x-api-key |
100 por hora — acima disso, POST /web/sessions responde 429 |
| Carregamentos da sessão (contando o primeiro) | 20 — acima disso, o componente recebe 429 ao buscar a sessão |
| Validade da sessão (TTL) | 30 minutos após a criação |
| Validade da URL de upload | 5 minutos |
| Validade das URLs presigned (JPEG e manifesto) | 7 dias — o registro da sessão, consultável em GET /web/session-results/:token, não é garantido depois dos 30 minutos acima |
Cada captura assinada é contabilizada no volume do seu plano.
Quantidade de fotos e rótulos — você orquestra
Seção intitulada “Quantidade de fotos e rótulos — você orquestra”O Web SDK é câmera de uma foto por chamada — não há perfis. Você decide quantas fotos (uma sessão e um token por foto: cada token vale por uma captura bem-sucedida) e o rótulo de orientação de cada uma (via overlay: { label } no open()). Nada a configurar na conta para isso — ver Passo 1 · Criar a sessão.
O que pedir à Provvi — resumo
Seção intitulada “O que pedir à Provvi — resumo”- Domínios autorizados — a lista de origens (produção, homologação, dev) de onde o componente será servido.
store_asset_policy—NEVER(zero-knowledge, default),ALWAYSouPER_SESSION.gps_mode— nível da verificação de localização, definido com a Provvi.
A garantia que a sua conta entrega
Seção intitulada “A garantia que a sua conta entrega”Independente da configuração acima, o tier do Web SDK é assinatura server-side ICP-Brasil A1 sobre os bytes recebidos — uma âncora de dissuasão de fraude (fraud deterrence). Não há proveniência de hardware do dispositivo (device-side): o Web SDK não é uma cadeia de prova com âncora de hardware. Para esse nível de garantia, use o SDK mobile (iOS/Android). Deixe isso claro para quem consome os seus laudos.