Pular para o conteúdo
AssinAPI
API-first • Feita para desenvolvedores

Assinatura eletrônica
para qualquer sistema.

Integre assinatura de documentos ao seu produto com uma API simples, segura e feita para quem desenvolve — do Low-Code ao High-Code.

Do MVP ao SaaS em escala.

Integre em minutos • Sandbox disponível • API REST • Webhooks

API Requests

15.647

requisições este mês

Documentos
Enviados
287
Assinados
241
Aguardando
39
server.ts — ASSINAPI_SECRET_KEY
POST /v1/signature-requests

{
  "title": "Contrato de prestação.pdf",
  "document": { "contentBase64": "JVBERi0x…" },
  "signer": {
    "name": "João Silva",
    "email": "joao@email.com"
  }
}
201 Created312 ms
{
  "id": "sigreq_82j9xq4m",
  "status": "SENT",
  "signingUrl": "https://assinapi.com.br/s/…"
}
Webhook

signer.signed

200 OK184 ms

Contrato de prestação.pdf

2/3 assinaturas

Funciona com o seu jeito de desenvolver

  • Low-Code
  • Vibe-Code
  • High-Code
  • SaaS
  • Automações

Uma API. Todo o fluxo.

Você desenvolve o sistema.
A AssinAPI cuida da assinatura.

Não perca semanas construindo fluxos de assinatura, autenticação, gerenciamento de signatários, evidências e notificações. Conecte a API e concentre seu time no produto que realmente importa.

  1. 01

    Envie o documento

    Crie um documento via API, upload ou template.

  2. 02

    Defina os signatários

    Informe quem precisa assinar e configure o fluxo.

  3. 03

    Receba o documento assinado

    Acompanhe tudo por webhook e recupere o documento final e sua trilha de auditoria.

Feita para quem constrói

Do prompt ao documento assinado.

Criando seu produto com Claude Code, Lovable, Cursor, Bolt, n8n, Make, Bubble ou código tradicional? Você não precisa desenvolver uma infraestrutura inteira de assinatura eletrônica. Use a AssinAPI.

  • LOW-CODE
  • VIBE-CODE
  • HIGH-CODE

AssinAPI

API • Webhooks • Evidências

Documento assinado
  • PDF final + QR de verificação✓
  • Certificado de evidências✓
  • Webhook envelope.completed✓

Low-Code

Endpoints simples, webhooks e exemplos prontos para integrar em ferramentas visuais e automações.

Bubble · FlutterFlow · n8n · Make · Zapier

Vibe-Code

Documentação preparada para você entregar para sua IA ou coding agent implementar.

Claude Code · Lovable · Cursor · Bolt

High-Code

API REST previsível, ambientes separados, autenticação segura e controle completo da integração.

Node · Python · PHP · Next.js · SDK

Developer first

Uma API que você entende antes mesmo de ler a documentação.

  • Endpoints previsíveis.
  • Responses consistentes.
  • Erros claros.
  • Webhooks confiáveis.
  • POST/v1/signature-requests
  • POST/v1/envelopes
  • POST/v1/envelopes/{id}/documents
  • POST/v1/envelopes/{id}/signers
  • POST/v1/envelopes/{id}/send
  • GET/v1/envelopes/{id}/audit
  • GET/v1/envelopes/{id}/evidence
curl -X POST https://api.assinapi.com.br/v1/signature-requests \
  -H "Authorization: Bearer $ASSINAPI_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Contrato de prestação",
    "document": {
      "filename": "contrato.pdf",
      "contentBase64": "JVBERi0x..."
    },
    "signer": {
      "name": "João Silva",
      "email": "joao@email.com",
      "cpf": "529.982.247-25"
    }
  }'

Erros sempre no formato { error: { code, message, cause, hint, docs, requestId } }.

Principais recursos

Tudo que um fluxo de assinatura precisa, via API.

API-first

Toda operação importante pode ser executada programaticamente — do upload ao download das evidências.

201POST /v1/envelopes182 ms
200POST /v1/envelopes/env_…/send240 ms
200GET /v1/envelopes/env_…/evidence72 ms

Documentos

Upload e gerenciamento de PDFs, com SHA-256 calculado pela plataforma.

Signatários

Adicione uma ou várias pessoas ao fluxo, com ordem opcional.

Templates

Transforme fluxos recorrentes em modelos reutilizáveis.

Webhooks

Saiba instantaneamente quando algo acontece. Assinados com HMAC.

Trilha de auditoria

Centralize os eventos e evidências relacionados à assinatura.

Autenticação

