Skip to content
Vai integrar a plataforma Zarv com ajuda de IA? Copie a instrução que aponta o modelo para esta documentação.
Ver a instrução
Você vai integrar a plataforma Zarv. Use a documentação oficial como fonte da verdade.

- Página desta integração: https://developers.zarv.com/quickstart
- Comece pelo Setup (hosts, autenticação, loader do SDK): https://developers.zarv.com/setup
- Índice da documentação em markdown: https://developers.zarv.com/llms.txt
- Documentação completa em um arquivo: https://developers.zarv.com/llms-full.txt

Antes de escrever qualquer código, leia a página desta integração. Siga exatamente os nomes de campos, endpoints, callbacks e formatos que estiverem documentados — não invente parâmetros nem endpoints, e não deduza comportamento a partir de outras APIs que você conhece. Se algo de que você precisa não estiver na documentação, diga que não está em vez de supor.

Minha tarefa: [descreva aqui o que você quer construir]

Comece em 5 minutos

Este guia vai do zero à primeira verificação de identidade: autenticar, criar a verificação e receber o resultado. Você precisa de um usuário Zarv com as roles id-create e id-view — peça ao time da Zarv se ainda não tiver.

Todos os exemplos usam https://services.zarv.com, o host de produção.

1. Obtenha um token

Troque usuário e senha por um token de acesso. Faça isso no seu servidor — nunca no navegador.

sh
curl -X POST "https://services.zarv.com/api/v1/authentication" \
  -H "Content-Type: application/json" \
  -d '{"username": "[email protected]", "password": "sua_senha"}'
js
const res = await fetch("https://services.zarv.com/api/v1/authentication", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    username: "[email protected]",
    password: "sua_senha",
  }),
});

const { accessToken } = await res.json();
py
import requests

res = requests.post(
    "https://services.zarv.com/api/v1/authentication",
    json={"username": "[email protected]", "password": "sua_senha"},
)

access_token = res.json()["accessToken"]

A resposta traz accessToken e refreshToken:

json
{
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 360,
  "refreshExpiresIn": 1800
}

O token dura 6 minutos

Guarde o accessToken e reutilize-o enquanto valer. Quando expirar, use o refresh em vez de reenviar usuário e senha. Autenticar a cada requisição gasta a sua cota à toa.

2. Crie uma verificação

Envie o CPF ou CNPJ a verificar. A criação é assíncrona: a API responde na hora com um id e o status CREATED, e o resultado fica pronto depois.

sh
curl -X POST "https://services.zarv.com/api/v2/verifications" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "nationalId": "012345678900",
    "verifications": { "type": "full", "finance": { "restrictions": true } },
    "callback": { "url": "https://sua-api.com/webhooks/zarv", "method": "POST" },
    "metadata": { "pedidoId": "12345" }
  }'
js
const res = await fetch("https://services.zarv.com/api/v2/verifications", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${accessToken}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    nationalId: "012345678900",
    verifications: { type: "full", finance: { restrictions: true } },
    callback: { url: "https://sua-api.com/webhooks/zarv", method: "POST" },
    metadata: { pedidoId: "12345" },
  }),
});

const { id } = await res.json();
py
res = requests.post(
    "https://services.zarv.com/api/v2/verifications",
    headers={"Authorization": f"Bearer {access_token}"},
    json={
        "nationalId": "012345678900",
        "verifications": {"type": "full", "finance": {"restrictions": True}},
        "callback": {"url": "https://sua-api.com/webhooks/zarv", "method": "POST"},
        "metadata": {"pedidoId": "12345"},
    },
)

verification_id = res.json()["id"]

Resposta 201:

json
{
  "id": "805181ca-2956-49e1-81bb-93d1792d269d",
  "nationalId": "012345678900",
  "status": "CREATED"
}

Guarde o id: é por ele que você consulta o resultado. O campo metadata é livre e volta igual no webhook — use para amarrar a verificação ao seu pedido.

3. Receba o resultado

A verificação passa por CREATEDPROCESSINGCOMPLETED (ou FAILED). Há duas formas de saber que terminou.

Webhook (recomendado)

Como você mandou callback.url no passo 2, a Zarv chama o seu endpoint assim que a verificação chega a um estado final:

json
{
  "id": "805181ca-2956-49e1-81bb-93d1792d269d",
  "status": "COMPLETED",
  "metadata": { "pedidoId": "12345" }
}

Responda 200 para confirmar o recebimento, e trate o processamento de forma assíncrona. O payload avisa que terminou; os dados vêm na consulta abaixo.

Detalhes de configuração, cabeçalhos e reenvio estão no Webhook de Verificação.

Consulta direta

Com o id em mãos:

sh
curl "https://services.zarv.com/api/v2/verifications/805181ca-2956-49e1-81bb-93d1792d269d" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
js
const res = await fetch(
  `https://services.zarv.com/api/v2/verifications/${id}`,
  { headers: { Authorization: `Bearer ${accessToken}` } },
);

const verification = await res.json();
py
res = requests.get(
    f"https://services.zarv.com/api/v2/verifications/{verification_id}",
    headers={"Authorization": f"Bearer {access_token}"},
)

verification = res.json()

Quando o status for COMPLETED, o corpo traz o nome do titular, o score e o resultado dos módulos que você pediu.

Prefira o webhook ao polling

Se for consultar em loop, espere entre as tentativas e aumente o intervalo a cada uma. Consultar em rajada gasta a sua cota sem acelerar o resultado.

Próximos passos

  • Referência da API — todos os endpoints, campos e exemplos.
  • Decision Engine — verificação por perfil de scoring, com dossiê consolidado e resumo por IA.
  • Setup — a página densa, escrita para agentes de código.
  • Limites de uso — cota por workspace e como tratar o 429.