Assin — API Reference
Documentação completa da Gateway API da plataforma Assin — o ponto de entrada para criação de envelopes, gestão de documentos, controle de signatários, automações via webhook e muito mais.
Autenticação
Authorization.
Formato do header
Authorization: Bearer <sua-api-key> Origin: https://seuapp.com.br x-origin-with-label: web-app
Exemplo cURL
curl -X GET "{BASE_URL}/v1/envelopes" \ -H "Authorization: Bearer sk_live_xxxxxxxxxxxx" \ -H "Origin: https://seuapp.com.br" \ -H "x-origin-with-label: web-app"
Base URL
{BASE_URL} como placeholder.
| Ambiente | Base URL |
|---|---|
| Produção | {BASE_URL}/v1 |
| Homologação | {BASE_URL_HML}/v1 |
Headers Obrigatórios
| Header | Exemplo | Descrição |
|---|---|---|
| Authorization | Bearer sk_live_xxx |
API Key da empresa |
| Origin | https://seuapp.com.br |
Origem da requisição — validada pelo CORS |
| x-origin-with-label | web-app |
Label do cliente (ex: web-app, mobile, integration) |
Erros Padrão
| Status | Significado |
|---|---|
| 400 | Payload inválido — campo obrigatório ausente ou valor fora do range permitido |
| 401 | API Key ausente, expirada ou inválida |
| 403 | A chave não tem permissão para o recurso requisitado |
| 404 | Recurso não encontrado ou não pertence à empresa autenticada |
| 422 | Regra de negócio violada (ex: envelope não está em DRAFT, créditos insuficientes) |
| 500 | Erro interno — contate o suporte com o requestId da resposta |
{
"statusCode": 422,
"message": "Envelope is not in DRAFT status",
"error": "Unprocessable Entity"
}
Sistema de Filtros
filters, sortBy,
includes, page e pageSize como query params. O formato segue o padrão
@duaneoli/typeorm-nest-joi.Os filtros são passados como
filters[campo.operador]=valor. Cada campo suporta um ou mais operadores dependendo do seu tipo.
Operadores disponíveis
| Operador | Equivalente SQL | Exemplo de query param |
|---|---|---|
| equals | = 'valor' | filters[status.equals]=DRAFT |
| not | != 'valor' | filters[status.not]=CANCELLED |
| iLike | ILIKE 'valor' | filters[title.iLike]=contrato |
| %iLike% | ILIKE '%valor%' | filters[title.%iLike%]=contrato |
| iLike% | ILIKE 'valor%' | filters[title.iLike%]=Cont |
| moreThan | > valor | filters[createdAt.moreThan]=2026-01-01 |
| moreThanOrEqual | >= valor | filters[createdAt.moreThanOrEqual]=2026-01-01 |
| lessThan | < valor | filters[createdAt.lessThan]=2026-12-31 |
| lessThanOrEqual | <= valor | filters[createdAt.lessThanOrEqual]=2026-12-31 |
| between | BETWEEN a AND b | filters[createdAt.between]=2026-01-01,2026-06-30 |
| isEmpty | IS NULL | filters[expiredAt.isEmpty]=true |
| isNotEmpty | IS NOT NULL | filters[expiredAt.isNotEmpty]=true |
GET /v1/envelopes ?filters[status.equals]=DRAFT &filters[title.%iLike%]=contrato &page=0 &pageSize=20
Ordene resultados com
sortBy[campo]=ASC|DESC. Múltiplos campos podem ser combinados.
GET /v1/envelopes?sortBy[createdAt]=DESC GET /v1/envelopes?sortBy[title]=ASC&sortBy[createdAt]=DESC GET /v1/envelope-signers?sortBy[order]=ASC
filters e sortBy na mesma requisição — eles são independentes.
Carregue relações associadas com
includes=entidade1,entidade2. Use ponto para relações aninhadas.
| Endpoint | Includes disponíveis |
|---|---|
| GET /envelopes | user, envelopeSigners, envelopeSigners.signer,
envelopeDocuments, envelopeDocuments.document |
| GET /envelope-signers | signer, envelope |
| GET /signer-groups | user, participants |
| GET /documents | — |
GET /v1/envelopes?includes=envelopeSigners,envelopeDocuments.document GET /v1/envelopes?includes=user&filters[status.equals]=COMPLETED
includes adiciona um JOIN e impacta
a performance.
const api = axios.create({ baseURL: '{BASE_URL}/v1', headers: { Authorization: `Bearer ${API_KEY}`, Origin: 'https://seuapp.com.br', 'x-origin-with-label': 'web-app', }, })
// axios serializa arrays/objetos automaticamente como query string const { data } = await api.get('/envelopes', { params: { 'filters[status.equals]': 'DRAFT', 'filters[title.%iLike%]': 'contrato', 'filters[createdAt.moreThan]': '2026-01-01', 'sortBy[createdAt]': 'DESC', includes: 'envelopeSigners,envelopeDocuments', page: 0, pageSize: 20, }, }) // data = { totalElements: 42, data: [...] }
const [page, setPage] = useState(0) const [status, setStatus] = useState<string | undefined>() const fetchEnvelopes = async () => { const params: Record<string, unknown> = { page, pageSize: 20 } if (status) params['filters[status.equals]'] = status return api.get('/envelopes', { params }).then(r => r.data) } // Com React Query — refaz a requisição quando page ou status mudam const { data } = useQuery({ queryKey: ['envelopes', { page, status }], queryFn: fetchEnvelopes, placeholderData: (prev) => prev, })
Envelopes
Retorna todos os envelopes da empresa autenticada com suporte a paginação, filtros por status e busca textual.
Query params
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| page | number | opcional | Página (padrão: 0) |
| pageSize | number | opcional | Itens por página — máx 100 (padrão: 20) |
| status | string | opcional | DRAFT | WAITING_SIGNATURE | COMPLETED |
CANCELLED | EXPIRED |
| search | string | opcional | Busca por nome do envelope ou signatário |
{
"totalElements": 42,
"data": [
{
"id": "uuid",
"name": "Contrato de Prestação de Serviços",
"status": "WAITING_SIGNATURE",
"createdAt": "2026-05-02T00:00:00Z",
"signers": [...]
}
]
}
Cria um novo envelope em status DRAFT. Após criar, adicione documentos e signatários antes de
lacrar.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | obrigatório | Nome do envelope |
| description | string | opcional | Descrição interna |
| deadline | string | opcional | Data limite ISO 8601 para assinatura |
| folderId | uuid | opcional | Pasta de organização |
| validationByIcp | boolean | opcional | Exigir assinatura ICP-Brasil (requer permissão na empresa) |
{
"name": "Contrato Q2-2026",
"description": "Contrato anual de parceria",
"deadline": "2026-06-30T23:59:59Z",
"folderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Lacra o envelope, verifica e debita créditos, e dispara notificações para o primeiro signatário (ou todos,
se a ordem for paralela). O envelope muda para WAITING_SIGNATURE.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope em status DRAFT |
{
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Cancela um envelope em status WAITING_SIGNATURE. Notificações de cancelamento são disparadas
para os signatários pendentes.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope |
| reason | string | opcional | Motivo do cancelamento (enviado aos signatários) |
{
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"reason": "Contrato renegociado — nova versão será enviada em breve"
}
Atualiza nome, descrição, prazo ou pasta de um envelope em status DRAFT.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope |
| name | string | opcional | Novo nome |
| description | string | opcional | Nova descrição |
| deadline | string | opcional | Novo prazo ISO 8601 |
| folderId | uuid | opcional | Nova pasta |
{
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Contrato Q2-2026 — Revisado",
"deadline": "2026-07-31T23:59:59Z"
}
Gerencia os documentos associados a um envelope em DRAFT. Use :method = set para
adicionar e :method = remove para desvincular.
Path params
| Parâmetro | Valores |
|---|---|
| method | set | remove |
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope |
| documentId | uuid | obrigatório | ID do documento |
{
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"documentId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
}
Retorna URLs presigned para leitura/download dos documentos de um envelope. As URLs expiram em 1 hora.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope |
{
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
{
"data": [
{
"documentId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"name": "Contrato Q2-2026.pdf",
"url": "https://s3.amazonaws.com/bucket/key?X-Amz-Expires=3600&...",
"expiresAt": "2026-05-02T16:00:00Z"
}
]
}
Bloqueia temporariamente a assinatura de um envelope sem cancelá-lo. Útil para pausar o fluxo enquanto há disputas ou revisões.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope |
| blocked | boolean | obrigatório | true bloqueia, false desbloqueia |
{
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"blocked": true
}
Retorna contadores de envelopes por status para o dashboard da empresa.
{
"total": 150,
"draft": 12,
"waitingSignature": 38,
"completed": 95,
"cancelled": 5
}
Remove permanentemente um envelope em status DRAFT. Não é possível excluir envelopes lacrados
— use PUT /cancel nesses casos.
Path params
| Parâmetro | Tipo | Descrição |
|---|---|---|
| envelopeId | uuid | ID do envelope a excluir |
Documents
Lista todos os documentos da empresa com paginação.
Query params
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| page | number | opcional | Página (padrão: 0) |
| pageSize | number | opcional | Itens por página — máx 100 (padrão: 20) |
{
"totalElements": 5,
"data": [
{
"id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"name": "Contrato de Prestacao de Servicos.pdf",
"size": 245760,
"s3Key": "documents/tenant-uuid/2026/05/contrato.pdf",
"createdAt": "2026-05-02T12:00:00Z"
}
]
}
Registra um documento via URL presigned gerada previamente. O arquivo deve ser um PDF e já estar armazenado no S3.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | obrigatório | Nome do documento |
| s3Key | string | obrigatório | Chave S3 do arquivo já enviado |
{
"name": "Contrato de Prestacao de Servicos.pdf",
"s3Key": "documents/tenant-uuid/2026/05/contrato.pdf"
}
{
"id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"name": "Contrato de Prestacao de Servicos.pdf",
"s3Key": "documents/tenant-uuid/2026/05/contrato.pdf",
"createdAt": "2026-05-02T12:00:00Z"
}
Gera uma URL presigned temporária para download ou visualização de um documento. Requer header
x-dynamic-authorization com o token do signatário ou da sessão.
{
"url": "https://s3.amazonaws.com/bucket/key?X-Amz-Expires=3600&...",
"expiresAt": "2026-05-02T16:00:00Z"
}
Verifica se um documento é autêntico a partir de seu fingerprint blockchain ou ID. Use para o portal público de validação.
Query params (pelo menos um obrigatório)
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fingerprint | string | Hash blockchain do documento finalizado |
| documentId | uuid | ID interno do documento |
{
"valid": true,
"documentId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"envelopeName": "Contrato Q2-2026",
"finishedAt": "2026-05-02T18:45:00Z",
"blockchainTx": "0xabc123...def456",
"signers": [
{ "name": "Maria Souza", "signedAt": "2026-05-02T17:30:00Z" }
]
}
Remove um documento da empresa. Documentos vinculados a envelopes lacrados não podem ser excluídos.
Templates
Lista todos os templates da empresa. Suporta filtros e paginação.
{
"totalElements": 3,
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Contrato Padrao CLT",
"isActive": true,
"documentId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"fields": [
{ "key": "nomeColaborador", "label": "Nome do Colaborador" },
{ "key": "cpf", "label": "CPF" },
{ "key": "salario", "label": "Salario Bruto" },
{ "key": "dataAdmissao", "label": "Data de Admissao" }
],
"createdAt": "2026-03-10T09:00:00Z"
}
]
}
Cadastra um novo template associado ao documento S3 com seus campos variáveis mapeados.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | obrigatório | Nome do template |
| documentId | uuid | obrigatório | Documento base |
| fields | array | obrigatório | Lista de campos variáveis com nome e posição |
{
"name": "Contrato Padrao CLT",
"documentId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"fields": [
{ "key": "nomeColaborador", "label": "Nome do Colaborador" },
{ "key": "cpf", "label": "CPF" },
{ "key": "salario", "label": "Salario Bruto" },
{ "key": "dataAdmissao", "label": "Data de Admissao" }
]
}
Alterna o estado ativo do template. Templates inativos não podem ser usados para gerar documentos.
Path params
| Parâmetro | Valores |
|---|---|
| status | true | false |
Substitui os campos variáveis do template pelos valores fornecidos e gera um PDF pronto para ser adicionado a um envelope.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| templateId | uuid | obrigatório | ID do template |
| variables | object | obrigatório | Pares chave/valor dos campos do template |
| documentName | string | opcional | Nome para o documento gerado |
{
"templateId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"documentName": "Contrato João Silva 2026",
"variables": {
"nomeCliente": "João Silva",
"cpf": "000.000.000-00",
"valorContrato": "R$ 5.000,00"
}
}
Remove um template da empresa. Templates usados em envelopes existentes não são afetados.
Body
| Campo | Tipo | |
|---|---|---|
| templateId | uuid | obrigatório |
{
"templateId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Envelope Signers
Lista os signatários de um envelope específico.
Query params
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope |
[
{
"id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed",
"name": "Maria Souza",
"email": "maria@empresa.com.br",
"phone": "+5511999887766",
"signatureType": "SIGN",
"order": 1,
"status": "PENDING",
"notificationChannel": "EMAIL",
"signedAt": null
},
{
"id": "2c8e7fce-ccge-5c3e-0c6e-bc9egcce5cfe",
"name": "João Diretor",
"email": "joao.diretor@empresa.com.br",
"phone": null,
"signatureType": "APPROVE",
"order": 2,
"status": "WAITING",
"notificationChannel": "EMAIL",
"signedAt": null
}
]
Adiciona um signatário a um envelope em DRAFT. O campo order define a sequência
de assinatura — use 0 para assinatura paralela.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| envelopeId | uuid | obrigatório | ID do envelope |
| name | string | obrigatório | Nome do signatário |
| string | obrigatório | E-mail para notificação | |
| phone | string | opcional | Telefone para WhatsApp/SMS |
| signatureType | string | obrigatório | SIGN | APPROVE | WITNESS | CARBON_COPY |
| order | number | obrigatório | 0 = paralelo; 1, 2, 3... = sequencial |
| notificationChannel | string | opcional | EMAIL | WHATSAPP | SMS |
{
"envelopeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Maria Souza",
"email": "maria@empresa.com.br",
"signatureType": "SIGN",
"order": 1,
"notificationChannel": "EMAIL"
}
Remove um signatário de um envelope em DRAFT.
Body
| Campo | Tipo | |
|---|---|---|
| envelopeSignerId | uuid | obrigatório |
{
"envelopeSignerId": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"
}
Reenvia o link de assinatura para um signatário via o canal especificado.
Path params
| Parâmetro | Valores |
|---|---|
| type | email | whatsapp | sms |
Body
| Campo | Tipo | |
|---|---|---|
| envelopeSignerId | uuid | obrigatório |
{
"envelopeSignerId": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"
}
Retorna contadores de signatários por status para a empresa autenticada.
{
"total": 320,
"pending": 42,
"signed": 268,
"rejected": 10
}
Signer Groups
Retorna todos os grupos de signatários da empresa com paginação.
Query params
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| page | number | opcional | Página (padrão: 0) |
| pageSize | number | opcional | Itens por página — máx 100 (padrão: 20) |
{
"totalElements": 2,
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Diretoria Financeira",
"description": "CFO + CEO para contratos acima de R$ 50k",
"members": [
{ "name": "Carlos CEO", "email": "ceo@empresa.com.br", "signatureType": "SIGN", "order": 1 },
{ "name": "Ana CFO", "email": "cfo@empresa.com.br", "signatureType": "SIGN", "order": 2 }
],
"createdAt": "2026-04-10T09:00:00Z"
}
]
}
Cria um grupo reutilizável com membros e configurações de assinatura já pré-definidas.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | obrigatório | Nome do grupo |
| description | string | opcional | Descrição interna |
| members | array | obrigatório | Lista de membros (ver abaixo) |
Estrutura de cada membro
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | obrigatório | Nome do signatário |
| string | obrigatório | ||
| phone | string | opcional | Telefone |
| signatureType | string | obrigatório | SIGN | APPROVE | WITNESS | CARBON_COPY |
| order | number | obrigatório | 0 = paralelo; 1+ = sequencial |
{
"name": "Diretoria Financeira",
"description": "CFO + CEO para contratos acima de R$ 50k",
"members": [
{
"name": "Carlos CEO",
"email": "ceo@empresa.com.br",
"signatureType": "SIGN",
"order": 1
},
{
"name": "Ana CFO",
"email": "cfo@empresa.com.br",
"signatureType": "SIGN",
"order": 2
}
]
}
Atualiza nome, descrição ou membros de um grupo. Envelopes que já importaram o grupo não são afetados.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | opcional | Novo nome |
| description | string | opcional | Nova descrição |
| members | array | opcional | Nova lista de membros (substitui a anterior) |
{
"name": "Diretoria Financeira e Jurídica",
"members": [
{ "name": "Carlos CEO", "email": "ceo@empresa.com.br", "signatureType": "SIGN", "order": 1 },
{ "name": "Ana CFO", "email": "cfo@empresa.com.br", "signatureType": "SIGN", "order": 2 },
{ "name": "Luiza Jurídico", "email": "juridico@empresa.com.br", "signatureType": "WITNESS", "order": 3 }
]
}
Remove permanentemente o grupo. Envelopes que já importaram o grupo permanecem inalterados.
Cria automaticamente um EnvelopeSigner para cada membro do grupo no envelope indicado. O
envelope deve estar em status DRAFT.
POST /envelope-signers.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| groupId | uuid | obrigatório | ID do grupo a importar |
| envelopeId | uuid | obrigatório | ID do envelope de destino |
{
"groupId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"envelopeId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
}
Folders
parentId.Retorna pastas da empresa. Use parentId para listar subpastas de uma pasta específica.
Query params
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| page | number | opcional | Página (padrão: 0) |
| pageSize | number | opcional | Itens por página — máx 100 (padrão: 20) |
| parentId | uuid | opcional | UUID da pasta pai para listar subpastas. Omita para listar pastas raiz. |
{
"totalElements": 3,
"data": [
{
"id": "a1b2c3d4-0000-0000-0000-000000000001",
"name": "Contratos 2026",
"parentId": null,
"envelopeCount": 14,
"createdAt": "2026-01-05T08:00:00Z"
}
]
}
Cria uma pasta para organizar envelopes. Informe parentId para criar uma subpasta.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | obrigatório | Nome da pasta |
| parentId | uuid | opcional | UUID da pasta pai (cria subpasta) |
{
"name": "Contratos 2026",
"parentId": null
}
Renomeia ou move uma pasta para outro nível da hierarquia alterando o parentId.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| name | string | opcional | Novo nome |
| parentId | uuid | null | opcional | Nova pasta pai; envie null para mover para a raiz |
{
"name": "Contratos 2026 — Encerrados",
"parentId": null
}
Remove a pasta. Envelopes dentro da pasta não são excluídos — apenas a associação é removida.
Contacts
isCompanyContact.Retorna contatos do livro de endereços. Use isCompanyContact=true para listar os
compartilhados com toda a empresa.
Query params
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| page | number | opcional | Página (padrão: 0) |
| pageSize | number | opcional | Itens por página — máx 100 (padrão: 20) |
| search | string | opcional | Busca por nome ou e-mail |
| isCompanyContact | boolean | opcional | true = compartilhados com a empresa; false = pessoais |
{
"totalElements": 12,
"data": [
{
"id": "f1a2b3c4-0000-0000-0000-000000000001",
"fullName": "Pedro Alves",
"email": "pedro.alves@empresa.com.br",
"phone": "+5511999887766",
"isCompanyContact": true,
"createdAt": "2026-03-15T10:00:00Z"
}
]
}
Adiciona um contato ao livro de endereços.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| fullName | string | obrigatório | Nome completo |
| string | obrigatório | E-mail do contato | |
| phone | string | opcional | Telefone com DDD |
| isCompanyContact | boolean | opcional | Tornar visível para todos os usuários da empresa (padrão: false) |
{
"fullName": "Pedro Alves",
"email": "pedro.alves@empresa.com.br",
"phone": "+5511999887766",
"isCompanyContact": true
}
Atualiza nome, e-mail ou telefone de um contato existente.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| fullName | string | opcional | Novo nome |
| string | opcional | Novo e-mail | |
| phone | string | opcional | Novo telefone |
| isCompanyContact | boolean | opcional | Alterar visibilidade |
{
"phone": "+5511988776655",
"isCompanyContact": false
}
Remove um contato do livro de endereços. Signatários de envelopes existentes não são afetados.
Webhook Domains
Eventos disponíveis
Retorna todos os endpoints registrados com seus eventos subscritos e status ativo/inativo.
{
"totalElements": 1,
"data": [
{
"id": "uuid",
"domain": "https://meuapp.com.br/webhooks/assin",
"description": "Endpoint principal de produção",
"isActive": true,
"createdAt": "2026-05-02T00:00:00Z",
"eventSubscriptions": [
{ "eventType": "ENVELOPE_FINISHED" },
{ "eventType": "SIGNER_COMPLETED" }
]
}
]
}
Registra um endpoint para receber eventos. Você pode subscrever a um ou mais eventos por endpoint.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.domain | string (URI) | obrigatório | URL HTTPS do endpoint que receberá os eventos |
| data.description | string | opcional | Descrição interna do webhook |
| data.events | string[] | obrigatório | Lista de eventos a subscrever |
{
"data": {
"domain": "https://meuapp.com.br/webhooks/assin",
"description": "Endpoint de produção",
"events": [
"ENVELOPE_FINISHED",
"SIGNER_COMPLETED"
]
}
}
Payload enviado ao seu endpoint
// POST https://meuapp.com.br/webhooks/assin { "event": "ENVELOPE_FINISHED", "envelopeId": "uuid", "companyId": "uuid", "occurredAt": "2026-05-02T15:30:00Z", "data": { /* detalhes do evento */ } }
Atualiza descrição, status ou lista de eventos. Enviar events substitui
completamente a lista anterior.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.description | string | opcional | Nova descrição |
| data.isActive | boolean | opcional | Ativar ou pausar o webhook |
| data.events | string[] | opcional | Nova lista completa de eventos |
{
"data": {
"isActive": false,
"events": ["ENVELOPE_FINISHED", "ENVELOPE_CANCELLED", "SIGNER_COMPLETED"]
}
}
Remove o webhook e cancela todas as subscrições de eventos associadas. Retorna 204 No Content.
Batches
1 — Lote (CRUD)
Cria um novo lote. Após criar, vincule documentos, signatários e templates antes de processar.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.name | string | obrigatório | Nome do lote |
| data.description | string | opcional | Descrição interna |
| data.companyId | uuid | obrigatório | ID da empresa |
{
"data": {
"name": "Folha de Pagamento Maio 2026",
"description": "Contracheques de todos os colaboradores",
"companyId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
Retorna todos os lotes da empresa.
Path params
| Parâmetro | Tipo | Descrição |
|---|---|---|
| companyId | uuid | ID da empresa |
{
"totalElements": 3,
"data": [{ "id": "uuid", "name": "Folha Maio 2026", "status": "DRAFT" }]
}
Remove um lote em status DRAFT. Lotes já processados não podem ser excluídos.
2 — Documentos do lote
Associa um documento ao lote pelo alias — nome de referência usado para mapear o documento às variáveis do template.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.batchId | uuid | obrigatório | ID do lote |
| data.companyId | uuid | obrigatório | ID da empresa |
| data.alias | string | obrigatório | Nome de referência do documento no template |
{
"data": {
"batchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"companyId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"alias": "contracheque"
}
}
Lista os documentos vinculados a um lote.
Query params
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| filters[batchId.equals] | uuid | obrigatório | ID do lote |
{
"totalElements": 1,
"data": [
{
"id": "d1e2f3a4-0000-0000-0000-000000000001",
"batchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"alias": "contracheque",
"documentId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"createdAt": "2026-05-01T09:00:00Z"
}
]
}
Atualiza o alias ou documento associado ao lote.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.id | uuid | obrigatório | ID do batch-document |
| data.alias | string | opcional | Novo alias |
{
"data": {
"id": "d1e2f3a4-0000-0000-0000-000000000001",
"alias": "holerite"
}
}
Remove a associação entre um documento e o lote.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.id | uuid | obrigatório | ID do batch-document a remover |
{
"data": { "id": "d1e2f3a4-0000-0000-0000-000000000001" }
}
3 — Signatários do lote
Adiciona um signatário ao lote. Use fixed=true para signatários fixos (aparecem em todos os envelopes) e fixed=false para variáveis (definidos linha a linha no Excel).
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.batchId | uuid | obrigatório | ID do lote |
| data.fixed | boolean | obrigatório | true = mesmo signatário em todos; false = varia por linha do Excel |
| data.signatureType | string | obrigatório | SIGN | APPROVE | WITNESS | CARBON_COPY |
| data.order | number | opcional | 0 = paralelo; 1+ = sequencial |
| data.email | string | opcional | Obrigatório se fixed=true |
| data.fullName | string | opcional | Obrigatório se fixed=true |
| data.requirePersonalDocument | boolean | opcional | Solicitar documento pessoal (padrão: false) |
| data.requireEmailToken | boolean | opcional | Solicitar token por e-mail (padrão: false) |
{
"data": {
"batchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"fixed": true,
"signatureType": "SIGN",
"order": 2,
"email": "gerente@empresa.com.br",
"fullName": "Carlos Gerente"
}
}
{
"data": {
"batchId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"fixed": false,
"signatureType": "SIGN",
"order": 1
}
}
Retorna todos os signatários (fixos e variáveis) configurados para o lote.
{
"totalElements": 2,
"data": [
{
"id": "s1a2b3c4-0000-0000-0000-000000000001",
"fixed": true,
"signatureType": "SIGN",
"order": 2,
"fullName": "Carlos Gerente",
"email": "gerente@empresa.com.br"
},
{
"id": "s1a2b3c4-0000-0000-0000-000000000002",
"fixed": false,
"signatureType": "SIGN",
"order": 1,
"fullName": null,
"email": null
}
]
}
Remove um signatário do lote.
4 — Templates do lote
Associa um template ao lote. O template define os campos variáveis que serão preenchidos pelo Excel.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data.templateId | uuid | obrigatório | ID do template a vincular |
{
"data": { "templateId": "3fa85f64-5717-4562-b3fc-2c963f66afa6" }
}
Faz upload da planilha .xlsx com os dados de cada envelope. Cada linha gera um envelope. Os headers das colunas devem corresponder às chaves do template.
file contendo o .xlsx. Headers da planilha devem ser idênticos às chaves (key) do template.
Path params
| Parâmetro | Tipo | Descrição |
|---|---|---|
| batchId | uuid | ID do lote |
| companyId | uuid | ID da empresa |
| templateId | uuid | ID do template vinculado ao lote |
curl -X POST "{BASE_URL}/v1/batches-template/upload-excel/:batchId/:companyId/:templateId" \ -H "Authorization: Bearer sk_live_xxxx" \ -H "Origin: https://seuapp.com.br" \ -H "x-origin-with-label: web-app" \ -F "file=@colaboradores.xlsx"
Define qual coluna do Excel alimenta cada campo dos signatários variáveis. Por exemplo, a coluna "E-mail Corporativo" alimenta o campo email do signatário.
Body
| Campo | Tipo | Descrição | |
|---|---|---|---|
| data | object | obrigatório | Mapeamento campoTemplate: headerExcel |
{
"data": {
"nomeColaborador": "Nome Completo",
"cpf": "CPF",
"salario": "Salario Bruto",
"email": "E-mail Corporativo"
}
}
Retorna os templates vinculados ao lote com seus campos mapeados.
{
"totalElements": 1,
"data": [
{
"id": "t1a2b3c4-0000-0000-0000-000000000001",
"templateId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"templateName": "Contrato Padrao CLT",
"batchId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
}
]
}
Retorna o mapeamento de colunas Excel para signatários variáveis de cada template do lote.
[
{
"templateId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"signerId": "s1a2b3c4-0000-0000-0000-000000000002",
"mapping": {
"nomeColaborador": "Nome Completo",
"cpf": "CPF",
"email": "E-mail Corporativo"
}
}
]
Remove a associação entre um template e o lote.
5 — Processar
Dispara o processamento completo. Para cada linha do Excel: gera o documento pelo template, cria o envelope, adiciona documentos e signatários, lacra. Créditos são debitados aqui.
Path params
| Parâmetro | Tipo | Descrição |
|---|---|---|
| companyId | uuid | ID da empresa |
| batchId | uuid | ID do lote |
{
"batchId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"status": "PROCESSING",
"totalEnvelopes": 250,
"creditsDebited": 250,
"startedAt": "2026-05-02T13:00:00Z"
}
Reenvia a notificação de validação para um signatário específico dentro do lote.
Reenvia o link de assinatura para um signatário que ainda não assinou dentro do lote.