Evento ENVELOPE_COMPLETED
Todas as ações do envelope terminaram e ele chegou a COMPLETED. É o evento para
buscar os documentos assinados. Visão geral de todos os eventos em
Webhooks.Quando dispara#
Depois que todos os participantes concluem suas ações (assinaturas e aprovações)
e os documentos são selados. Quando o evento chega, a versão assinada dos
documentos já está disponível para download.
Vale para envelopes com assinatura eletrônica, com certificado ICP-Brasil ou com
os dois.
Quando NÃO dispara#
Enquanto ainda falta alguma ação: cada assinatura intermediária gera só
SIGNATORY_SIGNED. Em casos raros o mesmo envelope pode gerar mais de um ENVELOPE_COMPLETED - por
exemplo, quando um documento já concluído precisa ser selado de novo. Trate o
evento de forma idempotente por data.envelope.id.Exemplo de payload#
{
"id": "9d4fb916-5ab7-4a49-9014-1249345f1c6c",
"event": "ENVELOPE_COMPLETED",
"createdAt": "2026-09-03T18:30:00.000Z",
"data": {
"envelope": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "COMPLETED",
"completedAt": "2026-09-03T18:29:58.000Z"
},
"documents": [
{
"id": "2f1c5d8d-97dd-40a8-aefe-1eec9d17e301",
"name": "contrato.pdf",
"originalFileHash": "4f6f53d15ea7ed8cb002f85d2cb1f6c0f2bd5861d89fc3f9f30670ecf40cb3d2",
"sealedFileHash": "9b2e6c0a1d4f8e3b7a5c2d9f0e1b4a6c8d3f5e7a9b1c2d4e6f8a0b3c5d7e9f1a"
}
],
"signatories": [
{
"id": "7a9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Pessoa Exemplo",
"email": "pessoa@example.com",
"phoneNumber": null,
"signedAt": "2026-09-03T18:25:00.000Z"
}
]
}
}
Campos de data#
| Campo | Tipo | Descrição |
|---|
envelope.id | string (UUID) | Id do envelope. |
envelope.status | string | COMPLETED. |
envelope.completedAt | string (ISO 8601, UTC) | Quando o envelope foi concluído. |
documents | array | Os documentos do envelope. |
documents[].id | string (UUID) | Id do documento - use no download. |
documents[].name | string | Nome original do arquivo enviado. |
documents[].originalFileHash | string ou null | Hash SHA-256 (hexadecimal) do arquivo enviado, antes da assinatura. |
documents[].sealedFileHash | string ou null | Hash SHA-256 (hexadecimal) do arquivo selado (o assinado) - o que a verificação pública confere. Na selagem normal vem sempre preenchido; null só em documento cujo selado não tem hash registrado (legado ou selagem indisponível). |
signatories | array | Todos os participantes do envelope (inclusive aprovadores e observadores), não só os signatários. |
signatories[].id | string (UUID) | Id do participante no envelope. |
signatories[].name | string ou null | Nome do participante. |
signatories[].email | string ou null | E-mail do participante. |
signatories[].phoneNumber | string ou null | Telefone do participante, quando informado. |
signatories[].signedAt | string (ISO 8601, UTC) ou null | Quando o participante assinou; null para quem não assina (ex.: aprovador, observador). |
Por compatibilidade com integrações existentes, signatories neste evento lista
todos os participantes, e não só os signatários como nos demais eventos.Para quem já assinou ou aprovou, name, email e phoneNumber são os
gravados no momento do ato, e não o cadastro atual do participante. Se o ato não
registrou e-mail ou telefone, o campo vem null.O formato externo (id, event, createdAt, environment) e os cabeçalhos
estão em Webhooks → Payload.1.
Confirme pela API (recomendado para ação irreversível):
GET /v4/api/envelopes/{envelopeId} deve mostrar COMPLETED.
2.
Baixe os documentos assinados. Para um documento:O parâmetro type é obrigatório: signed (assinado) ou original. Ou baixe
todos de uma vez, em ZIP, com GET /v4/api/envelopes/{envelopeId}/download.
As duas respostas trazem { "url", "expiresAt", "fileName" }: a url é
temporária - baixe o arquivo logo e não a guarde nem a registre em log. 3.
Guarde o arquivo no seu sistema e marque o processo como concluído.
Para conferir a integridade:o arquivo que você enviou corresponde a documents[].originalFileHash;
o arquivo assinado que você baixou corresponde a documents[].sealedFileHash.
É este hash que a verificação pública confere.
Reselagem. Se o envelope for selado de novo, chega um novo
ENVELOPE_COMPLETED com sealedFileHash novo; o hash anterior deixa de
conferir na verificação pública. Guarde sempre o do evento mais recente. Modificado em 2026-10-02 20:56:02