Pular para o conteúdo principal

Webhooks

A Velix envia notificações HTTP POST para sua URL configurada quando eventos ocorrem na plataforma.


Eventos disponíveis

EventoQuando
checkin.successCheck-in aprovado
checkin.deniedBiometria não reconhecida
checkin.liveness_failedProva de vida reprovada
checkin.geofence_alertCheck-in aprovado com alerta de localização
person.enrolledEnroll biométrico concluído
person.deletedPessoa removida do tenant

Payload

{
"event": "checkin.success",
"tenantId": "tenant_abc",
"timestamp": "2026-06-22T10:30:00.000Z",
"data": {
"personId": "person_xyz",
"eventId": "event_123",
"method": "facial",
"geofenceStatus": "ok"
}
}

Verificar assinatura

Toda requisição inclui o header X-Velix-Signature com o HMAC-SHA256 do corpo usando o secret configurado. Sempre verifique a assinatura antes de processar.

import { createHmac, timingSafeEqual } from 'crypto';

function verifySignature(rawBody: string, signature: string, secret: string): boolean {
const expected = createHmac('sha256', secret).update(rawBody).digest('hex');
return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

// Express:
app.post('/webhooks/velix', (req, res) => {
const sig = req.headers['x-velix-signature'] as string;
if (!verifySignature(req.rawBody, sig, process.env.VELIX_WEBHOOK_SECRET!))
return res.status(401).send('Assinatura inválida');
console.log(`Evento: ${req.body.event}`);
res.sendStatus(200);
});

Configurar webhook

:::caution Endpoint corrigido Não existe um recurso /v1/webhooks dedicado. A URL do webhook é um campo de configurações do tenant (webhookUrl), atualizado via PATCH /v1/tenants/:id/settings. O secret usado para assinar o payload (X-Velix-Signature) é fornecido pela equipe Velix durante o onboarding do tenant — solicite a rotação em caso de suspeita de vazamento. :::

curl -X PATCH https://api.velixbiometrics.com/v1/tenants/$TENANT_ID/settings \
-H "Authorization: Bearer $VELIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhookUrl": "https://sua-api.com/webhooks/velix"
}'

Retentativas

A Velix tenta reenviar por até 3 tentativas com backoff exponencial (1s, 5s, 30s) caso seu endpoint retorne status diferente de 2xx ou timeout acima de 10s.

:::tip Teste local Use ngrok ou similar para expor seu endpoint local durante o desenvolvimento:

ngrok http 3000

Então configure o webhook com a URL do ngrok. :::