Usando o CertivantLive ID e desenvolvedorDesenvolvedor — chaves de API e API REST

Desenvolvedor — chaves de API e API REST

Emita e gerencie chaves de API, configure escopos e use a API REST da Certivant para criar solicitações de verificação e sincronizar o status de KYC de forma programática a partir dos seus próprios sistemas.

Who can do this:Org ownerOrg admin— Os membros precisam da permissão api.access para visualizar. A emissão de chaves exige a função de administrador.

O que ela faz

A API REST da Certivant permite que os seus próprios sistemas criem solicitações de verificação, enviem documentos e consultem o status — sem passar pelo painel. Dois casos de uso principais:

  1. Incorporar a verificação ao seu próprio fluxo de cadastro. O seu formulário de cadastro envia os dados ao seu back-end, o back-end chama a Certivant e o solicitante recebe um link do fluxo hospedado da Certivant.
  2. Sincronizar o status da verificação com o seu data warehouse ou CRM. Combine com webhooks para que os seus sistemas sejam atualizados a cada mudança de status.

A autenticação da API é feita por chaves de API emitidas no painel. A documentação completa dos endpoints fica em /app/{your-org}/kyc/developer — esta página cobre o gerenciamento de chaves e a visão geral conceitual.

Onde encontrar

KYC → Desenvolvedor na barra lateral esquerda. (As chaves de API ficavam nas configurações de KYC/B — agora elas têm uma página própria em Desenvolvedor.)

