Disponível hoje · Fornecedor de listas de PPE e de sanções

As listas de sanções e de PPE, prontas a integrar por API

A Authenica fornece dados de conformidade: as listas de sanções internacionais e nacionais e as listas de pessoas politicamente expostas da UEMOA, consolidadas, recarregadas regularmente e servidas por uma API segura. Cada resultado indica a lista e a versão da lista de onde provém.

Endereço: https://api.authenica.tech Formato: JSON Acesso: chave de API

Como funciona

O que obtém

A Authenica fornece dados de conformidade prontos a usar : a triagem dos seus clientes face a listas públicas e oficiais de sanções e de pessoas politicamente expostas (PPE), consolidadas, recarregadas regularmente e servidas por uma API segura, para que as suas equipas não tenham de recolher nem normalizar essas listas.

Listas públicas e oficiaisSanções das Nações Unidas, dos Estados Unidos (OFAC), da União Europeia, do Reino Unido, da Suíça e do Canadá, listas nacionais de congelamento das CENTIF da União, integradas Estado a Estado, e listas de PPE. A cobertura exata é detalhada lista a lista abaixo.
Uma prova por versãoCada resultado indica a lista e a versão da lista de onde provém. Pode demonstrar, a posteriori, o que dizia a lista no dia da triagem.
Recusa por defeitoUma indisponibilidade responde sempre com um erro, nunca com uma resposta vazia: o seu processo não deixa passar nada por falta de resposta.
Leitura e controlo de documentos de identidadeBilhete de identidade, passaporte, carta de condução, autorização de residência: os campos lidos, o modelo reconhecido e os controlos de autenticidade, a partir de uma fotografia. Nada é conservado.
Pesquisamos, não armazenamosA Authenica consulta as suas listas e responde: o nome que procura não é conservado em lado nenhum, nem no registo da chamada nem noutro sítio. Cada chamada recebe um identificador a guardar para provar que a triagem foi feita.

As listas consultadas

A triagem incide sobre listas públicas e oficiais, publicadas pelos respetivos emissores e recarregadas regularmente. Novas fontes são acrescentadas ao longo do tempo; a lista atualizada está sempre disponível pela API (ver «Listar as fontes»).

CódigoListaEmissorTipoSituação
UN_CONSOLIDATEDLista consolidada do Conselho de SegurançaNações UnidasSançõesServida
OFAC_SDNLista de nacionais especialmente designados (SDN)Departamento do Tesouro dos Estados Unidos (OFAC)SançõesServida
OFAC_CONSOLIDATEDLista consolidada não SDNDepartamento do Tesouro dos Estados Unidos (OFAC)SançõesServida
EU_FSFLista consolidada de sanções financeirasComissão EuropeiaSançõesServida
UK_SANCTIONS_LISTLista de sanções do Reino UnidoForeign, Commonwealth and Development OfficeSançõesServida
SECO_SWISS_SANCTIONSLista suíça de sançõesSecretaria de Estado da Economia (SECO)SançõesServida
CANADA_SEMALista canadiana de sanções (SEMA)Assuntos Globais CanadáSançõesServida
CENTIF_CI_1373Lista nacional, resolução 1373CENTIF da Costa do MarfimSançõesServida
CI_GOVERNMENTComposição do Governo da Costa do MarfimGabinete do Primeiro-Ministro da Costa do MarfimPPEServida
UEMOA_PPEPessoas politicamente expostas da UEMOAAuthenica, a partir de fontes públicasPPEServida

Situação segundo o registo de fontes da API. O estado em tempo real de cada lista e a data do seu último carregamento constam dos campos status e lastLoadedAt de GET /api/v1/lists/sources ; esta página não apresenta nenhuma data que aí não figure.

Cobertura das listas nacionais de congelamento

Cada Estado da União mantém, através da sua CENTIF, a sua própria lista nacional de congelamento de bens. A Authenica integra-as uma a uma; uma lista só é indicada como «servida» quando é efetivamente consultada pela API.

