Passo 5 · Resultados (inline)
Quando o usuário conclui a captura, a foto é assinada server-side com ICP-Brasil A1 e o resultado volta para você inline — o componente emite o evento uploaded com a imagem autenticada. Não há webhook nem consulta: você recebe o resultado na própria captura.
O que você recebe
Seção intitulada “O que você recebe”O componente emite o evento uploaded (ver Passo 3 · Ciclo de captura) com o resultado da captura:
| Campo | Descrição |
|---|---|
authenticated_jpeg_url |
URL presigned do JPEG autenticado — o manifesto C2PA e a assinatura ICP-Brasil vão embutidos no próprio arquivo (auto-verificável). Não há URL de manifesto separada: a prova viaja no JPEG. Pode vir null — ver JPEG ausente. |
session_id |
ID único da captura concluída. |
A prova é autocontida no JPEG. Baixe e guarde o arquivo no seu próprio storage assim que receber o resultado — a URL presigned expira em 7 dias; não dependa dela a longo prazo.
Quando authenticated_jpeg_url é null
Seção intitulada “Quando authenticated_jpeg_url é null”Contas em modo zero-knowledge (store_asset_policy = NEVER, o default) não retêm o JPEG — a Provvi não o armazena, então authenticated_jpeg_url vem null. Isso é esperado, não um erro.
Nesse modo, o Web SDK não entrega um artefato inline (o JPEG autenticado — que carrega o manifesto embutido — não é retido, e o componente não expõe uma URL de manifesto à parte). Se você precisa que a Provvi retenha e sirva o JPEG autenticado, configure a política da sua licença como ALWAYS — ver Passo 6 · Configuração. A política de armazenamento é derivada da sua licença (não é um parâmetro do integrador).
Renovando URLs expiradas
Seção intitulada “Renovando URLs expiradas”A URL presigned (authenticated_jpeg_url) vale por 7 dias. Se ela expirou e você precisa de acesso novamente, gere uma nova chamando GET /web/image/:session_id (backend-only) com o session_id da captura:
// Backend do integradorasync function renovarUrl(sessionId) { const res = await fetch( `${process.env.PROVVI_SESSIONS_URL}/web/image/${sessionId}` ); if (!res.ok) throw new Error(`web/image ${res.status}`); return res.json(); // devolve uma URL presigned fresca para o JPEG autenticado}Onde PROVVI_SESSIONS_URL é a base da API de sessões — a mesma do Passo 1. Em contas NEVER (sem JPEG armazenado), não há asset a servir.