O Portal do Desenvolvedor é um hub único com um menu à esquerda:

  • Visão geral e início rápido — a sua URL base, a autenticação e uma requisição pronta para copiar e colar em 8 linguagens (cURL, JavaScript, TypeScript, Python, PHP, Go, Java, C#). Os trechos já vêm preenchidos com o seu host real e um marcador no lugar da sua chave.
  • Chaves de API — liste, crie e revogue as suas chaves.
  • Referência de endpoints — todos os endpoints de integração (/v1) com método, caminho, escopos e parâmetros, além de um link para o API Playground interativo.
  • Manipuladores de webhook — manipuladores prontos que verificam a assinatura, em 6 linguagens (veja também Webhooks).
  • Limite de taxa — o limite efetivo por minuto da sua organização, exibido somente para leitura.
  • Perguntas frequentes — as dúvidas mais comuns de quem faz a integração.

Emita uma chave de API

Clique em Nova chave

O cartão Chaves de API no topo da página Desenvolvedor lista as suas chaves com ambiente, permissões, data de criação e último uso. Cada linha tem botões para editar, rotacionar e revogar a chave.

O cartão Chaves de API na página Desenvolvedor — cada chave mostra o ambiente e os selos de permissão, o prefixo da chave, quando foi criada e usada pela última vez, e os botões de editar, rotacionar e revogar.

Uma caixa de diálogo é aberta.

A caixa de diálogo Criar chave de API — um rótulo, o ambiente Live ou Test, as permissões Leitura, Escrita, Envio e Gerenciamento e as permissões por recurso.

Dê um nome

Escolha um rótulo que diga onde a chave é usada: "Back-end de produção (Heroku)", "Pipeline de CI", "Dev local — notebook da Alice". O nome aparece nos registros de auditoria junto com cada ação da API.

Escolha os escopos

As permissões são definidas por chave. Há duas formas de concedê-las, e você pode combiná-las:

EscopoO que permite
kyc:readLer tudo: solicitações, documentos, formulários, análises.
kyc:writeCriar e alterar itens: solicitações, envio de documentos, envio de formulários, verificações ao vivo.
kyc:submitLiberar uma solicitação para o processamento automático.
kyc:manageAções privilegiadas: substituir decisões, excluir documentos, apagar ou exportar os dados de um solicitante.

Ou escolha permissões mais restritas, por recurso (Read, Write, Submit, Manage para cada recurso):

RecursoEscoposAbrange
Verificaçõesverifications:read · write · submit · manageSolicitações de verificação, KYB, EDD, sinais de fraude
Formuláriosforms:read · write · manageLista de formulários, envio de formulário, acompanhamento de entrega
Documentosdocuments:read · write · manageDocumentos da solicitação
Verificação de identidade ao vivolive_id:read · writeAgendamento e acompanhamento das chamadas de verificação ao vivo
Webhookswebhooks:read · manageEndpoints de webhook (devem ser concedidos explicitamente)
Análisesanalytics:readAnálises e o resumo de triagem
Privacidade e exclusãoprivacy:manageSolicitações de exclusão, apagamento, exportação por solicitante

Manage em um recurso inclui todas as outras ações desse recurso. Um escopo por recurso nunca vai além do seu próprio recurso: uma chave com apenas forms:read não consegue ler solicitações de verificação.

Escolha o mínimo de escopos de que a chave realmente precisa. Uma chave para "enviar um formulário a partir do nosso fluxo de cadastro" só precisa de forms:write.

(Opcional) Restrinja a chave

  • Formulários — limite a chave a formulários específicos. Ela só poderá listar, enviar e criar verificações por meio desses formulários e só verá as verificações criadas por meio deles (lista, detalhe, documentos, resumo, análises). Qualquer outra coisa é recusada com 403 form_not_allowed. Uma chave restrita a formulários não consegue criar uma verificação sem informar um dos seus formulários (formId) e não pode usar os endpoints de apagamento de solicitante, solicitação de exclusão, reutilização e verificação ao vivo. As verificações que já existiam antes de essa regra ser aplicada ficam visíveis para uma chave restrita a formulários depois que a Certivant executa o preenchimento retroativo único.
  • Fluxos de trabalho — limite a chave a fluxos de trabalho de automação específicos. Para cada verificação que a chave criar, somente esses fluxos de trabalho poderão ser executados (quem quer que os dispare depois — o solicitante, uma decisão, um revisor); os demais fluxos de trabalho são ignorados para essa verificação. As verificações criadas pelo painel, por solicitantes em um formulário público ou por outras chaves não são afetadas. Nenhuma chamada de API falha por causa dessa restrição.

Deixe tudo desmarcado para não ter restrição.

  • Endereços IP — informe os endereços IPv4/IPv6 ou intervalos CIDR a partir dos quais a chave pode ser usada (um por linha, por exemplo 203.0.113.7, 198.51.100.0/24, 2001:db8::/32). As requisições de qualquer outro endereço são recusadas com 403 ip_not_allowed.

A metade inferior da caixa de diálogo Criar chave de API — a lista Restringir a formulários, a caixa de endereços IP permitidos, a data de expiração opcional e o botão Criar chave de API.

Você pode alterar os escopos, as restrições e a expiração depois com Editar (o ícone de lápis) — o segredo e o ambiente não podem ser alterados.

A caixa de diálogo Editar chave de API — as mesmas permissões e restrições da criação da chave; o ambiente aparece esmaecido porque não pode ser alterado.

(Opcional) Expiração

Defina uma data em que a chave expira automaticamente. Recomendado para integrações de curta duração (tokens de CI, demonstrações). As chaves de produção geralmente não têm expiração; rotacione-as em um cronograma. Uma chave expirada retorna 401 api_key_expired.

Escolha o ambiente

As chaves Live começam com ck_live_ e as chaves Test com ck_test_ (veja Live vs. test abaixo).

Crie

A chave é exibida uma única vez em uma janela modal. Copie-a agora — não será possível recuperá-la depois. O painel exibe apenas o prefixo (por exemplo ck_live_a3f1), para que você identifique as chaves sem expô-las.

Use a chave

Envie-a no cabeçalho Authorization:

Authorization: Bearer ck_live_a3f...

As chaves criadas antes do formato ck_live_ / ck_test_ (que começam com kyk_) continuam funcionando sem alterações.

O caminho mais rápido para uma integração funcional:

Crie uma solicitação

curl https://api.certivant.com/api/v1/kyc/requests \
  -H "Authorization: Bearer $CV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "INDIVIDUAL",
    "applicant": {
      "fullName": "Jane Doe",
      "email": "jane@example.com"
    }
  }'