EstadoEmissorCódigoSituação
BenimCENTIF do Benim—Em integração
Burkina FasoCENTIF do Burkina Faso—Em integração
Costa do MarfimCENTIF da Costa do MarfimCENTIF_CI_1373Servida
Guiné-BissauCENTIF da Guiné-Bissau—Em integração
MaliCENTIF do Mali—Em integração
NígerCENTIF do Níger—Em integração
SénégalCENTIF do Senegal—Em integração
TogoCENTIF do Togo—Em integração
Sanções ou PPE. Um registo do tipo SANCTIONS é bloqueante: uma pessoa examina-o antes de qualquer decisão. Um registo do tipo PPE exige uma diligência reforçada, segundo a sua política.

Começar em dois minutos

  1. Obtenha uma chaveFaça o pedido online: criamos o seu acesso e entregamos-lhe a chave.
  2. Chame a APIUma chamada POST com o nome pesquisado e a sua chave.
  3. Leia o resultadoUma lista de registos, cada um com a sua lista e a sua versão.
curl -X POST https://api.authenica.tech/api/v1/screenings \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Zorbek Nandrawell","scoreThreshold":0.85}'
A reter. Uma resposta vazia significa: nenhum registo ultrapassa o seu limiar nas listas publicadas. Um serviço temporariamente indisponível responde 503, nunca uma resposta vazia.
TermoEm termos simples
TriagemProcurar uma pessoa ou uma empresa nas listas oficiais de sanções e de pessoas politicamente expostas.
PPEPessoa politicamente exposta: alguém que exerce ou exerceu uma função pública importante.
Chave de APIUma palavra-passe longa, própria da sua organização, que prova que a chamada vem de si.
QuotaO número de chamadas autorizadas por minuto para o seu acesso.

Obter a sua chave

  1. Preencha o formulário de pedido de chave de avaliação com o nome da sua organização e a utilização prevista. Respondemos em um dia útil.
  2. Criamos o seu acesso e entregamos-lhe a chave uma única vez. Não é conservada em claro: não lha podemos voltar a dar, apenas criar uma nova.
  3. Acordamos consigo uma quota por minuto.

Para alterar ou revogar uma chave, escreva para it@authenica.tech. A revogação é imediata.

Autenticação

Cada chamada leva a sua chave no cabeçalho X-Api-Key. O endereço de base é https://api.authenica.tech, apenas em HTTPS: uma chamada em HTTP é redirecionada.

Mantenha a chave secreta. Utilize-a a partir dos seus servidores, nunca a partir de um navegador ou de uma aplicação móvel. Nunca a coloque num repositório de código nem num registo.

Sem chave, com uma chave desconhecida, revogada ou expirada: resposta 401. Conhecer o endereço não dá qualquer acesso.

Consultar as listas

POST /api/v1/screenings

O que envia

CampoDescriçãoEm termos simples
fullName OBRIGATÓRIONome completo pesquisado, no máximo 300 caracteresOs nomes próprios e depois o apelido, como no documento de identidade.
scoreThreshold OBRIGATÓRIONúmero de 0 a 1Limiar de semelhança acima do qual um registo é devolvido. É a sua política de conformidade que o define, não a Authenica.
corroboratedThresholdNúmero de 0 a 1, inferior ao anteriorSegundo limiar, válido apenas se a data de nascimento coincidir: uma variante de escrita pontua menos mas designa a mesma pessoa.
entityTypeNATURAL_PERSON ou LEGAL_ENTITYProcurar apenas pessoas singulares, ou apenas empresas. Ausente: todos.
listTypesLista de SANCTIONS, PPE, LOCALProcurar apenas nestes tipos de listas. Ausente ou vazio: todos.
dateOfBirthData AAAA-MM-JJServe para confirmar ou contradizer um registo.
nationalityCódigo de país de duas letras (CI, SN, ML...)Idem.
placeOfBirthTexto livreIdem.
documentNumberNúmero do documento de identidadeReservado. Aceite apenas se o seu acesso o permitir; caso contrário é ignorado e a resposta indica-o em ignoredFields.
referenceTextoO seu identificador de pedido, sem nome de pessoa.
Sobre os limiares. Os exemplos desta página utilizam 0.85 para ilustrar. Não é uma recomendação: o limiar adequado depende da sua política de conformidade.

Ler a resposta

Resposta 200 :

