Carimbo combinado: um PDF com todas as assinaturas do envelope

Quando um envelope com várias partes é concluído, sobra uma pergunta prática: o que eu entrego ao cliente? O PDF original não mostra que foi assinado, e mandar o pacote de evidências de cada signatário separadamente é entregar um problema em vez de um documento. O carimbo combinado resolve isso: um único PDF com o documento original seguido de uma página de comprovante por signatário — cada uma com o próprio identificador de evidência, o hash e o endereço do verificador público. Este guia mostra como pedi-lo, o que ele contém, quanto custa em tempo e o que fazer quando o link expira.

Em uma frase: POST /v1/envelopes/{envelopeId}/combined-stamp devolve uma URL para o PDF final — documento original mais uma página de comprovante por signatário — e pode ser chamado quantas vezes for preciso, porque cada chamada emite uma URL nova.

O problema de entrega

Um envelope com três partes produz três transações, três pacotes de evidências e um documento assinado. Entregar isso ao cliente do jeito cru significa mandar quatro arquivos e uma explicação — e a explicação é sempre a mesma pergunta de volta: "qual desses é o contrato?".

O carimbo combinado existe para que a resposta seja um arquivo só. Ele preserva o documento original intacto e anexa — nunca sobrepõe — uma página de comprovante por signatário.

A chamada

POST https://api-hml.signdocs.com.br/v1/envelopes/{envelopeId}/combined-stamp Authorization: Bearer <access_token> // transactions:write // 200 { "envelopeId": "env_01J...", "downloadUrl": "https://...<pré-assinada>", "expiresIn": 3600, "signerCount": 3 }

Uma pré-condição: todas as sessões do envelope precisam estar concluídas. Antes disso não há o que combinar, e a chamada não serve como forma de espiar o andamento — para isso existe GET /v1/envelopes/{id}.

O que sai do outro lado

O PDF resultante tem esta estrutura:

página 1 .. N documento original, inalterado página N+1 comprovante do signatário 1 de 3 página N+2 comprovante do signatário 2 de 3 página N+3 comprovante do signatário 3 de 3

Cada comprovante é uma página A4 própria e carrega, daquela assinatura específica:

  • a numeração da assinatura no conjunto — 1 de 3, 2 de 3…;
  • o identificador de evidência daquela assinatura;
  • o hash SHA-256;
  • o endereço do verificador público, onde qualquer pessoa confere sem conta e sem acesso à API.

A decisão de anexar em vez de sobrepor é deliberada: um carimbo desenhado por cima do conteúdo pode cobrir texto do contrato — e cobrir texto de um documento assinado é um problema que só aparece depois, quando alguém precisa ler justamente aquela cláusula.

Desempenho: o que foi medido

A pergunta de capacidade que sempre aparece é se isso aguenta um envelope grande. Foi medido, e não estimado: um envelope real de 30 signatários foi levado à conclusão em homologação.

Medida Resultado
Signatários 30
Páginas do PDF final 31 (1 original + 30 comprovantes)
Tamanho do arquivo 49 KB
Duração da chamada que gerou o carimbo 2,2 s
Erros de carimbo 0

Vale notar onde esse tempo é gasto: a montagem acontece dentro da chamada da última assinatura. Aquela requisição faz a finalização e ainda percorre as 30 evidências e as 30 regravações do PDF. Ou seja, o signatário nº 30 espera alguns segundos a mais que os outros 29 — o que é bom saber ao desenhar a tela de conclusão, e é a razão de essa operação ter um teto.

O que limita é o tamanho do arquivo, não a contagem de signatários. A montagem relê e regrava o PDF inteiro uma vez por signatário, então o custo cresce com signatários × tamanho do documento. Trinta assinaturas sobre um documento pequeno é folgado. Um documento grande com muitos signatários é o caso que ainda não foi medido — teste com o seu tamanho real antes de prometer prazo a alguém.

O teto formal do envelope é de 100 signatários, e o motivo é outro, ligado a como o conjunto é lido de uma vez — está detalhado no guia sobre qual API usar.

A URL expira — e é por isso que o endpoint é repetível

A downloadUrl é pré-assinada e vale cerca de uma hora. Isso costuma ser lido como limitação; é o contrário.

Quando o envelope fecha, o evento ENVELOPE.ALL_SIGNED já traz uma combinedDownloadUrl pronta. Se o seu processamento do webhook demorou, se o e-mail para o cliente só saiu no dia seguinte, ou se alguém clicou no link uma semana depois, aquela URL morreu — e o documento não. Basta chamar o endpoint de novo:

