Skip to content

Face ​

Este endpoint recebe uma imagem e devolve a lista das faces encontradas nela. Para cada face, você recebe onde ela está na imagem (boundingBox), o recorte dela em base64 e os atributos estimados pelo detector — idade aparente e gênero.

É um endpoint de análise de uma imagem isolada. Ele não confronta a face com nada.

🚧 Face e Face Match não fazem a mesma coisa

Esta é a confusão mais comum entre os dois endpoints vizinhos:

  • Face (esta página) — recebe uma imagem e descreve as faces que existem nela. Não há comparação.
  • Face Match — recebe duas imagens e responde se a face de uma é a mesma pessoa da outra.

Se o que você quer é comparar uma selfie com a foto de um documento, o endpoint é o Face Match, não este.

Este endpoint também não faz liveness (use o Liveness) e não identifica a pessoa nem consulta bases oficiais.

Request ​

POST /face/v1

Headers ​

http
Authorization: ApiKey <sua-chave-de-api>

Este endpoint também aceita o token JWT, no formato Authorization: Bearer <accessToken>. Veja Token JWT.

Parâmetros ​

Todos são opcionais, na query string.

ParâmetroDescriçãoObrigatório
shouldRotateFaceQuando true, o recorte da face é rotacionado antes de ser devolvido. Padrão: false.Não
shouldReturnConfidenceQuando true, cada item de data passa a trazer também o campo confidence da detecção. Padrão: false.Não
faceCropProportionProporção usada no recorte da face. Número decimal, padrão 1.Não

TIP

shouldRotateFace e shouldReturnConfidence são ligados apenas pelo valor exato true. Qualquer outro valor — inclusive 1 ou TRUE — é tratado como false.

Arquivos aceitos ​

ItemValor
Formatosimage/png, image/jpeg
Quantidade por chamada1 arquivo
Tamanho máximo (multipart)15 MB

O nome do campo do formulário é livre — use o que fizer sentido na sua integração. Se mais de um arquivo for enviado, a requisição é recusada com 422.

🚧 Este endpoint não aceita PDF

Diferente do Face Match, aqui só entram imagens PNG e JPEG. Enviar um PDF resulta em 422.

Além do multipart/form-data, o arquivo pode ser enviado em JSON, no campo base64, como descrito em Envio de arquivos.

Exemplo Request ​

bash
curl -i -X POST 'https://api-homolog.nxcd.app/face/v1' \
  --header 'Authorization: ApiKey SUA_CHAVE_AQUI' \
  --form 'foto=@./foto.jpg'

Com os parâmetros opcionais:

bash
curl -i -X POST 'https://api-homolog.nxcd.app/face/v1?shouldReturnConfidence=true&faceCropProportion=1.5' \
  --header 'Authorization: ApiKey SUA_CHAVE_AQUI' \
  --form 'foto=@./foto.jpg'

Response ​

CampoDescriçãoTipo
idIdentificador único da requisiçãoString
versionVersão da API que atendeu a chamadaString
dataLista com uma entrada por face encontrada na imagem. Vem vazia quando nenhuma face é encontrada.Object[]
data[].confidenceConfiança da detecção da face. Só aparece quando shouldReturnConfidence=true.Number
data[].ageIdade aparente estimada para a faceNumber
data[].genderObjeto com o gênero aparente estimado para a faceObject
data[].gender.valueGênero aparente: Male ou FemaleString
data[].gender.confidenceConfiança da estimativa de gênero, de 0 a 100Number
data[].boundingBoxPosição da face na imagem original. Os quatro valores são proporções da imagem, entre 0 e 1.Object
data[].boundingBox.topInício da face no eixo YNumber
data[].boundingBox.leftInício da face no eixo XNumber
data[].boundingBox.widthLargura da faceNumber
data[].boundingBox.heightAltura da faceNumber
data[].croppedBase64Recorte da face em base64, pronto para uso em HTMLString
metadataObjeto com os metadados da requisiçãoObject
metadata.filesInfoLista com as informações do arquivo enviadoObject[]
metadata.filesInfo[].fieldnameNome do campo usado no envioString
metadata.filesInfo[].nameNome do arquivo enviadoString
metadata.filesInfo[].sizeTamanho do arquivo, em bytesNumber
metadata.filesInfo[].mimetypeTipo do arquivo enviadoString
metadata.filesInfo[].encodingCodificação do arquivo no envioString
metadata.filesInfo[].sha256Hash SHA-256 do arquivo enviadoString
metadata.timeSpentTempo de processamento da requisição, em milissegundosNumber

