---
title: "Placa Dados V6 Assíncrona"
description: "API Veicular V6 (assíncrona) — Dados do veículo, restrições, gravame e débitos"
lang: en
canonical: https://doc.apibrasil.io/apis/creditos/2d7603b6-7038-479b-9c08-1f07a9e88529
markdown: https://doc.apibrasil.io/apis/creditos/2d7603b6-7038-479b-9c08-1f07a9e88529.md
source: apibrasil-documentation
---

# Placa Dados V6 Assíncrona

> API Veicular V6 (assíncrona) — Dados do veículo, restrições, gravame e débitos

- **Category:** Asynchronous Lookups
- **Billing:** per query, with the Bearer Token only
- **Price:** R$18.00 per query
- **Limit:** 990,000 per month
- **Registration:** requires a CNPJ
- **Version:** v2
- **Published by:** APIBrasil
- **OpenAPI specification:** https://doc.apibrasil.io/apis/creditos/2d7603b6-7038-479b-9c08-1f07a9e88529/openapi.json

## How to call

**Base address:** `https://gateway.apibrasil.io/api/v2`

Authentication: the `Authorization: Bearer <token>` header. Nothing else.

With `homolog: true` in the body, the gateway answers from a fixed base, with the real shape of the response, and does not charge. The CPF 00000000000 belongs to that base and to nobody: use it in tests, never in production.

## Endpoints (2 endpoints)

### 1. POST /consulta/veiculos/credits

⚠️ Aviso: consulta assíncrona. O valor fica reservado no seu saldo e só é debitado quando o resultado fica pronto e é entregue no seu webhook_url.

API Placa Dados V6 - Dados do veículo, restrições, gravame e débitos

Envie um POST com tipo=veiculos-dados-v6-async, a placa (ABC1234 ou ABC1D23) e o webhook_url que vai receber o resultado. A resposta imediata traz o job-id. O resultado chega por POST no webhook_url, no formato {"job-id": "...", "payload": {"success": true, "consulta": {...}, "dados": {...}, "msg": "..."}}, normalmente em 1 a 10 minutos (alguns Detrans demoram mais). O webhook pode ser entregue mais de uma vez: use o job-id para deduplicar. Também dá para buscar o resultado pelo job-id (endpoint de consulta do resultado). Use homolog=true para testar sem tarifar.

- **Method:** `POST`
- **Address:** `https://gateway.apibrasil.io/api/v2/consulta/veiculos/credits`
- **Route version:** v2

**Headers**

| Header | Value |
| --- | --- |
| `Content-Type` | `application/json` |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |

**Request body**

```json
{
  "tipo": "veiculos-dados-v6-async",
  "placa": "ABC1D23",
  "webhook_url": "https://seu-sistema.com.br/webhook",
  "homolog": true
}
```

**In cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/consulta/veiculos/credits" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -d '{"tipo":"veiculos-dados-v6-async","placa":"ABC1D23","webhook_url":"https://seu-sistema.com.br/webhook","homolog":true}'
```

This endpoint accepts `homolog: true` in the body: the response comes back with valid data, `api_limit_for` equal to `homolog` and no charge.

**Sample response, from the catalog**

```json
{
  "user": {
    "first_name": "[omitido]",
    "email": "[omitido]",
    "cellphone": "[omitido]",
    "notification": "yes"
  },
  "balance": "400,000",
  "balance_before": "400,000",
  "tax": "0,000",
  "status_code": 200,
  "error": false,
  "message": "Consulta assincrona disparada com sucesso! Voce será tarifado somente quando o processamento terminar e tiver sucesso.",
  "valor_consulta": 0,
  "api_limit_for": "async",
  "homolog": false,
  "data": {
    "accepted": true,
    "job-id": "f015a7b2-6e22-44ee-a00b-2b2b5dc37450",
    "msg": "consulta em processamento; resultado sera enviado ao webhook_url"
  }
}
```

### 2. POST /consulta/veiculos/credits

⚠️ Aviso: o resultado fica disponível por 24 horas. Esta consulta é gratuita.

Consulta o resultado da Placa Dados V6 pelo job-id recebido no disparo. job_status: pending (na fila), processing (consultando), completed (payload com os dados) ou failed (payload com error_code e message, sem cobrança).

- **Method:** `POST`
- **Address:** `https://gateway.apibrasil.io/api/v2/consulta/veiculos/credits`
- **Route version:** v2
- **Price of this operation:** R$0.00 per query

