Docs
Começar

Introdução

Conceitos essenciais, glossário, limites e convenções da API ForSign.

A ForSign expõe uma API REST pra automatizar todo o ciclo de uma assinatura eletrônica — do upload do PDF ao download dos documentos finalizados. Antes de escrever a primeira linha de código, vale entender o conceito central e o vocabulário da plataforma.

A "Operação" — o conceito central

Quase tudo na ForSign gira em torno de uma operação. Pense nela como o contêiner que junta tudo o que precisa acontecer pra um conjunto de documentos ser assinado: os PDFs, quem assina, em que ordem, que formulários preenchem, que anexos enviam, e como tudo se encerra.

Cada operação tem um identificador único — o ID da operação (o campo id retornado na criação) — que você usa pra rastrear, cancelar, finalizar ou baixar os documentos depois. É um número sequencial por conta. Toda ação posterior à criação é "uma operação sobre uma operação".

idexternalId — não confunda. O id (um número) é o identificador da operação e é o que vai em todos os endpoints seguintes, sempre na URL como {operationId}. Já o externalId é um rótulo opcional e seu (ex: PEDIDO-123) que você envia na criação só pra correlacionar com seu sistema; ele não endereça a operação em lugar nenhum.

Glossário

Termos que aparecem em vários endpoints e que vale a pena fixar:

TermoO que é
OperaçãoO contêiner principal. Junta documentos, membros, formulários, anexos e regras.
ID da operação (id)Identificador da operação, retornado no campo id da criação. Número sequencial por conta. É o valor usado em todos os endpoints que agem sobre a operação. Nas URLs aparece como {operationId}.
externalIdOpcional. Seu identificador próprio (ex: nº do pedido), enviado na criação pra correlacionar com seu sistema. Não é usado pra endereçar a operação.
MembroQualquer pessoa participando da operação — pode ser assinante ou observador.
AssinanteMembro com observer: false. Realmente assina o documento.
ObservadorMembro com observer: true. Acompanha o processo e recebe o documento final, mas não assina.
DocumentoPDF que será assinado. Subido via /v2/document/upload, referenciado em files[].id na criação.
AnexoArquivo complementar enviado pelo assinante (RG, selfie, comprovante). Pode ter fluxo de aprovação.
FormulárioCampos que o assinante preenche antes de assinar (formFields[]).
AssinaturaA marca visual do assinante no PDF. Posicionada por coordenadas (positions[]) ou tag textual.
RubricaMarca menor, geralmente em cada página. Aplicada via tag (#rubrica) ou coordenadas.
Operação imutávelApós criada, a estrutura da operação (membros, documentos, formulários) não pode ser editada. Pra mudar algo, cancele e recrie.

Limites e quotas

Coisas que vale saber antes de planejar a integração:

ItemLimite
Tamanho máximo do PDF10 MB por arquivo
Formato aceito no uploadApenas PDF
Documentos por operaçãoSem limite rígido — combine via files[]
Membros por operaçãoSem limite rígido — atenção a memberMovementWarning em operações com 10+
Idiomas suportadospt-br, en, es
Canais de notificaçãoEmail, SMS, Whatsapp, None (Desativado)
Tipos de assinaturaClick, Draw, Text, UserChoice, Certificate, CloudCertificate
Webhook retryAté 5 tentativas em 24h com backoff exponencial
Webhook timeout30 segundos por entrega
Rate limitSob demanda — entre em contato com o suporte caso precise

Formato das respostas

Toda resposta bem-sucedida usa o mesmo envelope:

{
  "success": true,
  "statusCode": 200,
  "data": { /* o resultado do endpoint */ },
  "messages": [{ "value": "Mensagem amigável e localizada" }]
}
  • successtrue em caso de sucesso.
  • statusCode — o código HTTP, repetido no corpo.
  • data — o resultado do endpoint (objeto, lista ou null).
  • messages[] — mensagens amigáveis (no campo value), localizadas pelo header Content-Language (pt-br por padrão).

Campos null são omitidos do JSON e enums vêm como texto (ex.: "Completed", não 5).

Convenção de erros

Os status codes mais comuns:

StatusQuando ocorre
200 OK / 201 CreatedSucesso. O corpo segue o envelope acima.
400 Bad RequestPayload inválido (campo faltando, formato errado, regra de negócio violada).
401 UnauthorizedX-Api-Key ausente ou inválida.
403 ForbiddenA chave não tem permissão para esse recurso.
404 Not FoundRecurso (operação, anexo, documento) não existe ou não pertence à sua conta.
429 Too Many RequestsRate limit excedido — espere e tente de novo.
500 Internal Server ErrorErro do nosso lado. Tente novamente; persistindo, contate o suporte.

Erros de validação (400)

Erros de validação trazem os detalhes por campo em detail[]:

{
  "statusCode": 400,
  "description": "O arquivo não foi enviado",
  "detail": [
    { "code": "NotEmptyValidator", "target": "File", "message": "Arquivo é obrigatório" }
  ]
}
  • description — mensagem amigável (a primeira falha), localizada.
  • detail[] — cada item tem target (o campo), message e code.

Demais erros

Os outros erros (403, 404, 500, e 401 quando há corpo) usam o envelope padrão com success: false:

{
  "success": false,
  "statusCode": 404,
  "messages": [{ "value": "Operação não encontrada" }]
}

As mensagens são localizadas pelo header Content-Language que você envia (pt-br por padrão).

Versões da API

Endpoints novos vivem em /api/v2/, alguns legados em /api/v1/. A versão correta está sempre indicada na URL de cada endpoint nesta documentação — sempre confira antes de copiar o exemplo.

Ambiente de testes

A ForSign não tem sandbox público. Pra fazer integração contra um ambiente isolado (sem afetar sua conta de produção), abra um chamado no nosso suporte solicitando acesso a um ambiente de testes.

Próximos passos

On this page