OTP por e-mail ou SMS, CPF e arquitetura pronta para novos métodos de validação.

White-label

Logo e cor da sua marca no portal do signatário.

Ambientes

Sandbox e Produção completamente separados, com chaves próprias.

Segurança

Segurança e evidências em cada assinatura.

A AssinAPI foi concebida para registrar os principais eventos envolvidos no processo de assinatura eletrônica, criando uma trilha técnica verificável para cada documento.

// cada evento referencia o anterior

#17 SIGNATURE_CREATED prev 9f2c…a41e

#18 ENVELOPE_COMPLETED prev 3b7d…0c9f

✓ manifesto assinado · cadeia íntegra

Como protegemos seus dados
  • Integridade do documento

    Hash SHA-256 dos bytes armazenados e controle de integridade.

  • Eventos

    Registro cronológico das ações, encadeado por hash.

  • Identificação

    Informações associadas aos signatários, com dados sensíveis mascarados.

  • IP e dispositivo

    Dados técnicos quando aplicáveis, capturados pelo servidor.

  • Timestamp

    Registro temporal dos eventos e carimbo do tempo RFC 3161 quando configurado.

  • Audit Trail

    Relatório consolidado do processo em PDF e manifesto assinado.

A validade jurídica de uma assinatura pode variar conforme o método de autenticação utilizado, o tipo de documento e a legislação aplicável. Assinaturas simples e avançadas da AssinAPI não utilizam certificado ICP-Brasil.

Controle total

Uma API poderosa.
Um dashboard simples.

Acompanhe documentos, integrações, webhooks e logs em um só lugar — com Sandbox e Produção impossíveis de confundir.

claude › implemente a integração com a AssinAPI
Implemente a integração com a AssinAPI neste repositório. Analise a stack existente e siga as convenções do projeto.

## Objetivo
Implementar: criação de envelope; upload de PDF; cadastro de signatário (nome, e-mail, CPF); envio para assinatura e armazenamento dos signingLinks; endpoint de webhook para envelope.completed (com validação HMAC); download do documento assinado e do certificado de evidências.

## Configuração
- Base URL: https://sandbox.api.assinapi.com.br/v1
- Autenticação: header `Authorization: Bearer ${ASSINAPI_SECRET_KEY}`
- Leia a chave SOMENTE da variável de ambiente ASSINAPI_SECRET_KEY no servidor.
- Leia o segredo do webhook de ASSINAPI_WEBHOOK_SECRET.
- Chaves ask_test_… = Sandbox (OTP de teste 123456, CPF de teste 529.982.247-25). Chaves ask_live_… = Produção.

## Regras de segurança (obrigatórias)
- NUNCA exponha ASSINAPI_SECRET_KEY no frontend, no navegador, em app mobile, em logs ou no repositório.
- Crie uma camada server-side chamada `assinapi.service` que concentra todas as chamadas à AssinAPI.
- O frontend conversa apenas com o seu backend.
- Não registre CPF, telefone, códigos OTP ou links de assinatura em logs.

## Endpoints
- POST https://sandbox.api.assinapi.com.br/v1/envelopes
  body: { "title": string, "message"?: string, "signatureLevel"?: "SIMPLE"|"ADVANCED", "expirationDays"?: number, "externalId"?: string }
  201 → { "id": "env_…", "status": "DRAFT", … }
- POST https://sandbox.api.assinapi.com.br/v1/envelopes/{envelopeId}/documents
  multipart/form-data com o campo "file" (PDF)  — ou JSON { "contentBase64": string, "filename": string }
  201 → envelope com documents[].sha256
- POST https://sandbox.api.assinapi.com.br/v1/envelopes/{envelopeId}/signers
  body: { "name": string, "email": string, "cpf": string, "phone"?: string, "authenticationMethod"?: "EMAIL_OTP"|"SMS_OTP", "signingOrder"?: number }
  201 → { "id": "sgn_…", "status": "PENDING", "cpfMasked": "***.456.789-**" }
- POST https://sandbox.api.assinapi.com.br/v1/envelopes/{envelopeId}/send
  body: { "notify"?: boolean }   (notify=false → você envia o link por outro canal)
  200 → { "status": "SENT", "signingLinks": [{ "signerId", "name", "signingUrl", "expiresAt" }] }
  Os signingLinks só aparecem NESTA resposta: salve-os se precisar.
- GET https://sandbox.api.assinapi.com.br/v1/envelopes/{envelopeId}
  200 → { "status": "DRAFT"|"SENT"|"IN_PROGRESS"|"COMPLETED"|"DECLINED"|"EXPIRED"|"CANCELLED", "signers": [{ "status" }] }
