Skip to main content
O serviço de sessões FaceTec é a camada HTTP da Plataforma ID que orquestra cada captura de liveness: ele autoriza o seu projeto, minta o token do FaceTec via Apigee e devolve ao seu cliente todos os artefatos que o LivenessFacetecSDK precisa para abrir a UI nativa. Sem essa chamada, o SDK não consegue inicializar a captura. A base URL de produção é https://facetec.hub-liveness-service.app e todas as rotas ficam abaixo de /api/v1. A autenticação segue o padrão da Plataforma ID via header x-api-key — veja Chaves de API

Por que essas chamadas existem

O LivenessFacetecSDK é apenas um cliente: quem cria a sessão, gerencia o ciclo de vida e fala com o FaceTec é o serviço. O fluxo completo de uma captura passa por duas integrações server-side que você precisa implementar:
  • POST /api/v1/sessions — cria a sessão de liveness e devolve sessionToken + facetecSessionToken. Sem esses valores o SDK não consegue inicializar a UI do FaceTec.
  • POST /api/v1/sessions/:sessionId/fail — encerra uma sessão ativa quando o fluxo é abortado fora do SDK (usuário cancela na sua tela, validação de negócio rejeita antes da captura, timeout do front, etc.). Importante para reconciliação e auditoria.
Faça essas chamadas no seu backend, não no app.A x-api-key da Plataforma ID identifica o seu projeto e libera acesso à cobrança e às credenciais FaceTec. Embuti-la no binário Android, no IPA ou no bundle JS de uma SPA é equivalente a publicar a chave no repositório — qualquer pessoa consegue extrair, reusar e gerar custo no seu projeto com ferramentas comuns (jadx, Hopper, DevTools).A única integração segura é proxy-server-side: o seu cliente fala com o seu backend, o seu backend fala com a Plataforma ID. O cliente nunca toca na x-api-key.

Fluxo recomendado

1

Cliente solicita sessão ao seu backend

O app/web invoca um endpoint do seu próprio backend (com a sua autenticação de usuário), repassando opcionalmente o visitorId e eventId que o SDK já obteve durante a inicialização — veja Metadados Complementares.
2

Seu backend chama POST /api/v1/sessions

Servidor para servidor, com o header x-api-key. A Plataforma ID retorna sessionId, sessionToken, facetecSessionToken e metadados complementares.
3

Seu backend devolve os tokens ao cliente

Envie ao cliente apenas o que ele precisa: sessionId, sessionToken, facetecSessionToken e expiresAt.
4

Cliente inicializa o Liveness com esses tokens

O LivenessFacetecSDK consome os tokens e abre a UI nativa do FaceTec. Veja Implementação Android ou Implementação iOS.
5

Se o fluxo for abortado, falhe a sessão

Caso o usuário cancele ou o seu backend rejeite o fluxo antes da captura terminar, chame POST /api/v1/sessions/:sessionId/fail para marcar a sessão como falha.

POST /api/v1/sessions

Cria uma nova sessão de liveness FaceTec e retorna os tokens que o SDK precisa para inicializar a captura. Endpoint: POST https://facetec.hub-liveness-service.app/api/v1/sessions

Headers

HeaderValor
x-api-keyChave da Plataforma ID — ver Chaves de API
Content-Typeapplication/json

Body

clientRequestId
string (uuid)
required
UUID gerado pelo seu backend para esta tentativa. Funciona como chave de idempotência: reenvios com o mesmo (projeto, clientRequestId) retornam a mesma sessão em vez de criar uma nova.
visitorId
string
Identificador de dispositivo obtido pelo SDK durante a inicialização.
eventId
string
Identificador do evento de inicialização do SDK, usado para correlacionar sinais de risco do dispositivo. Quando informado, o serviço enriquece a resposta com deviceSignals e geolocation. Veja Metadados Complementares.
maxAttempts
integer
Número máximo de capturas biométricas permitidas na sessão. Quando uma captura falha e ainda há tentativas disponíveis, o FaceTec exibe a tela de retry automaticamente sem criar nova sessão. Mínimo: 1 · Máximo: 5 · Default: 3

Resposta 201