{
  "requestId": "63f766c4-9c1c-4adb-ac8e-4e66674b4be0",
  "matches": [
    {
      "listType": "SANCTIONS",
      "listName": "AUTHENICA_TEST_SANCTIONS",
      "listVersion": "a0a0a0a0-0000-4000-8000-000000000001",
      "targetLabel": "Zorbek NANDRAWELL",
      "score": 1.0,
      "confidence": "UNCORROBORATED",
      "evidence": [
        {
          "field": "DOCUMENT_NUMBER",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": null
        },
        {
          "field": "DATE_OF_BIRTH",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": "15 Jun 1975"
        },
        {
          "field": "NATIONALITY",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": "Mali"
        },
        {
          "field": "PLACE_OF_BIRTH",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": "Bamako"
        }
      ],
      "details": {
        "entityType": "NATURAL_PERSON",
        "list": {
          "label": "Liste d'essai fictive : sanctions",
          "publisher": "Authenica"
        },
        "sanctionPrograms": [
          "TEST-FICTIF"
        ],
        "title": "Personne fictive de la liste d'essai",
        "description": "Fiche fictive pour tester l'intégration. Aucune personne réelle.",
        "nationalities": [
          "Mali"
        ],
        "datesOfBirth": [
          "15 Jun 1975"
        ],
        "placesOfBirth": [
          "Bamako"
        ]
      }
    }
  ],
  "ignoredFields": []
}
CampoEm termos simples
requestIdO identificador da sua chamada. Conserve-o e indique-o ao nosso suporte para encontrar a chamada. Está também no cabeçalho X-Request-Id.
matchesOs registos encontrados, do mais semelhante ao menos semelhante. Vazio: nenhum registo ultrapassa o seu limiar.
listTypeSANCTIONS : lista de sanções, bloqueante. PPE : pessoas politicamente expostas. LOCAL : lista local.
listNameO código da lista de origem, por exemplo OFAC_SDN, UN_CONSOLIDATED, EU_FSF, UEMOA_PPE. A lista completa está em «Listar as fontes».
listVersionO lote da lista que produziu o registo. Guarde-o: prova em que versão da lista a pessoa figurava.
targetLabelO nome do registo encontrado.
scoreA semelhança entre o nome pesquisado e o registo, de 0 a 1.
confidenceEm que medida os outros elementos confirmam a correspondência (ver abaixo).
evidenceO detalhe da comparação, elemento a elemento, para uma pessoa. Para uma empresa está vazio: apenas o nome é comparado.
detailsO que diz o registo encontrado, para compreender sem abrir a lista (ver «O detalhe do registo»).
ignoredFieldsOs campos enviados que o seu acesso não está autorizado a utilizar. Nunca são ignorados em silêncio.

A confiança, em termos simples

Ela nunca afasta um registo: um provável homónimo continua a ser um alerta a examinar por uma pessoa.

ValorO que significa
CORROBORATEDPelo menos um elemento coincide (data de nascimento, nacionalidade...) e nenhum contradiz fortemente.
MIXEDAlguns elementos coincidem e outros contradizem: um juízo humano é indispensável.
UNCORROBORATEDNada permite confirmar nem infirmar, porque faltam dados de um lado ou do outro.
LIKELY_HOMONYMNenhum elemento coincide e um elemento forte contradiz: provavelmente outra pessoa.

O detalhe do registo

O bloco details retoma o que o emissor da lista publica sobre o registo. Ajuda a distinguir dois homónimos, por exemplo duas pessoas com o mesmo nome mas funções diferentes.

CampoEm termos simples
entityTypeNATURAL_PERSON : uma pessoa singular. LEGAL_ENTITY : uma empresa.
listO nome legível da lista (label) e o seu emissor (publisher).
sanctionProgramsOs tipos de sanções : os regimes de sanções do registo, tal como o emissor os publica (por exemplo SDGT para um terrorista designado a nível mundial na lista norte-americana). Vazio para uma pessoa politicamente exposta.
titleA função publicada, por exemplo «Presidente da República» ou «Presidente da Câmara de Niéllé». É ela que distingue dois homónimos.
descriptionO texto que a lista publica sobre o registo, truncado a 600 caracteres. Ausente quando a função o substitui.
nationalities, datesOfBirth, placesOfBirthO que a lista publica. Sempre vazios para uma empresa.

O detalhe da comparação