Retorna o id da nova solicitação e uma URL de uso único na qual o solicitante envia os documentos.

Envie o solicitante para a URL

Você pode enviá-la por e-mail por conta própria, incorporá-la ao seu fluxo de cadastro ou, em vez disso, deixar que a Certivant envie o e-mail pelo fluxo "Enviar convite" do painel.

Receba o resultado por webhook OU consulte periodicamente

  • Webhook (recomendado): registre um endpoint que trate kyc.request.approved / rejected / escalated. Veja Webhooks.
  • Consulta periódica (polling): GET /api/v1/kyc/requests/{id} retorna o status atual. Intervalo recomendado: 30 s ou mais.

Atribuição a parceiro / subtenant

Se você executa verificações em nome de muitos clientes finais a partir de uma única organização — o clássico modelo de parceiro / revendedor, por exemplo uma plataforma de assinatura eletrônica que verifica signatários de centenas de empresas — não é preciso ter uma organização por cliente. Marque cada solicitação com dois campos opcionais ao criá-la pela API:

  • subTenantName — o nome de exibição do cliente final (por exemplo "Acme Corp").
  • subTenantExternalId — o seu id interno desse cliente (por exemplo cust_8842).

Depois de marcadas, você pode:

  • Filtrar o endpoint de listagem por subTenantExternalId (GET /api/v1/kyc/requests?subTenantExternalId=cust_8842).
  • Direcionar webhooks — os dois campos são repetidos em cada envelope de evento, de modo que o seu manipulador sabe a qual cliente um resultado pertence sem precisar fazer uma consulta.
  • Filtrar os painéis — Uso de KYC/B, Registro de auditoria, Monitoramento, Relatórios e Análises ganham um filtro de Subtenant assim que alguma solicitação tiver as marcações, e as listas de KYC/KYB podem exibir as colunas Subtenant e ID externo (ocultas por padrão — ative-as no menu de colunas).

Veja a referência da API para o formato exato da requisição: Solicitações de KYC → Criar uma solicitação.

Limites de taxa

O limite de requisições por minuto da sua API é definido pelo seu plano (valores típicos: 60/min no Launch, 300/min no Pro/Scale, 600/min no Enterprise). O teto exato da sua organização é exibido somente para leitura na página Desenvolvedor, e cada resposta da API o traz no cabeçalho X-RateLimit-Limit. Cada chave é medida de forma independente em relação a esse teto.

Quando você o excede, as requisições retornam HTTP 429 Too Many Requests com X-RateLimit-Reset (segundos até a janela ser reiniciada). Aguarde e tente novamente.

Precisa de um teto maior? O seu superadministrador o define — ele pode aumentar o limite do seu cliente até o teto do plano em Admin → Clientes → (sua organização) → Editar organização (um teto maior exige migrar para um plano superior). O limite é controlado pelo operador: os tenants podem visualizá-lo, mas não alterá-lo. Veja a referência para desenvolvedores para conhecer toda a mecânica: Limites de taxa.

Boas práticas de segurança

  • Guarde as chaves em variáveis de ambiente ou em um gerenciador de segredos. Nunca as envie ao git nem as compartilhe em chats. Chaves enviadas a repositórios públicos costumam ser coletadas por robôs em poucos minutos.
  • Uma chave por ambiente. Não compartilhe uma chave ck_live_... entre homologação e produção — a rotação de uma não deve afetar a outra.
  • Use chaves com escopo restrito. Uma chave somente leitura para o monitoramento e uma chave de escrita para o serviço de cadastro é mais seguro do que uma única chave onipotente em todos os lugares.
  • Prenda as chaves aos seus servidores. Adicione a lista de IPs permitidos para chaves usadas apenas a partir de endereços fixos.
  • Rotacione a cada trimestre. Use Rotacionar (abaixo): a chave antiga continua funcionando durante a sobreposição que você escolher, e assim você implanta a nova sem tempo de inatividade. O registro de auditoria registra a troca.
  • Fique atento a usos não autorizados. A lista de chaves mostra quando e a partir de qual endereço cada chave foi usada pela última vez, e o registro de auditoria registra a criação, as edições, a rotação e a revogação das chaves. Investigue qualquer endereço que você não reconheça.