sessionId
string (uuid)
ID da sessão criada. Use-o no SDK e em chamadas subsequentes ao serviço.
sessionToken
string (jwt)
JWT HS256 emitido pelo serviço (TTL de 600s). O SDK utiliza este token ao submeter a captura.
facetecSessionToken
string
Token do FaceTec necessário para inicializar a UI nativa da captura.
createdAt
string (iso-8601)
Data/hora de criação da sessão.
expiresAt
string (iso-8601)
Data/hora de expiração. Após esse instante a sessão é marcada como expired e não aceita mais captura.
notice
string
Texto de consentimento / aviso legal. Exiba ao usuário antes de iniciar a captura.
deviceSignals
object
Sinais de risco do dispositivo. Presente quando o eventId é informado e o enriquecimento é bem-sucedido. Inclui suspectScore, flags como emulator, simulator, root, jailbroken, frida, mitm, tampering, bot, antiDetectBrowser, developerTools, locationSpoofing, incognito, clonedApp, factoryReset, replayed, tor, blocklist, emailSpam, além de vpnConfidence (low | medium | high | null) e proxyType (residential | data_center | null).
geolocation
object
Geolocalização derivada do visitorId: latitude, longitude, city, region, country e timezone. Também opcional.

Códigos de erro

StatusQuando ocorre
400clientRequestId ausente ou fora do formato UUID
401Header x-api-key ausente ou inválido
403Chave válida, mas o projeto não tem o produto Liveness habilitado
500Falha ao mintar o token FaceTec via Apigee

POST /api/v1/sessions/:sessionId/fail

Encerra explicitamente uma sessão ativa sem captura submetida. Use sempre que o fluxo for abortado fora do SDK — cancelamento do usuário antes de iniciar, falha de validação no seu backend, timeout do front, etc. Endpoint: POST https://facetec.hub-liveness-service.app/api/v1/sessions/:sessionId/fail

Headers

HeaderValor
x-api-keyChave da Plataforma ID — ver Chaves de API
Content-Typeapplication/json

Path params

ParamTipoDescrição
sessionIdUUIDsessionId retornado pelo POST /api/v1/sessions

Body

reason
string
required
Motivo do encerramento (1 a 500 caracteres). Persistido para auditoria — não inclua dados sensíveis do usuário aqui.

Resposta 200

sessionId
string (uuid)
ID da sessão finalizada.
status
string
Sempre "failed".
failureReason
string
Eco do reason enviado.
finalizedAt
string (iso-8601)
Data/hora em que a sessão foi marcada como falha.

Códigos de erro

StatusQuando ocorre
400sessionId não é UUID ou reason ausente/fora do tamanho permitido
401x-api-key ausente ou inválido
404Sessão não encontrada para o projeto
409Sessão já está finalizada (completed, failed ou expired)

Metadados Complementares

O eventId é um identificador do evento que o LivenessFacetecSDK obtém durante a inicialização, antes de qualquer chamada ao serviço de sessão. Quando você o repassa em POST /api/v1/sessions, o serviço enriquece a resposta com dois objetos opcionais:
  • deviceSignals — flags de risco do dispositivo (emulador, root, MITM, bot, VPN, etc.).
  • geolocation — localização aproximada derivada do dispositivo.
Nem sempre o SDK consegue obter o eventId. A coleta depende de conectividade no momento do init, das permissões do dispositivo, das configurações de privacidade do usuário e do ambiente de execução — alguns simuladores e dispositivos com privacidade agressiva bloqueiam a coleta. Por isso o campo é opcional: quando ausente, o serviço cria a sessão normalmente, apenas sem o enriquecimento de deviceSignals e geolocation.
O app/web deve repassar o eventId ao seu backend no mesmo request em que pede a sessão. O SDK expõe esse valor depois que init retorna com sucesso — consulte a documentação de implementação da sua plataforma para detalhes do acesso.

Boas práticas

Mesmo ofuscada, qualquer chave embarcada no binário Android/iOS ou no bundle JS pode ser extraída com ferramentas comuns (jadx, Hopper, DevTools). Mantenha a chave apenas no seu backend, idealmente em um Secret Manager. O cliente só deve receber sessionToken e facetecSessionToken.
Gere o UUID no início do fluxo e reutilize-o em retries de rede do seu backend. Reenvios com o mesmo (projeto, clientRequestId) retornam a mesma sessão, evitando duplicar consumo e tokens.
Sessões não finalizadas expiram sozinhas por TTL, mas chamar /fail com um reason significativo melhora auditoria, reconciliação de métricas e investigação de incidentes.
Quando o SDK conseguir obter o eventId, repasse-o ao seu backend e inclua-o no POST /api/v1/sessions. Você recebe deviceSignals e geolocation em troca — úteis para regras antifraude.

Próximos passos

Implementação Android

Inicialize o SDK com o token de sessão emitido pelo serviço

Implementação iOS

Inicialize o SDK com o token de sessão emitido pelo serviço

Chaves de API

Gere e gerencie a sua chave da Plataforma ID

Autenticação

Como o header x-api-key funciona em todas as APIs