KivoSign

API de destinatários

Adicione e gerencie os destinatários dos envelopes pela API.

Documentos e modelos estão sendo descontinuados e substituídos por envelopes. Leia o guia de migração.

Este guia pode não refletir os endpoints ou parâmetros mais recentes. Para uma referência sempre atualizada, consulte a especificação OpenAPI.

Objeto destinatário

{
  "id": 123,
  "envelopeId": "envelope_abcdefhiklmnorst",
  "email": "signatario@exemplo.com",
  "name": "João Silva",
  "role": "SIGNER",
  "signingOrder": 1,
  "token": "abc123...",
  "signedAt": "2024-01-15T10:30:00Z",
  "readStatus": "OPENED",
  "signingStatus": "SIGNED",
  "sendStatus": "SENT"
}
CampoTipoDescrição
idnumberIdentificador único do destinatário
envelopeIdstringID do envelope associado
emailstringE-mail do destinatário
namestringNome de exibição do destinatário
rolestringPapel do destinatário (veja abaixo)
signingOrdernumber | nullOrdem na assinatura sequencial
tokenstringToken único da URL de assinatura
signedAtstring | nullData/hora ISO da assinatura
readStatusstringNOT_OPENED ou OPENED
signingStatusstringNOT_SIGNED, SIGNED ou REJECTED
sendStatusstringNOT_SENT ou SENT

Papéis dos destinatários

PapelDescrição
SIGNERPrecisa assinar o documento. Os campos obrigatórios devem ser preenchidos.
APPROVERPrecisa aprovar o documento antes que os signatários continuem.
VIEWERPode ver o documento, mas não realiza nenhuma ação.
CCRecebe uma cópia do documento concluído. Nenhuma ação necessária.
ASSISTANTPode preencher campos em nome de outro destinatário.

Consultar destinatário

Consulta um destinatário pelo ID.

GET /api/v2/envelope/recipient/{recipientId}

Exemplo

curl "https://app.kivosign.com.br/api/v2/envelope/recipient/789" \
  -H "Authorization: api_xxxxxxxxxxxxxxxx"

Resposta

Retorna o objeto destinatário completo, incluindo os campos.


Criar destinatários

Adiciona um ou mais destinatários a um envelope.

POST /api/v2/envelope/recipient/create-many

Corpo da requisição

CampoTipoObrigatórioDescrição
envelopeIdstringSimID do envelope que receberá os destinatários
dataarraySimLista de objetos destinatário

Cada item da lista data:

CampoTipoObrigatórioDescrição
emailstringSimE-mail do destinatário
namestringSimNome de exibição (máx. 255 caracteres)
rolestringSimPapel do destinatário (veja os papéis acima)
signingOrdernumberNãoPosição na assinatura sequencial
accessAuthstring[]NãoTipos de autenticação de acesso
actionAuthstring[]NãoTipos de autenticação de ação

Exemplo

curl -X POST "https://app.kivosign.com.br/api/v2/envelope/recipient/create-many" \
  -H "Authorization: api_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "envelopeId": "envelope_abcdefhiklmnorst",
    "data": [
      {
        "email": "signatario@exemplo.com",
        "name": "João Silva",
        "role": "SIGNER",
        "signingOrder": 1
      },
      {
        "email": "aprovador@exemplo.com",
        "name": "Maria Souza",
        "role": "APPROVER",
        "signingOrder": 0
      }
    ]
  }'

Resposta

{
  "data": [
    {
      "id": 789,
      "envelopeId": "envelope_abcdefhiklmnorst",
      "email": "signatario@exemplo.com",
      "name": "João Silva",
      "role": "SIGNER",
      "signingOrder": 1,
      "token": "abc123def456",
      "signedAt": null,
      "readStatus": "NOT_OPENED",
      "signingStatus": "NOT_SIGNED",
      "sendStatus": "NOT_SENT"
    },
    {
      "id": 790,
      "envelopeId": "envelope_abcdefhiklmnorst",
      "email": "aprovador@exemplo.com",
      "name": "Maria Souza",
      "role": "APPROVER",
      "signingOrder": 0,
      "token": "def456ghi789",
      "signedAt": null,
      "readStatus": "NOT_OPENED",
      "signingStatus": "NOT_SIGNED",
      "sendStatus": "NOT_SENT"
    }
  ]
}

Atualizar destinatários

Atualiza um ou mais destinatários de um envelope. Disponível apenas para envelopes ainda não concluídos.

POST /api/v2/envelope/recipient/update-many

Corpo da requisição