Cada linha de evidence tem field (DATE_OF_BIRTH, NATIONALITY, PLACE_OF_BIRTH ou DOCUMENT_NUMBER), customerValue (o que enviou), listValue (o que diz o registo) e status :

  • MATCH : os dois coincidem.
  • CONFLICT : os dois contradizem-se.
  • UNKNOWN : um dos dois lados não indica o elemento, logo nem confirmação nem contradição.

Experimente com casos de teste

A Authenica mantém uma lista de ensaio fictícia para testar a sua integração de ponta a ponta, com resultados reproduzíveis. Não contém nenhuma pessoa nem empresa real : os nomes abaixo não existem. Pode repetir cada pedido com a sua chave e obter a mesma resposta.

Um nome presente na lista de sanções de ensaio, com a data de nascimento e a nacionalidade.

Pedido

curl -X POST https://api.authenica.tech/api/v1/screenings \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Zorbek Nandrawell","dateOfBirth":"1975-06-15","nationality":"ML","scoreThreshold":0.85}'

Resposta real da API

{
  "requestId": "b0fa0a4d-8236-44bc-9979-2a0a41fc95f2",
  "matches": [
    {
      "listType": "SANCTIONS",
      "listName": "AUTHENICA_TEST_SANCTIONS",
      "listVersion": "a0a0a0a0-0000-4000-8000-000000000001",
      "targetLabel": "Zorbek NANDRAWELL",
      "score": 1.0,
      "confidence": "CORROBORATED",
      "evidence": [
        {
          "field": "DOCUMENT_NUMBER",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": null
        },
        {
          "field": "DATE_OF_BIRTH",
          "status": "MATCH",
          "customerValue": "1975-06-15",
          "listValue": "15 Jun 1975"
        },
        {
          "field": "NATIONALITY",
          "status": "MATCH",
          "customerValue": "ML",
          "listValue": "Mali"
        },
        {
          "field": "PLACE_OF_BIRTH",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": "Bamako"
        }
      ],
      "details": {
        "entityType": "NATURAL_PERSON",
        "list": {
          "label": "Liste d'essai fictive : sanctions",
          "publisher": "Authenica"
        },
        "sanctionPrograms": [
          "TEST-FICTIF"
        ],
        "title": "Personne fictive de la liste d'essai",
        "description": "Fiche fictive pour tester l'intégration. Aucune personne réelle.",
        "nationalities": [
          "Mali"
        ],
        "datesOfBirth": [
          "15 Jun 1975"
        ],
        "placesOfBirth": [
          "Bamako"
        ]
      }
    }
  ],
  "ignoredFields": []
}

Como a ler

  • Uma correspondência na lista AUTHENICA_TEST_SANCTIONS, do tipo SANCTIONS : um tipo bloqueante.
  • CORROBORATED : a data de nascimento e a nacionalidade que enviou coincidem com o registo (ver evidence).
  • listVersion : o lote da lista que produziu o registo. Conserve-o com a sua decisão.
  • Uma correspondência numa lista de sanções deve ser examinada por uma pessoa antes de qualquer decisão.

Um nome presente na lista de PPE de ensaio, com a data de nascimento e a nacionalidade.

Pedido

curl -X POST https://api.authenica.tech/api/v1/screenings \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Kassim Dromvale","dateOfBirth":"1968-03-02","nationality":"CI","scoreThreshold":0.85}'

Resposta real da API

{
  "requestId": "5ce9f675-92cf-4f19-9bd3-3098496f12e9",
  "matches": [
    {
      "listType": "PPE",
      "listName": "AUTHENICA_TEST_PPE",
      "listVersion": "a0a0a0a0-0000-4000-8000-000000000002",
      "targetLabel": "Kassim DROMVALE",
      "score": 1.0,
      "confidence": "CORROBORATED",
      "evidence": [
        {
          "field": "DOCUMENT_NUMBER",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": null
        },
        {
          "field": "DATE_OF_BIRTH",
          "status": "MATCH",
          "customerValue": "1968-03-02",
          "listValue": "02 Mar 1968"
        },
        {
          "field": "NATIONALITY",
          "status": "MATCH",
          "customerValue": "CI",
          "listValue": "Côte d'Ivoire"
        },
        {
          "field": "PLACE_OF_BIRTH",
          "status": "UNKNOWN",
          "customerValue": null,
          "listValue": "Abidjan"
        }
      ],
      "details": {
        "entityType": "NATURAL_PERSON",
        "list": {
          "label": "Liste d'essai fictive : personnes politiquement exposées",
          "publisher": "Authenica"
        },
        "sanctionPrograms": [],
        "title": "Ministre (fonction fictive)",
        "description": "Fiche fictive pour tester l'intégration. Aucune personne réelle.",
        "nationalities": [
          "Côte d'Ivoire"
        ],
        "datesOfBirth": [
          "02 Mar 1968"
        ],
        "placesOfBirth": [
          "Abidjan"
        ]
      }
    }
  ],
  "ignoredFields": []
}