- GET https://sandbox.api.assinapi.com.br/v1/envelopes/{envelopeId}/evidence   (somente após COMPLETED)
  200 → { "downloads": { "documents": [{ "final": url, "original": url }], "certificate": url, "manifest": url }, "verifyUrl": string }
  As URLs expiram em minutos: baixe e armazene no seu storage, não salve a URL.

Atalho (uma chamada só): POST https://sandbox.api.assinapi.com.br/v1/signature-requests
  body: { "title": string, "document": { "filename": string, "contentBase64": string }, "signer": { "name", "email", "cpf" }, "authentication": "EMAIL_OTP" }
  201 → { "id": "env_…", "status": "SENT", "signingUrl": string, "signers": [...] }

## Idempotência e retries
- Envie `Idempotency-Key: <uuid>` em todo POST. Em retry (timeout, 429, 5xx) reenvie com a MESMA chave.
- Em 429 respeite o header Retry-After e use backoff exponencial.

## Tratamento de erros
Erros têm o formato { "error": { "code", "message", "hint", "docs", "requestId" } }. Trate pelo `code` (estável), exiba `message` ao usuário quando fizer sentido e registre o `requestId` para suporte.
Códigos comuns: VALIDATION_FAILED, CPF_REQUIRED, INVALID_CPF, ENVELOPE_INCOMPLETE, INVALID_STATE_TRANSITION, INVALID_API_KEY, RATE_LIMITED.

## Webhook
- Registre o endpoint: POST https://sandbox.api.assinapi.com.br/v1/webhooks { "url": "https://…/api/webhooks/assinapi", "events": ["envelope.completed", "signer.signed"] } → guarde o "secret" retornado (exibido uma vez).
- Headers recebidos: X-Signature (v1=<hex>), X-Event-Id, X-Timestamp.
- Valide: HMAC_SHA256(ASSINAPI_WEBHOOK_SECRET, `${X-Event-Id}.${X-Timestamp}.${corpo_bruto}`) === X-Signature (comparação em tempo constante).
- Rejeite X-Timestamp com mais de 5 minutos; deduplique por X-Event-Id; responda 2xx rápido.
- Payload envelope.completed: { "id", "type", "data": { "envelope": { "id", "status", "externalId" }, "evidence": { "manifestHash", "verifyUrl" }, "documents": [...] } }
- Ao receber envelope.completed, atualize o status no banco e (se aplicável) baixe o PDF final via GET /envelopes/{id}/evidence.

## Entregáveis
- `assinapi.service` com funções tipadas para cada operação.
- Persistir envelopeId (e externalId) junto ao registro do seu sistema.
- Variáveis de ambiente documentadas (.env.example sem valores reais).
- Testes da camada de serviço com a API mockada.

Integrando com IA?

Dê à sua IA o contexto que ela precisa.

Documentação compacta, pensada para coding agents. Copie, cole no seu agente e peça a integração — a secret key nunca entra no prompt.

4.208 caracteres de contexto · pronto para Claude Code, Lovable, Cursor, Bolt, ChatGPT e Codex.

Gerar minha API key de Sandbox

Perguntas frequentes

Dúvidas comuns.

O que é a AssinAPI?

A AssinAPI é uma infraestrutura de assinatura eletrônica criada para que outros sistemas possam enviar, gerenciar e acompanhar documentos para assinatura através de API.

Preciso ser desenvolvedor?

Não necessariamente. A API é simples o suficiente para ser integrada com ferramentas Low-Code, automações ou coding agents — há exemplos prontos para Bubble, FlutterFlow, n8n, Make e Zapier.

Posso usar com sistemas criados por IA?

Sim. A documentação tem uma versão compacta para agentes de programação e prompts prontos para Claude Code, Lovable, Cursor, Bolt, ChatGPT e Codex.

Existe ambiente de testes?

Sim. Use o Sandbox antes de enviar documentos em produção: OTP de teste, CPFs fictícios e documentos marcados como sem validade.

Como recebo atualizações das assinaturas?

Através de webhooks assinados com HMAC e também pelo dashboard.

Posso acompanhar os eventos de um documento?

Sim. Cada processo possui uma timeline e uma trilha de eventos encadeada por hash, além de certificado de evidências e verificação pública.

Comece agora

Seu sistema já está pronto.
Só falta a assinatura.

Adicione assinatura eletrônica ao seu produto sem construir toda a infraestrutura do zero.

API REST • Sandbox • Webhooks • Developer-first