P&S2B
PES2B Sign Service Developer Portal
API REST

Assinatura digital de documentos PDF

API para aplicação de assinatura digital ICP-Brasil no padrão PAdES, com suporte a carimbo do tempo, selo visual, página de autenticação e integração com automações.

URL base

https://sign.pes2b.com

Autenticação

As requisições protegidas devem enviar a chave da API no cabeçalho X-API-Key.

X-API-Key: SUA_CHAVE
Importante: Nunca coloque a API Key diretamente em workflows públicos, código-fonte ou documentação compartilhada.

Health checks

GET /api/v1/health
{
  "success": true,
  "message": "Serviço disponível.",
  "data": {
    "service": "pes2b-sign-service",
    "status": "UP"
  }
}

Assinar PDF

POST /api/v1/sign

Recebe um documento PDF convertido para Base64 e devolve o PDF assinado também em Base64.

Requisição

{
  "pdfBase64": "JVBERi0xLjQK..."
}
Campo Tipo Obrigatório Descrição
pdfBase64 String Sim Conteúdo integral do PDF codificado em Base64.

Resposta de sucesso

{
  "success": true,
  "message": "Documento assinado com sucesso.",
  "data": {
    "signedPdfBase64": "JVBERi0xLjQK..."
  }
}

Modos de aparência visual

O serviço pode operar com diferentes modos visuais, configurados no ambiente ou futuramente enviados por requisição.

NONE

Apenas assinatura criptográfica, sem elementos visuais.

STAMP_ONLY

Selo de assinatura em todas as páginas.

PAGE_ONLY

Página final de autenticação com QR Code.

STAMP_AND_PAGE

Selo em todas as páginas e página final premium.

Exemplo em cURL

curl --request POST \
  "https://sign.pes2b.com/api/v1/sign" \
  --header "Content-Type: application/json" \
  --header "X-API-Key: SUA_CHAVE" \
  --data '{
    "pdfBase64": "JVBERi0xLjQK..."
  }'

Exemplo em JavaScript

const response = await fetch(
  "https://sign.pes2b.com/api/v1/sign",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": process.env.PES2B_API_KEY
    },
    body: JSON.stringify({
      pdfBase64
    })
  }
);

if (!response.ok) {
  throw new Error(
    `Erro ao assinar PDF: ${response.status}`
  );
}

const result = await response.json();

const signedPdfBase64 =
  result.data.signedPdfBase64;

Configuração no n8n

1

Use um node HTTP Request.

2

Método POST para /api/v1/sign.

3

Envie o cabeçalho X-API-Key.

4

Use o body JSON com pdfBase64.

5

Reconstrua o arquivo usando data.signedPdfBase64.

Códigos de erro

Código HTTP Descrição
INVALID_REQUEST 400 Requisição inválida.
INVALID_JSON 400 JSON inválido.
INVALID_PDF 400 Conteúdo não corresponde a um PDF válido.
FILE_TOO_LARGE 400 Arquivo superior ao limite permitido.
TIMESTAMP_ERROR 400 Falha ao obter o carimbo do tempo.
INTERNAL_ERROR 500 Erro interno ao processar o documento.
{
  "success": false,
  "code": "INVALID_PDF",
  "message": "O conteúdo informado não corresponde a um PDF válido.",
  "requestId": "e4bcb98e-f87f-45bc-b8d7-55f9ebf84f15",
  "timestamp": "2026-07-11T18:30:00-03:00",
  "path": "/api/v1/sign"
}

Segurança

  • O PDF é processado em memória e não deve ser persistido sem autorização.
  • A API Key deve ficar em cofre de credenciais ou variável de ambiente.
  • Nunca registre o conteúdo Base64 do documento nos logs.
  • Nunca envie senha de certificado ou arquivo PFX na requisição comum.