Rotacione uma chave

A caixa de diálogo Rotacionar chave de API — por quantas horas a chave antiga continua funcionando (0 a 168) e o botão Rotacionar chave.

Desenvolvedor → Chaves de API → Rotacionar cria uma substituta com o mesmo rótulo, as mesmas permissões, restrições, lista de IPs permitidos e expiração, e exibe a nova chave uma única vez.

  • Sobreposição (0 a 168 horas, padrão 24). A chave antiga continua funcionando durante esse período e depois retorna 401 api_key_rotated. Defina 0 para revogar a chave antiga imediatamente.
  • A lista marca a chave antiga como "Rotacionada — a chave antiga funciona até …" e a nova como "Substitui uma chave rotacionada". Uma chave que já foi rotacionada não pode ser rotacionada novamente; rotacione a substituta dela.
  • Você também pode editar ou revogar a chave antiga durante a sobreposição, se precisar cortá-la antes.

Revogue uma chave

Quando uma chave for comprometida, vazada ou não for mais necessária:

  • Desenvolvedor → Chaves de API → menu de três pontos → Revogar.
  • Entra em vigor imediatamente. Qualquer requisição em andamento que use a chave recebe 401 na próxima chamada.
  • Não pode ser desfeito — não existe um botão para "desfazer a revogação". Emita uma nova chave se mudar de ideia.

A revogação é registrada no registro de auditoria, junto com o usuário que a realizou.

Live vs. test

Toda chave é:

  • Test (ck_test_...) — destinada a desenvolvimento e CI.
  • Live (ck_live_...) — destinada à produção.

O ambiente marca o uso: cada resposta traz X-Certivant-Environment: test ou live, e o painel exibe o selo ao lado da chave, para que você distinga nos seus logs o tráfego de teste do tráfego de produção.

As chaves de teste não isolam os dados. Elas leem e gravam as mesmas verificações que as suas chaves live. O único ambiente de testes (sandbox) é aquele em que toda organização nova começa: até que a Certivant tenha verificado a sua organização, os recursos de verificação live ficam bloqueados para todas as chaves dela. Use uma organização separada se precisar de dados de teste totalmente separados.

Solução de problemas

401 Unauthorized

O error.reason no corpo da resposta informa o motivo:

error.reasonSignificado
missing_api_keyNão há cabeçalho Authorization: Bearer ….
invalid_api_keyA chave não existe (erro de digitação, truncada, organização errada).
api_key_revokedA chave foi revogada.
api_key_expiredA data de expiração da chave já passou.
api_key_rotatedA chave foi rotacionada e a janela de sobreposição terminou. Use a substituta.

403 Forbidden

error.reason:

error.reasonSignificado
insufficient_scopeA chave não tem o escopo exigido pelo endpoint (a mensagem informa os escopos aceitos). Edite a chave ou emita uma nova.
ip_not_allowedA requisição veio de um endereço que não está na lista de IPs permitidos da chave.
form_not_allowedA chave está restrita a outros formulários: o formulário, ou a verificação solicitada, não foi criado por meio de nenhum deles.

429 Too Many Requests

Você está sendo limitado por taxa. Consulte o cabeçalho Retry-After (em segundos) e aguarde de acordo. Para um volume sustentado, peça um limite maior.

"Perdi o valor da chave"

As chaves são exibidas uma única vez. Não há recuperação. Revogue a chave antiga e emita uma nova — a sua equipe terá de atualizar o novo valor em todos os lugares onde o antigo foi implantado.