Como a ler

  • Uma correspondência na lista AUTHENICA_TEST_PPE, do tipo PPE.
  • Uma PPE não é uma sanção: exige uma diligência reforçada, segundo a sua política, após exame por uma pessoa.
  • CORROBORATED : a data de nascimento e a nacionalidade que enviou coincidem com o registo.

Um cliente comum, ausente de todas as listas.

Pedido

curl -X POST https://api.authenica.tech/api/v1/screenings \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Aminata Kone Diabate","dateOfBirth":"1990-04-12","nationality":"CI","scoreThreshold":0.85}'

Resposta real da API

{
  "requestId": "3b3a92ce-018f-452e-a63b-24d9129179a6",
  "matches": [],
  "ignoredFields": []
}

Como a ler

  • matches está vazio: nenhum registo ultrapassa o seu limiar nas listas publicadas.
  • Não é uma aprovação: o seu processo decide. Conserve o requestId para provar que a triagem foi feita.
  • Uma avaria nunca se parece com este resultado: um serviço indisponível responde 503.

Uma empresa da lista de ensaio, pesquisada com o filtro entityType.

Pedido

curl -X POST https://api.authenica.tech/api/v1/screenings \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Nandrawell Holding SARL","entityType":"LEGAL_ENTITY","scoreThreshold":0.85}'

Resposta real da API

{
  "requestId": "bf7e6348-5909-49a4-a997-ed600d1e7494",
  "matches": [
    {
      "listType": "SANCTIONS",
      "listName": "AUTHENICA_TEST_SANCTIONS",
      "listVersion": "a0a0a0a0-0000-4000-8000-000000000001",
      "targetLabel": "NANDRAWELL HOLDING SARL",
      "score": 1.0,
      "confidence": "UNCORROBORATED",
      "evidence": [],
      "details": {
        "entityType": "LEGAL_ENTITY",
        "list": {
          "label": "Liste d'essai fictive : sanctions",
          "publisher": "Authenica"
        },
        "sanctionPrograms": [
          "TEST-FICTIF"
        ],
        "title": "Société fictive de la liste d'essai",
        "description": "Fiche fictive pour tester l'intégration. Aucune société réelle.",
        "nationalities": [],
        "datesOfBirth": [],
        "placesOfBirth": []
      }
    }
  ],
  "ignoredFields": []
}

Como a ler

  • entityType em LEGAL_ENTITY : apenas as empresas são pesquisadas.
  • evidence está vazio: uma empresa não tem data nem local de nascimento nem nacionalidade a comparar; apenas o nome é comparado.
A não fazer. Estes registos servem para testar, nunca para decidir. Um nome da lista de ensaio indica em listName a menção AUTHENICA_TEST_SANCTIONS ou AUTHENICA_TEST_PPE : pode excluí-los das suas decisões filtrando por este nome.

Filtrar a pesquisa

Dois filtros, que se combinam. Um filtro ausente não filtra nada.

# Seulement les personnes politiquement exposées
-d '{"fullName":"Kassim Dromvale","scoreThreshold":0.85,"listTypes":["PPE"]}'

# Seulement les sociétés, dans les listes de sanctions
-d '{"fullName":"Société Exemple SARL","scoreThreshold":0.85,"entityType":"LEGAL_ENTITY","listTypes":["SANCTIONS"]}'

# Avec la date de naissance et la nationalité, pour corroborer
-d '{"fullName":"Zorbek Nandrawell","scoreThreshold":0.85,"corroboratedThreshold":0.70,"dateOfBirth":"1975-06-15","nationality":"ML"}'

Um tipo desconhecido (por exemplo "entityType":"NAVIRE") é recusado com um erro 400.

