Header simples: Authorization: Bearer SEU_TOKEN.
Visão geral da integração
A autenticação é feita por Bearer Token. Não existe mais bootstrap HMAC no cliente. Basta enviar o token no header Authorization e usar JSON com as imagens codificadas em Base64.
Use HTTPS quando o serviço estiver com SOLICITACAO_HTTPS=true.
Requests em JSON com campos como image_base64, selfie_base64 e image_a_base64.
Os endpoints retornam success, indicadores de match, confidence, threshold e token de reconhecimento quando aplicável.
Passo a passo
Solicite seu painel e o token da aplicação pelo WhatsApp.
Configure FACE_SERVICE_BASE_URL e FACE_SERVICE_TOKEN no seu projeto.
Envie a selfie ou imagem em Base64 para os endpoints que precisa usar.
Consuma o resultado no seu fluxo de negócio e armazene o recognition_token quando houver match.
Configuração Laravel
Exemplo de configuração mínima no cliente Laravel:
// config/services.php
'face_service' => [
'base_url' => env('FACE_SERVICE_BASE_URL'),
'token' => env('FACE_SERVICE_TOKEN'),
],
// .env
FACE_SERVICE_BASE_URL=http://seu-face-service.com
FACE_SERVICE_TOKEN=TOKEN_GERADO_NO_PAINEL
Exemplo simples de chamada com o client HTTP do Laravel:
use Illuminate\Support\Facades\Http;
$response = Http::baseUrl(config('services.face_service.base_url'))
->withToken(config('services.face_service.token'))
->acceptJson()
->post('/api/v1/faces/compare', [
'tenant_uuid' => '00000000-0000-0000-0000-000000000000',
'image_a_base64' => $imagemA,
'image_b_base64' => $imagemB,
])
->json();
Endpoints principais
Cadastra a face de um usuário dentro da collection do tenant.
Verifica se a selfie enviada pertence ao usuário informado.
Identifica o usuário correspondente a uma selfie dentro do tenant.
Compara duas imagens e retorna matched, confidence e recognition_token quando houver match.
Payloads de exemplo
Comparação facial:
{
"tenant_uuid": "00000000-0000-0000-0000-000000000000",
"image_a_base64": "data:image/jpeg;base64,...",
"image_b_base64": "data:image/jpeg;base64,..."
}
Verificação facial:
{
"tenant_uuid": "00000000-0000-0000-0000-000000000000",
"user_id": 123,
"selfie_base64": "data:image/jpeg;base64,..."
}
Exemplos prontos para copiar
Use os exemplos abaixo como base inicial. Basta trocar a URL, o token e os dados das imagens.
Exemplo em curl para comparação:
curl -X POST "http://seu-face-service.com/api/v1/faces/compare" \
-H "Authorization: Bearer TOKEN_GERADO_NO_PAINEL" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"tenant_uuid": "00000000-0000-0000-0000-000000000000",
"image_a_base64": "data:image/jpeg;base64,...",
"image_b_base64": "data:image/jpeg;base64,..."
}'
Exemplo em PHP puro com cURL:
<?php
$payload = [
'tenant_uuid' => '00000000-0000-0000-0000-000000000000',
'user_id' => 123,
'selfie_base64' => 'data:image/jpeg;base64,...',
];
$ch = curl_init('http://seu-face-service.com/api/v1/faces/verify');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer TOKEN_GERADO_NO_PAINEL',
'Accept: application/json',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE),
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($httpCode, json_decode($response, true));
Exemplo em JavaScript com fetch:
const response = await fetch('http://seu-face-service.com/api/v1/faces/identify', {
method: 'POST',
headers: {
'Authorization': 'Bearer TOKEN_GERADO_NO_PAINEL',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
tenant_uuid: '00000000-0000-0000-0000-000000000000',
selfie_base64: 'data:image/jpeg;base64,...'
})
});
const data = await response.json();
console.log(response.status, data);
Resposta típica de sucesso em comparação com match:
{
"success": true,
"matched": true,
"confidence": 98.42,
"threshold": 80,
"recognition_token": "550e8400-e29b-41d4-a716-446655440000",
"recognition_limit": null,
"recognition_count": 12,
"recognition_remaining": null
}
FAQ rápido
Preciso implementar HMAC?
Não. A integração atual usa bearer token simples.
Posso integrar em ambiente local?
Sim. Se o servidor estiver com SOLICITACAO_HTTPS=false, você pode usar http:// em desenvolvimento.
Como recebo acesso?
Solicite seu painel no WhatsApp e enviamos o token e as orientações iniciais.