Busca por placa
curl --request POST \
--url https://api.lazydata.com.br/v1/search/vehicle \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"plate": "<string>",
"datasets": [
"<string>"
],
"additional": {},
"mode": "<string>"
}
'import requests
url = "https://api.lazydata.com.br/v1/search/vehicle"
payload = {
"plate": "<string>",
"datasets": ["<string>"],
"additional": {},
"mode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({plate: '<string>', datasets: ['<string>'], additional: {}, mode: '<string>'})
};
fetch('https://api.lazydata.com.br/v1/search/vehicle', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lazydata.com.br/v1/search/vehicle",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'plate' => '<string>',
'datasets' => [
'<string>'
],
'additional' => [
],
'mode' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lazydata.com.br/v1/search/vehicle"
payload := strings.NewReader("{\n \"plate\": \"<string>\",\n \"datasets\": [\n \"<string>\"\n ],\n \"additional\": {},\n \"mode\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.lazydata.com.br/v1/search/vehicle")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"plate\": \"<string>\",\n \"datasets\": [\n \"<string>\"\n ],\n \"additional\": {},\n \"mode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lazydata.com.br/v1/search/vehicle")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plate\": \"<string>\",\n \"datasets\": [\n \"<string>\"\n ],\n \"additional\": {},\n \"mode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"message": "Consulta realizada com sucesso.",
"result": {
"id": "9fcb573b-7f62-4774-978b-07e89dfef5f2",
"status": "completed",
"target": "vehicle",
"query": {
"plate": "ABC0A00",
"datasets": ["vehicle_basic_data"],
"additional": {}
},
"cost": {
"total": 0.12,
"refunded": 0,
"datasets": {
"vehicle_basic_data": {
"charged": 0.12,
"refunded": 0
}
}
},
"timing": {
"total": 1.84,
"datasets": {
"vehicle_basic_data": 1.84
}
},
"errors": {},
"datasets_status": {
"vehicle_basic_data": "completed"
},
"result": {
"vehicle_basic_data": {
"plate": "ABC0A00",
"state": "SP",
"city": "São Paulo",
"brand": "MARCA EXEMPLO",
"model": "MODELO EXEMPLO",
"manufacture_year": "2020",
"model_year": "2021",
"fuel": "FLEX",
"color": "PRATA",
"vehicle_type": "AUTOMÓVEL",
"status": "EM CIRCULACAO"
}
},
"created_at": "2026-06-22T12:00:00Z",
"last_updated_at": "2026-06-22T12:00:02Z"
}
}
{
"code": 202,
"message": "Consulta iniciada com sucesso.",
"result": {
"id": "9fcb573b-7f62-4774-978b-07e89dfef5f2",
"status": "queued",
"status_values": ["queued", "processing", "completed", "failed"],
"datasets": ["vehicle_basic_data"]
}
}
{
"code": 400,
"message": "Um ou mais parâmetros informados são inválidos."
}
{
"code": 401,
"message": "Credencial da API inválida."
}
{
"code": 403,
"message": "A credencial da API não possui permissão para este recurso."
}
Veículos
Busca por placa
Execute consultas veiculares por placa nos datasets selecionados.
POST
https://api.lazydata.com.br/
/
v1
/
search
/
vehicle
Busca por placa
curl --request POST \
--url https://api.lazydata.com.br/v1/search/vehicle \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"plate": "<string>",
"datasets": [
"<string>"
],
"additional": {},
"mode": "<string>"
}
'import requests
url = "https://api.lazydata.com.br/v1/search/vehicle"
payload = {
"plate": "<string>",
"datasets": ["<string>"],
"additional": {},
"mode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({plate: '<string>', datasets: ['<string>'], additional: {}, mode: '<string>'})
};
fetch('https://api.lazydata.com.br/v1/search/vehicle', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lazydata.com.br/v1/search/vehicle",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'plate' => '<string>',
'datasets' => [
'<string>'
],
'additional' => [
],
'mode' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lazydata.com.br/v1/search/vehicle"
payload := strings.NewReader("{\n \"plate\": \"<string>\",\n \"datasets\": [\n \"<string>\"\n ],\n \"additional\": {},\n \"mode\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.lazydata.com.br/v1/search/vehicle")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"plate\": \"<string>\",\n \"datasets\": [\n \"<string>\"\n ],\n \"additional\": {},\n \"mode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lazydata.com.br/v1/search/vehicle")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plate\": \"<string>\",\n \"datasets\": [\n \"<string>\"\n ],\n \"additional\": {},\n \"mode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"message": "Consulta realizada com sucesso.",
"result": {
"id": "9fcb573b-7f62-4774-978b-07e89dfef5f2",
"status": "completed",
"target": "vehicle",
"query": {
"plate": "ABC0A00",
"datasets": ["vehicle_basic_data"],
"additional": {}
},
"cost": {
"total": 0.12,
"refunded": 0,
"datasets": {
"vehicle_basic_data": {
"charged": 0.12,
"refunded": 0
}
}
},
"timing": {
"total": 1.84,
"datasets": {
"vehicle_basic_data": 1.84
}
},
"errors": {},
"datasets_status": {
"vehicle_basic_data": "completed"
},
"result": {
"vehicle_basic_data": {
"plate": "ABC0A00",
"state": "SP",
"city": "São Paulo",
"brand": "MARCA EXEMPLO",
"model": "MODELO EXEMPLO",
"manufacture_year": "2020",
"model_year": "2021",
"fuel": "FLEX",
"color": "PRATA",
"vehicle_type": "AUTOMÓVEL",
"status": "EM CIRCULACAO"
}
},
"created_at": "2026-06-22T12:00:00Z",
"last_updated_at": "2026-06-22T12:00:02Z"
}
}
{
"code": 202,
"message": "Consulta iniciada com sucesso.",
"result": {
"id": "9fcb573b-7f62-4774-978b-07e89dfef5f2",
"status": "queued",
"status_values": ["queued", "processing", "completed", "failed"],
"datasets": ["vehicle_basic_data"]
}
}
{
"code": 400,
"message": "Um ou mais parâmetros informados são inválidos."
}
{
"code": 401,
"message": "Credencial da API inválida."
}
{
"code": 403,
"message": "A credencial da API não possui permissão para este recurso."
}
Executa uma consulta veicular usando a placa informada e os datasets selecionados.
A consulta aceita placas no formato antigo e no padrão Mercosul. Pontuação, espaços e hífen são removidos automaticamente antes da validação.
Valores aceitos para
A API normaliza o valor recebido antes da consulta, removendo hífen, espaços e pontuação.
Estrutura de
Estrutura de
Estrutura de
Estrutura de
Estrutura de
O campo
Estrutura de
Objeto com o status individual de cada dataset.
Estrutura de
Objeto indexado pelo ID do dataset. Cada chave contém o retorno do dataset correspondente.
Estrutura de
Status possíveis:
Para consultar o resultado final, use o
{
"code": 200,
"message": "Consulta realizada com sucesso.",
"result": {
"id": "9fcb573b-7f62-4774-978b-07e89dfef5f2",
"status": "completed",
"target": "vehicle",
"query": {
"plate": "ABC0A00",
"datasets": ["vehicle_basic_data"],
"additional": {}
},
"cost": {
"total": 0.12,
"refunded": 0,
"datasets": {
"vehicle_basic_data": {
"charged": 0.12,
"refunded": 0
}
}
},
"timing": {
"total": 1.84,
"datasets": {
"vehicle_basic_data": 1.84
}
},
"errors": {},
"datasets_status": {
"vehicle_basic_data": "completed"
},
"result": {
"vehicle_basic_data": {
"plate": "ABC0A00",
"state": "SP",
"city": "São Paulo",
"brand": "MARCA EXEMPLO",
"model": "MODELO EXEMPLO",
"manufacture_year": "2020",
"model_year": "2021",
"fuel": "FLEX",
"color": "PRATA",
"vehicle_type": "AUTOMÓVEL",
"status": "EM CIRCULACAO"
}
},
"created_at": "2026-06-22T12:00:00Z",
"last_updated_at": "2026-06-22T12:00:02Z"
}
}
{
"code": 202,
"message": "Consulta iniciada com sucesso.",
"result": {
"id": "9fcb573b-7f62-4774-978b-07e89dfef5f2",
"status": "queued",
"status_values": ["queued", "processing", "completed", "failed"],
"datasets": ["vehicle_basic_data"]
}
}
{
"code": 400,
"message": "Um ou mais parâmetros informados são inválidos."
}
{
"code": 401,
"message": "Credencial da API inválida."
}
{
"code": 403,
"message": "A credencial da API não possui permissão para este recurso."
}
Corpo da requisição
string
required
Placa do veículo. Aceita formato antigo e Mercosul.
string[]
required
Lista de IDs dos datasets veiculares que serão consultados.
object
Dados adicionais por dataset, quando algum dataset exigir parâmetros extras.
string
default:"async"
Modo da consulta.
mode:
| Valor | Descrição |
|---|---|
async | Inicia a consulta e retorna um id para acompanhar o resultado depois. |
sync | Aguarda a conclusão da consulta e retorna os dados diretamente na resposta. |
string
Use
sandbox para executar uma chamada de teste sem consumo de saldo.Para detalhes sobre chamadas de teste, consulte Ambiente de teste.
Exemplo de corpo
{
"plate": "ABC0A00",
"mode": "async",
"datasets": ["vehicle_basic_data"],
"additional": {}
}
A placa acima é fictícia e serve apenas para demonstrar a estrutura da requisição. Em chamadas reais ou sandbox, informe uma placa válida para o ambiente utilizado.
Regras da placa
O campoplate aceita os dois padrões principais de placas brasileiras:
| Formato | Exemplo estrutural | Descrição |
|---|---|---|
| Antigo | ABC1234 | Três letras seguidas de quatro números. |
| Mercosul | ABC1D23 | Três letras, um número, uma letra e dois números. |
Datasets veiculares
Antes de iniciar a consulta, liste os datasets disponíveis em Datasets e preços usando o tipovehicle.
Use apenas datasets com active: true.
Parâmetros adicionais por dataset
Alguns datasets podem exigir campos adicionais. Consulteadditional_fields no endpoint de datasets e preços para saber quais campos devem ser enviados.
Exemplo de envio de dados adicionais:
{
"plate": "ABC0A00",
"mode": "async",
"datasets": ["vehicle_example_dataset"],
"additional": {
"vehicle_example_dataset": {
"state": "SP"
}
}
}
Resposta
integer
required
Código da resposta da API.
string
required
Mensagem descritiva da resposta.
object
required
Objeto principal da consulta. A estrutura varia de acordo com o modo de execução.
Retorno síncrono
Quandomode é sync, a resposta pode retornar code: 200 com os dados completos da consulta.
Estrutura de result
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador único da consulta. |
status | string | Status final da consulta. Normalmente completed. |
target | string | Tipo da consulta. Para esta rota, retorna vehicle. |
query | object | Dados usados na consulta. |
cost | object | Valores cobrados e estornados. |
timing | object | Tempo total e tempo individual por dataset. |
errors | object | Erros por dataset, quando ocorrerem. |
datasets_status | object | Status individual de cada dataset. |
result | object | Resultado agrupado por dataset. |
created_at | string | Data de criação da consulta em ISO 8601. |
last_updated_at | string | Data da última atualização da consulta em ISO 8601. |
Estrutura de result.query
| Campo | Tipo | Descrição |
|---|---|---|
plate | string | Placa consultada, normalizada sem pontuação. |
datasets | array<string> | Datasets solicitados. |
additional | object | Dados adicionais enviados por dataset. |
Estrutura de result.cost
| Campo | Tipo | Descrição |
|---|---|---|
total | number | Valor total debitado após regras de retorno e estorno. |
refunded | number | Valor total estornado. |
datasets | object | Detalhamento de cobrança por dataset. |
Estrutura de result.timing
| Campo | Tipo | Descrição |
|---|---|---|
total | number | Tempo total da consulta em segundos. |
datasets | object | Tempo individual de cada dataset em segundos. |
Estrutura de result.errors
O campo errors retorna um objeto indexado pelo ID do dataset quando alguma base falha.
{
"errors": {
"vehicle_example_dataset": {
"code": 42025,
"message": "Não foi possível consultar o provedor da consulta."
}
}
}
Estrutura de result.datasets_status
Objeto com o status individual de cada dataset.
{
"datasets_status": {
"vehicle_basic_data": "completed",
"vehicle_example_dataset": "failed"
}
}
Estrutura de result.result
Objeto indexado pelo ID do dataset. Cada chave contém o retorno do dataset correspondente.
{
"result": {
"vehicle_basic_data": {
"plate": "ABC0A00",
"state": "SP",
"brand": "MARCA EXEMPLO",
"model": "MODELO EXEMPLO"
}
}
}
Campos descritos na estrutura do dataset podem não ser retornados em todas as consultas. Alguns dados dependem da disponibilidade da fonte e da placa consultada.
Retorno assíncrono
Quandomode é async, a resposta inicial retorna code: 202 e o processamento continua em segundo plano.
Estrutura de result
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador da consulta assíncrona. |
status | string | Status atual da consulta. |
status_values | array<string> | Lista de status possíveis. |
datasets | array<string> | Datasets solicitados na consulta. |
| Status | Descrição |
|---|---|
queued | Consulta criada e aguardando processamento. |
processing | Consulta em processamento. |
completed | Consulta finalizada. Verifique o resultado, erros e status por dataset no endpoint de resultado. |
failed | Consulta finalizada com falha geral. |
id retornado no endpoint de resultado assíncrono com target: vehicle.
Respostas esperadas
As respostas possíveis estão exemplificadas no painel lateral da página.| Status | Quando ocorre |
|---|---|
200 | Consulta síncrona concluída com sucesso. |
202 | Consulta assíncrona iniciada com sucesso. |
400 | Requisição inválida, placa inválida, dataset ausente ou parâmetro incompatível. |
401 | A chave da API está ausente, inválida ou não pôde ser autenticada. |
403 | A credencial não possui escopo de consulta, o plano não permite acesso ou há bloqueio financeiro. |
Fluxo recomendado
- Liste os datasets disponíveis em Datasets e preços usando
target: vehicle. - Selecione apenas datasets veiculares ativos.
- Envie a placa, os datasets e os campos adicionais necessários.
- Use
mode: "async"para iniciar a consulta e acompanhar o resultado depois. - Consulte o resultado em Resultado assíncrono usando
target: vehicle.