Listar as fontes

GET /api/v1/lists/sources

Uma entrada por lista: code (o que encontra em listName), label (o seu nome legível), publisher (o emissor), listType, lastBatchId (o último lote carregado, o que encontra em listVersion), lastLoadedAt (a data do carregamento), status e entityCount (o número de registos). Nenhum dado pessoal.

curl https://api.authenica.tech/api/v1/lists/sources -H "X-Api-Key: $AUTHENICA_CLE_API"

Ler e controlar um documento de identidade

Para além das listas, a Authenica lê um documento de identidade a partir da sua fotografia: bilhete de identidade, passaporte, carta de condução, autorização de residência. O serviço devolve os campos lidos, o modelo de documento reconhecido e os controlos efetuados (validade, autenticidade, qualidade da imagem, coerência da zona de leitura ótica). Pode assim preencher previamente o seu formulário de entrada em relação e saber se o documento merece confiança.

O serviço não conserva nada. Recebe as imagens, lê-as, devolve o resultado e esquece. Nenhuma imagem e nenhum valor lido são guardados. O que conserva é decisão sua.

O que envia

POST /api/v1/document-readings, em multipart/form-data, com a sua chave em X-Api-Key como para as listas.

CampoDocumentosEm termos simples
front e backBilhete de identidade, carta de condução, autorização de residênciaA frente e o verso, em duas imagens. A frente sozinha é aceite; o verso sozinho é recusado.
singlePagePassaporte ou documento de página únicaUma única imagem. Não se combina com front e back.

Imagens JPEG ou PNG, no máximo 5 MB cada. O conteúdo é verificado: um ficheiro renomeado em .jpg que não seja uma imagem é recusado.

curl -X POST https://api.authenica.tech/api/v1/document-readings \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -F "front=@recto.jpg;type=image/jpeg" \
  -F "back=@verso.jpg;type=image/jpeg"

O que recebe

CampoEm termos simples
documentNameO modelo de documento reconhecido, por exemplo «Costa do Marfim, bilhete de identidade 2020». Vazio se o modelo não for reconhecido.
fieldsOs campos de identidade lidos: apelido, nomes próprios, data e local de nascimento, sexo, nacionalidade, país emissor, número do documento, datas de emissão e de validade, número pessoal, profissão, altura. Cada um indica o seu value, o seu confidence de 0 a 100, a sua source (zona de leitura ótica ou leitura visual) e a sua validity.
otherFieldsQualquer outro campo publicado pelo documento: nada do que diz se perde.
authenticityOs controlos: overall, documentType, security, expiry, imageQuality, mrz, cada um OK, ERROR ou NOT_PERFORMED. securityChecks indica o número de controlos de segurança bem-sucedidos, falhados e não efetuados.
expiredtrue se o documento estiver expirado, false caso contrário.
warningsOs pontos de atenção, explicados abaixo.
Nacionalidade e país. São devolvidos tal como constam do documento, muitas vezes em três letras (CIV). Cabe-lhe convertê-los para o código de duas letras do seu próprio formulário.

Os alertas

CódigoEm termos simples
DOCUMENT_EXPIREDO documento está expirado.
DOCUMENT_TYPE_NOT_RECOGNISEDO modelo do documento não é reconhecido: os controlos de autenticidade não puderam ser feitos.
AUTHENTICITY_FAILEDUm controlo de autenticidade falhou: examine o documento com atenção.
AUTHENTICITY_PARTIALAlguns controlos não puderam ser efetuados com esta fotografia (por exemplo os que exigem uma iluminação especial), mas nenhum falhou. Não é um alerta.
AUTHENTICITY_NOT_PERFORMEDOs controlos de autenticidade não puderam ser feitos neste documento.
LOW_IMAGE_QUALITYA imagem é de má qualidade: repetir a fotografia pode melhorar a leitura.
MRZ_CHECK_FAILEDA zona de leitura ótica é incoerente: verifique o número do documento e as datas.
SOURCES_DISAGREEDuas zonas do documento dão valores diferentes para pelo menos um campo.
MISSING_FIELDSAlguns campos de identidade não puderam ser lidos: a introduzir manualmente.

Um ensaio real com um documento fictício

