Pular para o conteúdo

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.

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).

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).

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.

  • 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), ALWAYS ou PER_SESSION.
  • gps_mode — nível da verificação de localização, definido com a Provvi.

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.


← Passo 5 · Resultados · Voltar ao início da jornada →