**Headers**

| Header | Value |
| --- | --- |
| `Content-Type` | `application/json` |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |

**Request body**

```json
{
  "tipo": "consultar-chave-veiculos-dados-v6",
  "job-id": "f015a7b2-6e22-44ee-a00b-2b2b5dc37450"
}
```

**In cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/consulta/veiculos/credits" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -d '{"tipo":"consultar-chave-veiculos-dados-v6","job-id":"f015a7b2-6e22-44ee-a00b-2b2b5dc37450"}'
```

**Sample response, from the catalog**

```json
{
  "user": {
    "first_name": "[omitido]",
    "email": "[omitido]",
    "cellphone": "[omitido]",
    "notification": "yes"
  },
  "balance": "382,000",
  "balance_before": "382,000",
  "tax": "0,000",
  "status_code": 200,
  "error": false,
  "message": "Consulta assincrona disparada com sucesso! Voce será tarifado somente quando o processamento terminar e tiver sucesso.",
  "valor_consulta": 0,
  "api_limit_for": "async",
  "homolog": false,
  "data": {
    "job-id": "f015a7b2-6e22-44ee-a00b-2b2b5dc37450",
    "job_status": "completed",
    "payload": {
      "success": true,
      "consulta": {
        "CicId": 35,
        "debitado": true,
        "id": 1790000000,
        "valor": 18
      },
      "dados": {
        "placa": "ABC1D23",
        "placa_pre_mercosul": "ABC1423",
        "chassi": "9BWZZZ377VT004251",
        "motor": "ABC123456",
        "estado_placa": "SP",
        "cidade_placa": "SAO PAULO",
        "renavam": "12345678901",
        "documento_faturado_tipo": "CNPJ",
        "documento_faturado_numero": "00000000000191",
        "estado_faturado": "SP",
        "ano_fabricacao": "2019",
        "ano_modelo": "2020",
        "status": "EM CIRCULACAO",
        "modelo_marca": "VW/GOL 1.0",
        "tipo_veiculo": "AUTOMOVEL",
        "especie": "PASSAGEIRO",
        "cor": "PRATA",
        "combustivel": "ALCOOL/GASOLINA",
        "origem": "NACIONAL",
        "potencia": "75",
        "cilindros": "4",
        "eixos": "2",
        "capacidade_passageiros": "5",
        "tanque_litros": "55",
        "capacidade_carga_kg": "400",
        "proprietario_nome": "FULANO DE TAL",
        "proprietario_documento": "00000000000",
        "proprietario_documento_tipo": "CPF",
        "cliente": {
          "nome": "FULANO DE TAL",
          "nome_mae": "",
          "nome_pai": "",
          "razao_social": "",
          "documento": "00000000000",
          "telefones": [
            "11999999999"
          ],
          "emails": [
            "[omitido]"
          ],
          "enderecos": [
            {
              "rua": "RUA EXEMPLO",
              "numero": "100",
              "bairro": "CENTRO",
              "cep": "01001000",
              "cidade": "SAO PAULO",
              "estado": "SP"
            }
          ],
          "situacao": "",
          "porte": "",
          "abertura": "",
          "natureza_juridica_codigo": "",
          "natureza_juridica_descricao": "",
          "atividades": [],
          "socios": []
        },
        "chassi_remarcado": false,
        "capacidade_max_tracao": "",
        "peso_bruto_total": "",
        "categoria": "PARTICULAR",
        "ano_ultimo_licenciamento": "2025",
        "situacao_licenciamento": "LICENCIADO",
        "licenciado_ate": "2026-12-31",
        "alienacao_instituicao": "BANCO EXEMPLO SA",
        "restricoes": {
          "renainf": false,
          "renajud": false,
          "rfb": false,
          "roubo_furto": false,
          "recall": false,
          "sinistro": false,
          "ocorrencia": "ALIENACAO FIDUCIARIA",
          "restricao_1": "ALIENACAO FIDUCIARIA",
          "restricao_2": "",
          "restricao_3": "",
          "restricao_4": ""
        },
        "gravame": [
          {
            "numero_restricao": "123456",
            "data_restricao": "2020-03-01",
            "uf_restricao": "SP",
            "status": "ATIVO",
            "codigo_agente": "999",
            "nome_agente": "BANCO EXEMPLO SA",
            "documento_agente": "00000000000191",
            "data_contrato": "2020-02-28",
            "uf_contrato": "SP",
            "numero_contrato": "CT-0001",
            "documento_financiado": "00000000000",
            "nome_financiado": "FULANO DE TAL"
          }
        ],
        "gravame_aviso": "",
        "debitos": [
          {
            "descricao": "IPVA 2026 - COTA 1",
            "tipo": 2,
            "cota": 1,
            "valor_total": 253.21,
            "valor_principal": 250,
            "juros": 1.21,
            "multa": 2,
            "vencimento": "2026-10-10",
            "vencimento_original": "2026-01-10",
            "identificador": "IPVA-2026-1",
            "codigo_barras": "85810000002532100000000000000000000000000000",
            "linha_digitavel": "858100000025 321000000000 000000000000 000000000000",
            "status_pagamento": "PENDENTE",
            "motivo_indisponivel": "",
            "data_referencia": "2026",
            "detalhes": []
          }
        ],
        "debitos_aviso": "",
        "total_debitos": 253.21
      },
      "msg": "consulta de veículo realizada com sucesso!"
    }
  }
}
```

In the sample responses, the fields of the account that generated the sample (`user.first_name`, `user.email`, `user.cellphone`) come out as `[omitido]`. The rest is what the catalog publishes.

## Pitfalls: what an integration gets wrong without warning

Established from the responses the catalog itself publishes. In every one of them the code works on the happy path and fails silently everywhere else:

1. **The error arrives in the BODY, with HTTP 200.**
   The response carries a boolean `error` field and a `message`. Checking only `response.ok` or the HTTP status lets a failure through as a success. ALWAYS check `error === false` before reading `data`.

2. **`balance`, `tax` and `extra_charges.total` are STRINGS in Brazilian format — and the format varies between APIs.**
   Values seen in the catalog: `"154,380"`, `"497,84"`, `"0,000"` and `"0.19"`. Comma in some, dot in another; three decimal places in some, two in another. In JavaScript, `parseFloat("154,380")` returns `154` and drops the cents with no error at all, and `Number("154,380")` returns `NaN`. Write a converter that handles both separators, and never use these fields in a financial decision without converting them.

3. **Every call costs money.**
   Blind retries multiply the bill. Never automatically repeat a 4xx: a bad parameter repeated is still bad, and still charged. Retry only timeouts and 5xx, with exponential backoff and a small attempt ceiling.

4. **HTTP 402 means insufficient balance, and retrying does not fix it.**
   It is the one status that needs a human — a top-up. Treat it as a terminal error with its own message, and do not lump it in with generic 4xx.

5. **`extra_charges` bills on top of the lookup price.**
   When the body asks for add-on services, the response lists each one with its price plus a `total` that is NOT included in the base amount. If you show cost to an end user, add both.

## See also

- OpenAPI specification: https://doc.apibrasil.io/apis/creditos/2d7603b6-7038-479b-9c08-1f07a9e88529/openapi.json
- API catalog: [API catalog](https://doc.apibrasil.io/apis.md)
- Official SDKs: [Official SDKs](https://doc.apibrasil.io/sdks.md)
- Documentation index: https://doc.apibrasil.io/llms.txt
- HTML version of this page: https://doc.apibrasil.io/apis/creditos/2d7603b6-7038-479b-9c08-1f07a9e88529
