API de Assinaturas Digitais com Validade Jurídica
Integre assinaturas eletrônicas em minutos. Crie envelopes com vários documentos, configure a autenticação e receba os eventos em tempo real por webhook.
Documentação
Geral
Documentação Glossário da API Erros e tratativasTime de Engenharia
Referências da API AutenticaçãoRecursos
Integrações nativas Ambientes Ferramentas de IA Trechos de código Collection Postman e Insomnia Status da APIPor que usar a API da Clicksign
Integre mais rápido com IA
Use nossas ferramentas de IA para gerar trechos de código, esclarecer dúvidas da documentação e acelerar cada etapa da integração.
Conhecer as ferramentas de IAIntegração em duas semanas
Do upload do documento ao envelope enviado, com código testado e pronto para executar.
Ver primeiros passosSuporte e documentação em português
Guias, exemplos de código e referência completa no seu idioma, com um time pronto para ajudar quando você precisar.
Ver agoraPadrão JSON:API Compliant: erros padronizados e documentados para acelerar seu debugging.
Exemplos prontos
Copie, cole e execute
Cada endpoint traz exemplos na linguagem que você usa. Comece com nossas coleções oficiais de Postman e Insomnia.
# Criar envelope com 1 documento e 1 signatário curl -X POST 'https://sandbox.clicksign.com/api/v3/envelopes' \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "envelope": { "name": "Contrato de Prestação", "documents": [{ "id": "doc_abc123" }], "signers": [{ "email": "[email protected]", "name": "Maria Silva", "documentation": "12345678900" }] } }'
// Criar envelope com 1 documento e 1 signatário const res = await fetch( 'https://sandbox.clicksign.com/api/v3/envelopes', { method: 'POST', headers: { Authorization: `Bearer ${TOKEN}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ envelope: { name: 'Contrato de Prestação', documents: [{ id: 'doc_abc123' }], signers: [{ email: '[email protected]', name: 'Maria Silva', documentation: '12345678900' }] }}) });
# Criar envelope com 1 documento e 1 signatário import requests res = requests.post( "https://sandbox.clicksign.com/api/v3/envelopes", headers={"Authorization": f"Bearer {TOKEN}"}, json={"envelope": { "name": "Contrato de Prestação", "documents": [{"id": "doc_abc123"}], "signers": [{ "email": "[email protected]", "name": "Maria Silva", "documentation": "12345678900"}] }})
# Criar envelope com 1 documento e 1 signatário require 'net/http'; require 'json' uri = URI('https://sandbox.clicksign.com/api/v3/envelopes') req = Net::HTTP::Post.new(uri) req['Authorization'] = "Bearer #{TOKEN}" req['Content-Type'] = 'application/json' req.body = { envelope: { name: 'Contrato de Prestação', documents: [{ id: 'doc_abc123' }], signers: [{ email: '[email protected]' }] }}.to_json
// Criar envelope com 1 documento e 1 signatário $ch = curl_init('https://sandbox.clicksign.com/api/v3/envelopes'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer $TOKEN", "Content-Type: application/json" ], CURLOPT_POSTFIELDS => json_encode(["envelope" => [ "name" => "Contrato de Prestação", "documents" => [["id" => "doc_abc123"]] ]]) ]);
Tutorial completo
Sua primeira integração, do início ao fim
Assista ao passo a passo em vídeo, do cadastro à primeira chamada autenticada, e acompanhe no seu ambiente.
Quando algo falha
Tratamento de erros globais
Para garantir consistência e previsibilidade, toda falha na API da Clicksign segue estritamente a especificação JSON:API v1.0. Você sempre recebe o mesmo formato, com causa e ponto exato do problema.
| Propriedade | Descrição | Exemplo |
|---|---|---|
status |
O código de status HTTP, expresso como inteiro. | 422 |
code |
Código de erro do ecossistema Clicksign para indexação rápida. | "bad_request" |
title |
Descrição curta e legível do problema. | "Não autorizado" |
detail |
Explicação contextualizada da causa exata e de como corrigir. | "O arquivo possui formato inválido." |
Perguntas frequentes
As dúvidas mais comuns de quem está integrando.
O que é um Envelope?
Como funciona o ambiente Sandbox?
sandbox.clicksign.com nas requisições. Tokens do Sandbox não funcionam em
produção, e vice-versa.
Como valido a assinatura HMAC dos webhooks?
x-clicksign-signature.
Recalcule o HMAC do corpo recebido com sua chave secreta e compare com o cabeçalho antes
de processar. Trate cada evento como idempotente, porque os avisos
podem ser reenviados.Os tokens de acesso expiram?
access_token expira após 90 dias. Trate-o como
uma senha: não exponha no frontend nem versione no repositório. Configure rotação
automática ou alertas de expiração para evitar o erro AUTH-401.