Eis a resposta real da API para uma imagem de passaporte gerada para o ensaio : não é autêntica e contém apenas dados inventados. O serviço lê os campos, mas assinala que o modelo não é reconhecido e que os controlos de autenticidade não puderam ser efetuados, exatamente o que deve fazer. Para um documento autêntico de um modelo conhecido, o modelo é identificado e os controlos de segurança são efetuados e contabilizados em securityChecks.

Pedido

curl -X POST https://api.authenica.tech/api/v1/document-readings \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -F "singlePage=@passeport-fictif.png;type=image/png"

Resposta real da API (abreviada)

{
  "requestId": "c6f82bd1-898a-45de-bcbf-95925b156d48",
  "documentName": null,
  "fields": {
    "LAST_NAME": {
      "value": "KONE",
      "confidence": 78,
      "source": "MRZ",
      "validity": "NOT_PERFORMED",
      "consistent": true
    },
    "GIVEN_NAMES": {
      "value": "AMINATA",
      "confidence": 82,
      "source": "MRZ",
      "validity": "NOT_PERFORMED",
      "consistent": true
    },
    "DATE_OF_BIRTH": {
      "value": "1990-04-12",
      "confidence": 34,
      "source": "MRZ",
      "validity": "ERROR",
      "consistent": true
    },
    "NATIONALITY": {
      "value": "CIV",
      "confidence": 97,
      "source": "MRZ",
      "validity": "OK",
      "consistent": true
    },
    "DOCUMENT_NUMBER": {
      "value": "XXI2345G7",
      "confidence": 34,
      "source": "MRZ",
      "validity": "ERROR",
      "consistent": true
    },
    "EXPIRY_DATE": {
      "value": "2031-01-01",
      "confidence": 29,
      "source": "MRZ",
      "validity": "OK",
      "consistent": true
    }
  },
  "otherFields": {
    "MRZ Type": {
      "value": "ID-3",
      "confidence": 100,
      "source": "MRZ",
      "validity": "NOT_PERFORMED",
      "consistent": true
    },
    "Issuing State Name": {
      "value": "Cote d'Ivoire",
      "confidence": 0,
      "source": "MRZ",
      "validity": "OK",
      "consistent": true
    }
  },
  "authenticity": {
    "overall": "ERROR",
    "documentType": "ERROR",
    "security": "NOT_PERFORMED",
    "expiry": "OK",
    "imageQuality": "ERROR",
    "mrz": "ERROR",
    "securityChecks": null
  },
  "expired": false,
  "warnings": [
    "DOCUMENT_TYPE_NOT_RECOGNISED",
    "AUTHENTICITY_NOT_PERFORMED",
    "LOW_IMAGE_QUALITY",
    "MRZ_CHECK_FAILED"
  ]
}

Os erros

CódigoQuandoO que fazer
400 INVALID_IMAGESImagem ausente, tipo não aceite, conteúdo que não corresponde ao tipo, ou singlePage combinado com front ou back.Corrija o envio.
401Chave ausente, desconhecida, revogada ou expirada.Verifique a chave.
413Imagem demasiado pesada.Reduza-a para menos de 5 MB.
422 DOCUMENT_UNREADABLENão foi possível encontrar nenhum documento na imagem.Repita a fotografia: documento inteiro, bem iluminado, plano.
429Demasiadas chamadas no minuto.Aguarde o prazo do cabeçalho Retry-After.
503 DOCUMENT_READER_UNAVAILABLEO serviço de leitura está temporariamente indisponível.Tente novamente, ou deixe introduzir manualmente. O serviço nunca inventa uma leitura.
Uma chave de duração limitada. A sua chave pode ter uma data de expiração: passada essa data, é recusada como uma chave desconhecida. Peça a sua renovação antes do prazo.

Os erros

Todos os erros têm a mesma forma: {"code": "...", "message": "...", "requestId": "..."}. A mensagem nunca reproduz o que enviou.

