---
title: "Verificar se um PDF está assinado"
method: POST
path: "/v1/verify/document"
tags: ["Verification"]
---

# Verificar se um PDF está assinado

`POST /v1/verify/document`

## Request

- Base URL: `https://api.signdocs.com.br`
- URL: `https://api.signdocs.com.br/v1/verify/document`
- Auth: HTTP bearer

Recebe um PDF (base64) e informa se o documento **contém assinatura**,
listando as assinaturas encontradas. Útil para validar documentos de
qualquer origem, sem necessidade de um identificador prévio.

Detecção apenas de **assinaturas digitais embutidas** (PAdES/CAdES,
via dicionário de assinatura PKCS#7 com `/ByteRange`). Artefatos visuais
(rubrica desenhada, carimbo, texto) **não** são considerados assinatura.
**Não** extrai identidade do signatário (CPF/CNPJ), **não** valida cadeia
de certificação ICP-Brasil nem revogação (OCSP/CRL), e **não** consulta
registros do SignDocs — é agnóstica ao provedor.

O PDF é inspecionado em memória e descartado; nunca é armazenado.

Requer scope `verification:write` e **credenciais de produção** — chaves
de sandbox/homologação recebem `403`. Cada chamada consome uma unidade da
cota `verification`.

Suporta idempotência via header `X-Idempotency-Key`: reenviar a mesma
chave com o mesmo PDF devolve a resposta original sem consumir cota
novamente.

## Headers

- `X-Idempotency-Key` string, uuid

## Request body

- VerifyDocumentRequest: PDF a ser inspecionado quanto à presença de assinatura.
  - `content` string, byte, required: Conteúdo do PDF em base64 (máximo 10 MB).
  - `filename` string: Nome opcional do arquivo (apenas informativo).

## Response `200`

Documento inspecionado com sucesso.

- VerifyDocumentResponse: Resultado da detecção de assinaturas no PDF.
  - `signed` boolean, required: `true` se ao menos uma assinatura foi detectada.
  - `signatureCount` integer, required: Quantidade de assinaturas detectadas.
  - `signatures` DetectedSignature[], required: Assinaturas detectadas.
    - `method` string, required: Identificador do método de detecção.
    - `type` 'pades' | 'pkcs7' | 'legacy' | 'digital_certificate', required: Categoria da assinatura.
    - `subFilter` string: SubFilter do dicionário de assinatura, quando presente.
    - `filter` string: Handler /Filter da assinatura, quando reconhecido.
    - `confidence` number, float, required: Confiança da detecção (0 a 1).
  - `checkedAt` string, date-time, required: Momento da verificação (UTC ISO 8601).

## Other responses

- `400`: Requisição inválida — parâmetros ausentes ou malformados.
- `401`: Autenticação ausente ou inválida.
- `403`: Permissões insuficientes para a operação solicitada. Inclui `purpose: "ACTION_AUTHENTICATION"` sem `featureFlags.trustSessionsEnabled`. A verificação é pelo `purpose`, não pela rota: vale em `/v1/transactions`, `/v1/signing-sessions` e `/v1/envelopes/{envelopeId}/sessions`, além de `/v1/trust-sessions`. O remédio é habilitar a flag para o tenant e provisionar a cota `monthlyTrustSessions`.
- `409`: Conflito de estado — a operação não pode ser realizada no estado atual do recurso.
- `422`: Entidade não processável — a requisição é sintaticamente válida mas semanticamente incorreta. Inclui o perfil de política não autorizado para o tenant. As rotas de criação (`/v1/transactions`, `/v1/signing-sessions` e `/v1/envelopes/{envelopeId}/sessions`) verificam a mesma regra, antes de cota, convite e gravação — a recusa não consome documento. As flags envolvidas são `featureFlags.customPolicyEnabled` (perfil `CUSTOM`), `serpro.enabled` (perfis SERPRO), `featureFlags.documentExtractionEnabled` (fallback por documento; `BIOMETRIC_SERPRO_AUTO_FALLBACK` exige as duas últimas) e `featureFlags.biometricRequired`. O remédio é habilitar a flag para o tenant. `signer.cpf` e `signer.birthDate`, exigidos pelos perfis SERPRO, são validados como **400** e não aqui: requisição malformada, corrigível na mesma chamada.
- `429`: Limite de requisições excedido.

---

[API](https://skmtc.dev/signdocs/apis/signdocs-brasil-external-api.md) · [All operations](https://skmtc.dev/signdocs/apis/signdocs-brasil-external-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signdocs/apis/signdocs-brasil-external-api/revisions/2d3805aed161?raw)
