Sobre esta API
Analisa a foto de cada parte do veículo — frente, traseira, laterais, para-brisa, faróis, lanternas, retrovisores, chassi ou painel — e devolve a descrição do que foi visto, um score de 0 a 100 e o parecer approval ou rejected.
Envie a foto em image, a parte em image_type, o tipo do veículo e a placa. Na foto do chassi, só o número gravado na estrutura aprova — etiqueta, plaqueta, vidro e número do motor são rejeitados —, chassi_lido traz o número lido e, com chassi_esperado, chassi_confere diz se a foto mostra o chassi do documento — null quando a gravação não permite afirmar.
É um parecer sobre a foto: não substitui laudo de vistoriador credenciado.
Visão computacional · Atualização: tempo real
Requisição
POST /api/v1/oracle/vehicle/inspectAutenticaçã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 |
|---|---|---|
imageObrigatório | filefile | Foto da parte do veículo. |
image_typeObrigatório | stringquery | Que parte do veículo a foto mostra. Exemplo: |
vehicle_typeObrigatório | stringquery | Tipo do veículo. Exemplo: |
plateObrigatório | stringquery | Placa do veículo. Exemplo: |
vehicle_modelOpcional | stringquery | Modelo do veículo. Exemplo: |
vehicle_colorOpcional | stringquery | Cor do veículo. Exemplo: |
chassi_esperadoOpcional | stringquery | Só para a foto do chassi: o chassi do documento, com 17 caracteres. A resposta diz em chassi_confere se a foto mostra esse número.Exemplo: |
curl --request POST 'https://api.apifordevs.com/api/v1/oracle/vehicle/inspect?image_type=vehicle_front_evidence&vehicle_type=car&plate=ABC1D23&vehicle_model=HB20&vehicle_color=prata&chassi_esperado=9BD118181B1124442' \
--user "afd_live_pk_...:$AFD_SECRET_KEY" \
--header "X-Project-Id: $AFD_PROJECT_ID" \
--form 'image=@./image.jpg'
import os
import requests
image = open("./image.jpg", "rb")
response = requests.request(
"POST",
"https://api.apifordevs.com/api/v1/oracle/vehicle/inspect?image_type=vehicle_front_evidence&vehicle_type=car&plate=ABC1D23&vehicle_model=HB20&vehicle_color=prata&chassi_esperado=9BD118181B1124442",
auth=("afd_live_pk_...", os.environ["AFD_SECRET_KEY"]),
headers={"X-Project-Id": os.environ["AFD_PROJECT_ID"]},
files={"image": image},
timeout=30,
)
response.raise_for_status()
print(response.json())
image.close()
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("image", new Blob([await readFile("./image.jpg")]), "image.jpg");
const response = await fetch("https://api.apifordevs.com/api/v1/oracle/vehicle/inspect?image_type=vehicle_front_evidence&vehicle_type=car&plate=ABC1D23&vehicle_model=HB20&vehicle_color=prata&chassi_esperado=9BD118181B1124442", {
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.
- Descrição
descricaostring - Score
scoreinteger - Parecer
statusstring - Origem do número do chassi
chassi_origemstring - Só em
vehicle_chassi_evidence: onde está o número. Sógravado_na_estruturaaprova; etiqueta, plaqueta, vidro e número do motor são rejeitados. - Chassi lido
chassi_lidostring - Só em
vehicle_chassi_evidence: o número lido sem conhecer o esperado, em maiúsculas e sem espaços (o VIN tem 17 caracteres). Em gravação difícil sai incompleto; quem confere échassi_confere. Comchassi_esperado, sai sem o delimitador gravado nas pontas (asterisco, estrela, losango, triângulo, X) quando ele foi lido como caractere. - Confere com o chassi esperado
chassi_confereboolean - Só com
chassi_esperado:truese a foto mostra esse número e não outro da mesma série,falsese mostra outro número (e a foto é rejeitada),nullse não dá para afirmar — número ilegível, ou sem número esperado.
Exemplo de resposta
{
"success": true,
"code": 200,
"code_message": "A requisição foi processada com sucesso.",
"errors": [],
"header": null,
"data_count": 1,
"data": [
{
"descricao": "Número do chassi gravado no assoalho, sob o carpete, em duas linhas entre estrelas; caracteres legíveis, com espaçamento e profundidade uniformes, sem sinais de regravação.",
"score": 90,
"status": "approval",
"chassi_origem": "gravado_na_estrutura",
"chassi_lido": "9BD358A1NLY123456",
"chassi_confere": null
}
]
}
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
Vistoria de seguro sem visita
O segurado fotografa o carro pelo celular e a análise das partes sai na hora, sem agendar vistoriador.
Locação — check-in e check-out
Registrar o estado do veículo na entrega e na devolução, com score comparável entre os dois momentos.