Sobre esta API
Lê os dois lados do RG — ou a CNH — numa chamada só e devolve o nome do titular, a filiação e a naturalidade.
Informe document_type e envie a CNH em document_front; o RG vai em document_front e document_back, e a ordem das imagens não importa.
Para CPF, número do documento, datas e órgão expedidor, use a Leitura de documentos.
OCR com visão computacional · Atualização: tempo real
Requisição
POST /api/v1/oracle/document/identifyAutenticação HTTP Basic: public_key:secret_key em Base64. Guarde a chave secreta no servidor.
| Cabeçalho | Descrição |
|---|---|
AuthorizationObrigatório | Chave de API em Basic: public_key:secret_key em Base64. |
X-Project-IdOpcional | Projeto que recebe a chamada. Sem ele, vale o projeto padrão da conta. |
Idempotency-KeyOpcional | Repetir a mesma chave em até 24 horas devolve a resposta anterior, sem executar nem cobrar de novo. |
Parâmetros
| Campo | Tipo e local | Descrição |
|---|---|---|
document_frontObrigatório | filefile | CNH, ou a frente do RG. |
document_backOpcional | filefile | Verso do RG. Obrigatório quando o tipo é RG. |
document_typeObrigatório | stringquery | Tipo do documento enviado. Exemplo: |
curl --request POST 'https://api.apifordevs.com/api/v1/oracle/document/identify?document_type=CNH' \
--user "afd_live_pk_...:$AFD_SECRET_KEY" \
--header "X-Project-Id: $AFD_PROJECT_ID" \
--form 'document_front=@./document_front.jpg'
import os
import requests
document_front = open("./document_front.jpg", "rb")
response = requests.request(
"POST",
"https://api.apifordevs.com/api/v1/oracle/document/identify?document_type=CNH",
auth=("afd_live_pk_...", os.environ["AFD_SECRET_KEY"]),
headers={"X-Project-Id": os.environ["AFD_PROJECT_ID"]},
files={"document_front": document_front},
timeout=30,
)
response.raise_for_status()
print(response.json())
document_front.close()
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("document_front", new Blob([await readFile("./document_front.jpg")]), "document_front.jpg");
const response = await fetch("https://api.apifordevs.com/api/v1/oracle/document/identify?document_type=CNH", {
method: "POST",
headers: {
Authorization: "Basic " + Buffer.from(
"afd_live_pk_...:" + process.env.AFD_SECRET_KEY
).toString("base64"),
"X-Project-Id": process.env.AFD_PROJECT_ID,
},
body: form,
signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
Campos de resposta
Campos e tipos publicados no catálogo desta API.
- Tipo solicitado
requested_document_typestring - Tipo identificado
document_typestring - Arquivo (frente)
filenamestring - Arquivo (verso)
filename_2string - Campos extraídos
analysis_resultobject - Documento reconhecido
analysis_result.is_validboolean - Nome
analysis_result.nomestring - Filiação 1
analysis_result.filiacao1string - Filiação 2
analysis_result.filiacao2string - Cidade de nascimento
analysis_result.birth_citystring - UF
analysis_result.ufstring
Exemplo de resposta
{
"success": true,
"code": 200,
"code_message": "A requisição foi processada com sucesso.",
"errors": [],
"header": null,
"data_count": 1,
"data": [
{
"requested_document_type": "RG-FRONT",
"document_type": "RG-TOTAL",
"filename": "rg-frente.jpg",
"filename_2": "rg-verso.jpg",
"analysis_result": {
"is_valid": true,
"nome": "FULANO DE TAL DA SILVA",
"filiacao1": "JOSE DE TAL DA SILVA",
"filiacao2": "MARIA DE TAL DA SILVA",
"birth_city": "SAO PAULO",
"uf": "SP"
}
}
]
}
Respostas e cobrança
| HTTP | Descrição | Cobrança |
|---|---|---|
200 | Sucesso. | Sujeita à cobrança |
400
| Arquivo ou parâmetro que a rota não consegue processar, projeto inválido, ou dev_mode=true com chave de produção. | Sem cobrança |
401
| Credencial ausente, inválida ou revogada. | Sem cobrança |
402
| Saldo insuficiente ou limite de gasto diário atingido. | Sem cobrança |
403
| E-mail da conta não verificado, chave sem escopo para o serviço, IP fora da allowlist do projeto ou chave de teste sem dev_mode=true. | Sem cobrança |
409
| Requisição com a mesma Idempotency-Key ainda em andamento. | Sem cobrança |
413
| Arquivo acima de 20 MB. | Sem cobrança |
422
| Parâmetro obrigatório ausente ou fora do formato, ou Idempotency-Key repetida com outro conteúdo. | Sem cobrança |
429
| Limite de requisições por minuto da chave atingido. | Sem cobrança |
500
| Falha interna. | Sem cobrança |
503
| Serviço desativado ou temporariamente indisponível. | Sem cobrança |
Casos de uso
KYC com RG
Ler os dois lados do RG numa chamada só, com a orientação conferida — o usuário fotografa na ordem que quiser.
Identificação no onboarding
Confirmar nome e filiação do titular no primeiro passo do cadastro, antes da comparação facial.