TIP

data é uma lista, não um objeto: uma foto com três pessoas devolve três entradas. Nenhuma face detectada devolve 200 com "data": [] — não é um erro.

Exemplos JSON ​

  1. Uma face encontrada
Status Code: 200
json
{
  "id": "13cfec7c-b238-4820-a4d1-5173e4c1418e",
  "version": "v1",
  "data": [
    {
      "age": 34,
      "gender": {
        "value": "Male",
        "confidence": 99.72
      },
      "boundingBox": {
        "top": 0.11424895375967026,
        "left": 0.26937249302864075,
        "width": 0.42325547337532043,
        "height": 0.6968063116073608
      },
      "croppedBase64": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAA...K5CYII="
    }
  ],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "foto",
        "name": "foto.jpg",
        "size": 196965,
        "mimetype": "image/jpeg",
        "encoding": "7bit",
        "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
      }
    ],
    "timeSpent": 1230
  }
}
  1. Nenhuma face encontrada
Status Code: 200
json
{
  "id": "6a1d1e8c-4a7d-4a5e-9f2c-1b0f2a9c7e11",
  "version": "v1",
  "data": [],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "foto",
        "name": "paisagem.jpg",
        "size": 152064,
        "mimetype": "image/jpeg",
        "encoding": "7bit",
        "sha256": "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"
      }
    ],
    "timeSpent": 640
  }
}
  1. Com shouldReturnConfidence=true
Status Code: 200
json
{
  "id": "a7f0c3d2-9e51-4b8a-8f31-2d4c6b9e0a77",
  "version": "v1",
  "data": [
    {
      "confidence": 0.97,
      "age": 29,
      "gender": {
        "value": "Female",
        "confidence": 98.4
      },
      "boundingBox": {
        "top": 0.2237228155136108,
        "left": 0.2856607735157013,
        "width": 0.1555942893028259,
        "height": 0.1687679588794708
      },
      "croppedBase64": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAA...SuQmCC"
    }
  ],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "foto",
        "name": "foto.png",
        "size": 210433,
        "mimetype": "image/png",
        "encoding": "7bit",
        "sha256": "fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9"
      }
    ],
    "timeSpent": 1410
  }
}

Headers de resposta ​

HeaderQuando aparece
Nextid-ReqIdEm todas as respostas. Traz o identificador da requisição, o mesmo do campo id do corpo.

Erros ​

CódigoQuando ocorre
401 UnauthorizedChave de API ou token JWT ausente, inválido, ou sem permissão para este endpoint.
404 Not FoundA versão informada na URL não existe. Só a v1 é aceita.
406 Not AcceptableO corpo foi enviado como JSON, mas sem o campo base64.
413 Payload Too LargeO arquivo enviado em multipart/form-data passa de 15 MB.
415 Unsupported Media TypeO header Content-Type está ausente ou não é suportado.
422 Unprocessable EntityO formato do arquivo não é aceito, ou foi enviado mais de um arquivo na mesma chamada.
500 Internal Server ErrorFalha inesperada durante o processamento.

O formato das respostas de erro está descrito em Códigos HTTP das respostas.

Versões ​

Este endpoint tem uma única versão, a v1. Ela é o padrão quando a versão é omitida na URL.

VersãoSituaçãoO que muda
v1RecomendadaÚnica versão. Atende tanto /face quanto /face/v1.

Qualquer outro valor na URL — /face/v2, por exemplo — devolve 404.

Nextcode | Soluções em Verificação de Identidade