HTTPCódigoEm termos simplesO que fazer
400INVALID_REQUESTO pedido está incorreto: nome vazio, limiar fora de 0 a 1, tipo desconhecido, corpo ilegível.Corrigir o pedido.
401API_KEY_REFUSEDChave ausente, desconhecida, revogada ou expirada.Verificar a chave, ou escrever-nos se tiver sido revogada.
429RATE_LIMITEDUltrapassou a sua quota por minuto. O cabeçalho Retry-After indica quantos segundos aguardar.Aguardar e tentar novamente; espaçar as chamadas.
503REFERENTIEL_UNAVAILABLE ou GATEWAY_UNAVAILABLEO serviço está temporariamente indisponível.Tentar novamente. Nunca tratar um 503 como «nenhuma correspondência».
500INTERNAL_ERRORErro inesperado do nosso lado.Tentar novamente; indicar o requestId ao nosso suporte.
A regra de ouro: a recusa por defeito. Se a chamada falhar ou exceder o prazo, o seu processo deve suspender a operação (abertura de conta, transferência...) e não deixá-la passar. Preveja um prazo de espera de alguns segundos e um número limitado de novas tentativas.

Exemplos de código

Em cada exemplo, a chave vem de uma variável de ambiente e a falha suspende a operação.

import os, requests

reponse = requests.post(
    "https://api.authenica.tech/api/v1/screenings",
    headers={"X-Api-Key": os.environ["AUTHENICA_CLE_API"]},
    json={"fullName": "Zorbek Nandrawell", "scoreThreshold": 0.85, "listTypes": ["SANCTIONS"]},
    timeout=10,
)
if reponse.status_code != 200:
    raise RuntimeError(f"Criblage impossible ({reponse.status_code}) : suspendre l'opération")
for fiche in reponse.json()["matches"]:
    print(fiche["listName"], fiche["listVersion"], fiche["score"], fiche["confidence"])
// Node.js 18 ou plus
const reponse = await fetch("https://api.authenica.tech/api/v1/screenings", {
  method: "POST",
  headers: { "X-Api-Key": process.env.AUTHENICA_CLE_API, "Content-Type": "application/json" },
  body: JSON.stringify({ fullName: "Zorbek Nandrawell", scoreThreshold: 0.85 }),
  signal: AbortSignal.timeout(10_000),
});
if (!reponse.ok) throw new Error(`Criblage impossible (${reponse.status}) : suspendre l'opération`);
const { matches, requestId } = await reponse.json();
// Java 11 ou plus
HttpRequest requete = HttpRequest.newBuilder(URI.create("https://api.authenica.tech/api/v1/screenings"))
    .timeout(Duration.ofSeconds(10))
    .header("X-Api-Key", System.getenv("AUTHENICA_CLE_API"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("{\"fullName\":\"Zorbek Nandrawell\",\"scoreThreshold\":0.85}"))
    .build();
HttpResponse<String> reponse = HttpClient.newHttpClient().send(requete, HttpResponse.BodyHandlers.ofString());
if (reponse.statusCode() != 200) throw new IllegalStateException("Criblage impossible : suspendre l'opération");
curl -X POST https://api.authenica.tech/api/v1/screenings \
  --max-time 10 --fail-with-body \
  -H "X-Api-Key: $AUTHENICA_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Zorbek Nandrawell","scoreThreshold":0.85}'

Contrato OpenAPI

O contrato da API está publicado em https://api.authenica.tech/v3/api-docs. Pode importá-lo para o Postman ou o Insomnia, ou gerar um cliente com uma ferramenta como o OpenAPI Generator.

Boas práticas

  • Conserve o requestId e a listVersion com a sua decisão: é a sua prova em caso de inspeção.
  • Não registe os nomes pesquisados nem a chave. A Authenica também não os guarda: pesquisa, não armazena.
  • Um resultado não é uma decisão: uma pessoa examina cada correspondência.
  • As listas são recarregadas automaticamente. A data do último carregamento de cada lista está na lista das fontes.
  • Defina um prazo de espera para cada chamada e decida antecipadamente o que o seu processo faz se o serviço não responder: suspende.

Planos

Brevemente disponíveis

Estamos a preparar planos de acesso adaptados ao volume de chamadas de cada instituição, em FCFA. Serão publicados brevemente nesta página.

Entretanto, peça um acesso de avaliação: será informado da sua abertura.

Pedir um acesso de avaliação

Contacte-nos

Uma demonstração, um acesso de avaliação, uma questão comercial: o formulário de contacto.

Uma chave a alterar ou revogar, uma questão de integração, um incidente: it@authenica.tech. Indique o requestId da chamada em causa quando o tiver.