CampoTipoObrigatórioDescrição
envelopeIdstringSimID do envelope com os destinatários
dataarraySimLista de objetos de atualização

Cada item da lista data:

CampoTipoObrigatórioDescrição
idnumberSimID do destinatário a atualizar
emailstringNãoNovo e-mail
namestringNãoNovo nome de exibição (máx. 255 caracteres)
rolestringNãoNovo papel
signingOrdernumberNãoNova posição na assinatura sequencial
accessAuthstring[]NãoTipos de autenticação de acesso
actionAuthstring[]NãoTipos de autenticação de ação

Exemplo

curl -X POST "https://app.kivosign.com.br/api/v2/envelope/recipient/update-many" \
  -H "Authorization: api_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "envelopeId": "envelope_abcdefhiklmnorst",
    "data": [
      {
        "id": 789,
        "name": "João Pedro Silva",
        "signingOrder": 2
      }
    ]
  }'

Resposta

Retorna os destinatários atualizados em uma lista data.


Excluir destinatário

Remove um destinatário de um envelope. Disponível apenas para envelopes ainda não concluídos.

POST /api/v2/envelope/recipient/delete

Corpo da requisição

CampoTipoObrigatórioDescrição
recipientIdnumberSimID do destinatário a remover

Exemplo

curl -X POST "https://app.kivosign.com.br/api/v2/envelope/recipient/delete" \
  -H "Authorization: api_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "recipientId": 789
  }'

Resposta

{
  "success": true
}

Ordem de assinatura

Quando o envelope usa assinatura sequencial, os destinatários assinam na ordem definida por signingOrder.

Definindo a ordem

Ao criar os destinatários, informe os valores de signingOrder para controlar a sequência:

const response = await fetch('https://app.kivosign.com.br/api/v2/envelope/recipient/create-many', {
  method: 'POST',
  headers: {
    Authorization: 'api_xxxxxxxxxxxxxxxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    envelopeId: 'envelope_abcdefhiklmnorst',
    data: [
      {
        email: 'aprovador@exemplo.com',
        name: 'Aprovador',
        role: 'APPROVER',
        signingOrder: 0, // Aprovadores normalmente vêm primeiro
      },
      {
        email: 'primeiro@exemplo.com',
        name: 'Primeiro signatário',
        role: 'SIGNER',
        signingOrder: 1,
      },
      {
        email: 'segundo@exemplo.com',
        name: 'Segundo signatário',
        role: 'SIGNER',
        signingOrder: 2,
      },
    ],
  }),
});

Para ativar a assinatura sequencial, defina signingOrder como SEQUENTIAL nos metadados do envelope ao criá-lo ou atualizá-lo. Veja a API de documentos para mais detalhes.

Como a ordem funciona

  • Destinatários com signingOrder menor assinam primeiro
  • Destinatários com o mesmo signingOrder podem assinar ao mesmo tempo
  • Destinatários CC recebem o documento depois que todas as assinaturas forem concluídas
  • Destinatários APPROVER precisam aprovar antes dos signatários com ordem maior

Opções de autenticação

Para mais segurança, você pode exigir autenticação adicional quando o destinatário acessar ou assinar o documento.

Autenticação de acesso

Controla quem pode ver o documento:

TipoDescrição
ACCOUNTO destinatário precisa estar logado
TWO_FACTOR_AUTHO destinatário precisa confirmar com 2FA

Autenticação de ação

Controla quem pode assinar o documento:

TipoDescrição
ACCOUNTO destinatário precisa estar logado
PASSKEYExige autenticação por passkey
TWO_FACTOR_AUTHExige código 2FA
PASSWORDExige confirmação de senha
EXPLICIT_NONEDesativa explicitamente a autenticação de ação

Exemplo

const response = await fetch('https://app.kivosign.com.br/api/v2/envelope/recipient/create-many', {
  method: 'POST',
  headers: {
    Authorization: 'api_xxxxxxxxxxxxxxxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    envelopeId: 'envelope_abcdefhiklmnorst',
    data: [
      {
        email: 'signatario@exemplo.com',
        name: 'João Silva',
        role: 'SIGNER',
        accessAuth: ['ACCOUNT'],
        actionAuth: ['PASSKEY', 'TWO_FACTOR_AUTH'],
      },
    ],
  }),
});

Respostas de erro

StatusDescrição
400Corpo da requisição inválido ou destinatário já existe
400O envelope já foi concluído
401Chave de API inválida ou ausente
404Envelope ou destinatário não encontrado
500Erro no servidor

Exemplo de resposta de erro

{
  "message": "Recipient already exists"
}

Veja também

Nesta página