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
- Enviados
- 287
- Assinados
- 241
- Aguardando
- 39
POST /v1/signature-requests
{
"title": "Contrato de prestação.pdf",
"document": { "contentBase64": "JVBERi0x…" },
"signer": {
"name": "João Silva",
"email": "joao@email.com"
}
}{
"id": "sigreq_82j9xq4m",
"status": "SENT",
"signingUrl": "https://assinapi.com.br/s/…"
}signer.signed
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.
- 01
Envie o documento
Crie um documento via API, upload ou template.
- 02
Defina os signatários
Informe quem precisa assinar e configure o fluxo.
- 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-CODEBubble · FlutterFlow · n8n · Make · Zapier
- VIBE-CODEClaude Code · Lovable · Cursor · Bolt
- HIGH-CODENode · Python · PHP · Next.js · SDK
AssinAPI
API • Webhooks • Evidências
- 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.
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
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.
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 SandboxPerguntas 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