Como funciona
O seu sistemaAbertura de conta, transferência, revisão periódica
Pedido
API AuthenicaChave de API, quota, registo da chamada
Pesquisa
Listas consolidadasSanções e PPE, recarregadas regularmente
Resposta: os registos encontrados, com a lista e a versão da lista
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ódigo | Lista | Emissor | Tipo | Situação |
UN_CONSOLIDATED | Lista consolidada do Conselho de Segurança | Nações Unidas | Sanções | Servida |
OFAC_SDN | Lista de nacionais especialmente designados (SDN) | Departamento do Tesouro dos Estados Unidos (OFAC) | Sanções | Servida |
OFAC_CONSOLIDATED | Lista consolidada não SDN | Departamento do Tesouro dos Estados Unidos (OFAC) | Sanções | Servida |
EU_FSF | Lista consolidada de sanções financeiras | Comissão Europeia | Sanções | Servida |
UK_SANCTIONS_LIST | Lista de sanções do Reino Unido | Foreign, Commonwealth and Development Office | Sanções | Servida |
SECO_SWISS_SANCTIONS | Lista suíça de sanções | Secretaria de Estado da Economia (SECO) | Sanções | Servida |
CANADA_SEMA | Lista canadiana de sanções (SEMA) | Assuntos Globais Canadá | Sanções | Servida |
CENTIF_CI_1373 | Lista nacional, resolução 1373 | CENTIF da Costa do Marfim | Sanções | Servida |
CI_GOVERNMENT | Composição do Governo da Costa do Marfim | Gabinete do Primeiro-Ministro da Costa do Marfim | PPE | Servida |
UEMOA_PPE | Pessoas politicamente expostas da UEMOA | Authenica, a partir de fontes públicas | PPE | Servida |
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.
| Estado | Emissor | Código | Situação |
| Benim | CENTIF do Benim | — | Em integração |
| Burkina Faso | CENTIF do Burkina Faso | — | Em integração |
| Costa do Marfim | CENTIF da Costa do Marfim | CENTIF_CI_1373 | Servida |
| Guiné-Bissau | CENTIF da Guiné-Bissau | — | Em integração |
| Mali | CENTIF do Mali | — | Em integração |
| Níger | CENTIF do Níger | — | Em integração |
| Sénégal | CENTIF do Senegal | — | Em integração |
| Togo | CENTIF 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
- Obtenha uma chaveFaça o pedido online: criamos o seu acesso e entregamos-lhe a chave.
- Chame a APIUma chamada
POST com o nome pesquisado e a sua chave.
- 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.
| Termo | Em termos simples |
| Triagem | Procurar uma pessoa ou uma empresa nas listas oficiais de sanções e de pessoas politicamente expostas. |
| PPE | Pessoa politicamente exposta: alguém que exerce ou exerceu uma função pública importante. |
| Chave de API | Uma palavra-passe longa, própria da sua organização, que prova que a chamada vem de si. |
| Quota | O número de chamadas autorizadas por minuto para o seu acesso. |
Obter a sua chave
- 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.
- 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.
- 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
| Campo | Descrição | Em termos simples |
fullName OBRIGATÓRIO | Nome completo pesquisado, no máximo 300 caracteres | Os nomes próprios e depois o apelido, como no documento de identidade. |
scoreThreshold OBRIGATÓRIO | Número de 0 a 1 | Limiar de semelhança acima do qual um registo é devolvido. É a sua política de conformidade que o define, não a Authenica. |
corroboratedThreshold | Número de 0 a 1, inferior ao anterior | Segundo limiar, válido apenas se a data de nascimento coincidir: uma variante de escrita pontua menos mas designa a mesma pessoa. |
entityType | NATURAL_PERSON ou LEGAL_ENTITY | Procurar apenas pessoas singulares, ou apenas empresas. Ausente: todos. |
listTypes | Lista de SANCTIONS, PPE, LOCAL | Procurar apenas nestes tipos de listas. Ausente ou vazio: todos. |
dateOfBirth | Data AAAA-MM-JJ | Serve para confirmar ou contradizer um registo. |
nationality | Código de país de duas letras (CI, SN, ML...) | Idem. |
placeOfBirth | Texto livre | Idem. |
documentNumber | Número do documento de identidade | Reservado. Aceite apenas se o seu acesso o permitir; caso contrário é ignorado e a resposta indica-o em ignoredFields. |
reference | Texto | O 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": []
}
| Campo | Em termos simples |
requestId | O 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. |
matches | Os registos encontrados, do mais semelhante ao menos semelhante. Vazio: nenhum registo ultrapassa o seu limiar. |
listType | SANCTIONS : lista de sanções, bloqueante. PPE : pessoas politicamente expostas. LOCAL : lista local. |
listName | O código da lista de origem, por exemplo OFAC_SDN, UN_CONSOLIDATED, EU_FSF, UEMOA_PPE. A lista completa está em «Listar as fontes». |
listVersion | O lote da lista que produziu o registo. Guarde-o: prova em que versão da lista a pessoa figurava. |
targetLabel | O nome do registo encontrado. |
score | A semelhança entre o nome pesquisado e o registo, de 0 a 1. |
confidence | Em que medida os outros elementos confirmam a correspondência (ver abaixo). |
evidence | O detalhe da comparação, elemento a elemento, para uma pessoa. Para uma empresa está vazio: apenas o nome é comparado. |
details | O que diz o registo encontrado, para compreender sem abrir a lista (ver «O detalhe do registo»). |
ignoredFields | Os 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.
| Valor | O que significa |
CORROBORATED | Pelo menos um elemento coincide (data de nascimento, nacionalidade...) e nenhum contradiz fortemente. |
MIXED | Alguns elementos coincidem e outros contradizem: um juízo humano é indispensável. |
UNCORROBORATED | Nada permite confirmar nem infirmar, porque faltam dados de um lado ou do outro. |
LIKELY_HOMONYM | Nenhum 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.
| Campo | Em termos simples |
entityType | NATURAL_PERSON : uma pessoa singular. LEGAL_ENTITY : uma empresa. |
list | O nome legível da lista (label) e o seu emissor (publisher). |
sanctionPrograms | Os 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. |
title | A função publicada, por exemplo «Presidente da República» ou «Presidente da Câmara de Niéllé». É ela que distingue dois homónimos. |
description | O texto que a lista publica sobre o registo, truncado a 600 caracteres. Ausente quando a função o substitui. |
nationalities, datesOfBirth, placesOfBirth | O 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.
| Campo | Documentos | Em termos simples |
front e back | Bilhete de identidade, carta de condução, autorização de residência | A frente e o verso, em duas imagens. A frente sozinha é aceite; o verso sozinho é recusado. |
singlePage | Passaporte ou documento de página única | Uma ú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
| Campo | Em termos simples |
documentName | O modelo de documento reconhecido, por exemplo «Costa do Marfim, bilhete de identidade 2020». Vazio se o modelo não for reconhecido. |
fields | Os 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. |
otherFields | Qualquer outro campo publicado pelo documento: nada do que diz se perde. |
authenticity | Os 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. |
expired | true se o documento estiver expirado, false caso contrário. |
warnings | Os 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ódigo | Em termos simples |
DOCUMENT_EXPIRED | O documento está expirado. |
DOCUMENT_TYPE_NOT_RECOGNISED | O modelo do documento não é reconhecido: os controlos de autenticidade não puderam ser feitos. |
AUTHENTICITY_FAILED | Um controlo de autenticidade falhou: examine o documento com atenção. |
AUTHENTICITY_PARTIAL | Alguns 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_PERFORMED | Os controlos de autenticidade não puderam ser feitos neste documento. |
LOW_IMAGE_QUALITY | A imagem é de má qualidade: repetir a fotografia pode melhorar a leitura. |
MRZ_CHECK_FAILED | A zona de leitura ótica é incoerente: verifique o número do documento e as datas. |
SOURCES_DISAGREE | Duas zonas do documento dão valores diferentes para pelo menos um campo. |
MISSING_FIELDS | Alguns 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ódigo | Quando | O que fazer |
400 INVALID_IMAGES | Imagem ausente, tipo não aceite, conteúdo que não corresponde ao tipo, ou singlePage combinado com front ou back. | Corrija o envio. |
401 | Chave ausente, desconhecida, revogada ou expirada. | Verifique a chave. |
413 | Imagem demasiado pesada. | Reduza-a para menos de 5 MB. |
422 DOCUMENT_UNREADABLE | Não foi possível encontrar nenhum documento na imagem. | Repita a fotografia: documento inteiro, bem iluminado, plano. |
429 | Demasiadas chamadas no minuto. | Aguarde o prazo do cabeçalho Retry-After. |
503 DOCUMENT_READER_UNAVAILABLE | O 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.
| HTTP | Código | Em termos simples | O que fazer |
| 400 | INVALID_REQUEST | O pedido está incorreto: nome vazio, limiar fora de 0 a 1, tipo desconhecido, corpo ilegível. | Corrigir o pedido. |
| 401 | API_KEY_REFUSED | Chave ausente, desconhecida, revogada ou expirada. | Verificar a chave, ou escrever-nos se tiver sido revogada. |
| 429 | RATE_LIMITED | Ultrapassou a sua quota por minuto. O cabeçalho Retry-After indica quantos segundos aguardar. | Aguardar e tentar novamente; espaçar as chamadas. |
| 503 | REFERENTIEL_UNAVAILABLE ou GATEWAY_UNAVAILABLE | O serviço está temporariamente indisponível. | Tentar novamente. Nunca tratar um 503 como «nenhuma correspondência». |
| 500 | INTERNAL_ERROR | Erro 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.