// Sempre que precisar. Sem recriar nada, sem consumir cota. POST /v1/envelopes/{envelopeId}/combined-stamp → downloadUrl nova, válida por mais 1 hora

Daí a regra de implementação: guarde o envelopeId, nunca a URL. Uma URL persistida no seu banco vira link quebrado em uma hora e chega ao suporte como "o link do contrato não funciona". Gere a URL no instante do clique, ou sirva o arquivo pelo seu próprio backend.

Escolhendo o que entregar

Você quer… Use
O PDF final de um envelope, com todos os comprovantes POST /v1/envelopes/{id}/combined-stamp
O PDF de uma transação avulsa GET /v1/transactions/{id}/download
A prova formal de uma assinatura específica GET /v1/transactions/{id}/evidence
Que um terceiro confira sem acesso à API Verificador público — o endereço está em cada comprovante

A distinção que costuma faltar: o carimbo combinado é o documento; a evidência é a prova. Para entregar ao cliente, o carimbo. Para arquivar, para auditoria e para disputa, o pacote de evidências — assunto de como baixar o documento assinado e o pacote de evidências.

Documentos que não são PDF

Carimbo visual é um conceito de PDF. Nos demais formatos aceitos, o resultado combinado é entregue como assinatura destacada (.p7s) em vez de páginas anexadas.

O conteúdo probatório é equivalente — o que muda é a apresentação, e a mudança tem consequência prática: não existe um "PDF bonito para mandar ao cliente" nesse caso. Se a entrega visual importa para o seu fluxo, converta para PDF antes de enviar para assinatura, e não depois.

Integrando

  1. Assine o evento ENVELOPE.ALL_SIGNED — ele é o sinal de que o envelope fechou e já traz uma URL pronta.
  2. Baixe e guarde o arquivo do seu lado, se o seu fluxo exige retenção própria. O identificador é o que você persiste; o arquivo, se quiser, também.
  3. Para exibir sob demanda, chame o endpoint na hora do clique. É barato e sempre funciona.
  4. Não confunda com a evidência. São artefatos diferentes, com finalidades diferentes.

Sobre o evento e o tratamento de fila, veja webhooks e arquitetura de eventos. Sobre os prazos de URL e demais expirações, todos os prazos da API.

Perguntas Frequentes

Como peço o carimbo combinado?

POST /v1/envelopes/{envelopeId}/combined-stamp, com escopo transactions:write. A resposta traz downloadUrl, signerCount e expiresIn. Só funciona depois que todas as sessões do envelope forem concluídas — antes disso não há o que combinar.

O que o PDF gerado contém?

O documento original, seguido de uma página A4 por signatário. Cada comprovante é numerado ("1 de 30", "2 de 30"…) e traz o identificador de evidência daquela assinatura, o hash SHA-256 e o endereço do verificador público. As páginas são anexadas, nunca sobrepostas ao conteúdo original.

Isso aguenta um envelope grande?

Sim, com folga. Medido em homologação com um envelope real de 30 signatários: o PDF final saiu com 31 páginas e 49 KB, e a geração — que roda dentro da chamada da última assinatura, junto da finalização — levou 2,2 segundos, sem nenhum erro de carimbo. O limite formal do envelope é de 100 signatários.

O que limita na prática: o número de signatários ou o tamanho do arquivo?

O tamanho. A montagem relê e regrava o PDF inteiro uma vez por signatário, então o custo cresce com signatários × tamanho do documento. Trinta assinaturas sobre um documento pequeno é trivial; o caso a medir antes de prometer é um documento grande com muitos signatários.

A URL de download expira?

Sim, em cerca de 1 hora. E é por isso que este endpoint pode ser chamado quantas vezes for preciso: cada chamada devolve uma URL assinada nova. Se a combinedDownloadUrl entregue no evento ENVELOPE.ALL_SIGNED já venceu, é aqui que você pede outra — sem recriar nada e sem consumir cota.

Preciso guardar a URL no meu banco?

Não, e é melhor não guardar. Guarde o envelopeId e peça uma URL nova no momento em que alguém for baixar. Uma URL persistida vira link quebrado em uma hora, e o suporte recebe o chamado.

E se o documento não for PDF?

O carimbo visual é próprio do PDF. Para os demais formatos aceitos, o resultado combinado é entregue como assinatura destacada (.p7s) em vez de páginas anexadas — o conteúdo probatório é equivalente, o que muda é a forma de apresentação.

Entregue um PDF que se explica sozinho

Documento original mais um comprovante por signatário, conferível por qualquer pessoa no verificador público. Monte um envelope de teste no sandbox gratuito e veja o resultado.

Criar credenciais de homologação Fale com o time comercial