← InícioFleetPay / API

Consultar a frota de um transportador (ANTT)

Parâmetros, estrutura de dados e respostas do contrato versionado.

GET/consultas/frota
consultarFrotaBase de Homologação: https://api.fleetpay.site/v1

Descrições técnicas preservadas do contrato versionado. Exemplos de dados foram omitidos da cópia pública.

Verifica, para uma lista de placas, se cada uma pertence à frota de um transportador no RNTRC (ANTT). A resposta traz, por placa, pertence (true/false, ou null quando a ANTT não deu situação conclusiva).

Pré-requisito da empresa que consulta: ter o cadastro fiscal concluído — com o certificado digital A1 enviado em Configurações. Sem isso a resposta é 422 com empresa_nao_habilitada.

Exige o escopo consultas habilitado no painel.

Modo simulado em homologação

Esta consulta não tem provedor contratado por trás: em homologação a resposta é gerada pela FleetPay, é determinística e não tem efeito regulatório — o dado não vem da ANTT e não reflete a frota real do transportador. Cada item de frota carrega verificacao: "simulada", marcando a natureza da verificação por placa — e o campo é opcional por natureza: item sem verificacao é verificação real.

O contrato de request e response já é o definitivo: integre agora. Quando o provedor real entrar, o comportamento deixa de ser simulado sem mudança de contrato.

O par documento + rntrc precisa conferir

Os dois parâmetros são uma pergunta só: "a situação DESTE registro DESTE transportador". Um RNTRC que não seja o daquele CPF/CNPJ não descreve transportador nenhum, e a resposta é 400 com rntrc_nao_confere — nunca um 200 sobre o cadastro que por acaso foi encontrado.

É 400 e não 503 porque a consulta rodou e concluiu: não houve indisponibilidade. E não é 404 porque o que está errado é a combinação dos dois parâmetros, não um recurso ausente no endereço.

As sentinelas abaixo são isentas dessa checagem — elas existem justamente para não serem o RNTRC de ninguém.

Repare que a recusa do par é diferente de pertence: null. null é uma placa inconclusiva dentro de uma frota que existe; o 400 é a ausência de transportador sobre o qual responder — por isso ele não vem por placa, e sim no lugar da resposta inteira.

Sentinelas de teste

Em modo simulado, estas placas respondem sempre a mesma coisa — use-as para exercitar o caminho de erro da sua integração:

PlacaResposta
ZZZ0X00Placa fora da frota do transportador — pertence: false
ZZZ9X99Situação inconclusiva na ANTT — pertence: null
qualquer outra placa válidaResposta de sucesso

Autenticação

[
  {
    "oauth2": []
  },
  {
    "chaveApi": []
  }
]
A disponibilidade depende do ambiente, dos escopos habilitados e do provedor. Esta referência não executa chamadas nem recebe credenciais.

Parâmetros

documentoquery · stringObrigatório

CPF (11 dígitos) ou CNPJ (14 dígitos) do transportador consultado, somente dígitos.

Restrições
{
  "type": "string",
  "pattern": "^([0-9]{11}|[0-9]{14})$"
}
rntrcquery · stringObrigatório

RNTRC do transportador consultado, com 8 ou 9 dígitos.

Restrições
{
  "type": "string",
  "pattern": "^[0-9]{8,9}$"
}
placasquery · arrayObrigatório

Placas a verificar (1 a 20). Envie placas[]=ABC1D23&placas[]=XYZ4E56.

Em homologação, ZZZ0X00 devolve pertence: false e ZZZ9X99 devolve pertence: null; qualquer outra placa válida devolve sucesso.

Restrições
{
  "type": "array",
  "minItems": 1,
  "maxItems": 20,
  "items": {
    "type": "string",
    "pattern": "^[A-Za-z]{3}[0-9][A-Za-z0-9][0-9]{2}$"
  }
}

Respostas

200 Resposta HTTP

Situação de cada placa na frota do transportador.

application/json

dataobjectOpcional
400 Resposta HTTP

rntrc_nao_confere — o RNTRC informado não é o registro deste CPF/CNPJ, então não há frota sobre a qual responder. validacao — alguma placa está fora do formato Mercosul, ou falta parâmetro.

application/json

errorobjectOpcional
401 Resposta HTTP

Não autenticado (autenticacao): credencial ausente, inválida ou expirada — inclusive chave de API usada no ambiente errado. A chave de homologação não vale em produção, nem a de produção em homologação; a mensagem do erro indica o ambiente esperado.

application/json

errorobjectOpcional
403 Resposta HTTP

Escopo não habilitado para esta credencial

application/json

errorobjectOpcional
422 Resposta HTTP

A empresa autenticada ainda não concluiu o cadastro fiscal (empresa_nao_habilitada).

application/json

errorobjectOpcional
503 Resposta HTTP

A consulta está temporariamente indisponível (consulta_indisponivel). Aguarde e tente de novo.

application/json

errorobjectOpcional
Definição Completa da Operação
{
  "tags": [
    "Consultas"
  ],
  "summary": "Consultar a frota de um transportador (ANTT)",
  "operationId": "consultarFrota",
  "description": "Verifica, para uma lista de placas, se cada uma pertence à frota de um transportador no\nRNTRC (ANTT). A resposta traz, por placa, `pertence` (`true`/`false`, ou `null` quando a\nANTT não deu situação conclusiva).\n\n**Pré-requisito da empresa que consulta:** ter o cadastro fiscal concluído — com o\ncertificado digital A1 enviado em Configurações. Sem isso a resposta é `422` com\n`empresa_nao_habilitada`.\n\nExige o escopo `consultas` habilitado no painel.\n\n## Modo simulado em homologação\n\nEsta consulta **não tem provedor contratado** por trás: em homologação a resposta é\ngerada pela FleetPay, é determinística e **não tem efeito regulatório** — o dado não vem\nda ANTT e não reflete a frota real do transportador. Cada item de `frota` carrega\n`verificacao: \"simulada\"`, marcando a natureza da verificação por placa — e o campo é\nopcional por natureza: item **sem** `verificacao` é verificação real.\n\nO contrato de request e response já é o definitivo: integre agora. Quando o provedor real\nentrar, o comportamento deixa de ser simulado **sem mudança de contrato**.\n\n\n### O par `documento` + `rntrc` precisa conferir\n\nOs dois parâmetros são uma pergunta só: *\"a situação DESTE registro DESTE\ntransportador\"*. Um RNTRC que não seja o daquele CPF/CNPJ não descreve transportador\nnenhum, e a resposta é **`400` com `rntrc_nao_confere`** — nunca um `200` sobre o\ncadastro que por acaso foi encontrado.\n\nÉ `400` e não `503` porque a consulta rodou e concluiu: não houve indisponibilidade. E\nnão é `404` porque o que está errado é a **combinação** dos dois parâmetros, não um\nrecurso ausente no endereço.\n\nAs sentinelas abaixo são **isentas** dessa checagem — elas existem justamente para não\nserem o RNTRC de ninguém.\n\nRepare que a recusa do par é **diferente** de `pertence: null`. `null` é uma placa\ninconclusiva dentro de uma frota que existe; o `400` é a ausência de transportador\nsobre o qual responder — por isso ele não vem por placa, e sim no lugar da resposta\ninteira.\n\n### Sentinelas de teste\n\nEm modo simulado, estas placas respondem sempre a mesma coisa — use-as para exercitar o\ncaminho de erro da sua integração:\n\n| Placa | Resposta |\n|---|---|\n| `ZZZ0X00` | Placa fora da frota do transportador — `pertence: false` |\n| `ZZZ9X99` | Situação inconclusiva na ANTT — `pertence: null` |\n| qualquer outra placa válida | Resposta de sucesso |\n",
  "parameters": [
    {
      "name": "documento",
      "in": "query",
      "required": true,
      "schema": {
        "type": "string",
        "pattern": "^([0-9]{11}|[0-9]{14})$"
      },
      "description": "CPF (11 dígitos) ou CNPJ (14 dígitos) do transportador consultado, somente dígitos."
    },
    {
      "name": "rntrc",
      "in": "query",
      "required": true,
      "schema": {
        "type": "string",
        "pattern": "^[0-9]{8,9}$"
      },
      "description": "RNTRC do transportador consultado, com 8 ou 9 dígitos."
    },
    {
      "name": "placas",
      "in": "query",
      "required": true,
      "style": "form",
      "explode": true,
      "schema": {
        "type": "array",
        "minItems": 1,
        "maxItems": 20,
        "items": {
          "type": "string",
          "pattern": "^[A-Za-z]{3}[0-9][A-Za-z0-9][0-9]{2}$"
        }
      },
      "description": "Placas a verificar (1 a 20). Envie `placas[]=ABC1D23&placas[]=XYZ4E56`.\n\nEm homologação, `ZZZ0X00` devolve `pertence: false` e `ZZZ9X99` devolve\n`pertence: null`; qualquer outra placa válida devolve sucesso.\n"
    }
  ],
  "responses": {
    "200": {
      "description": "Situação de cada placa na frota do transportador.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "data": {
                "type": "object",
                "properties": {
                  "documento": {
                    "type": "string"
                  },
                  "rntrc": {
                    "type": "string"
                  },
                  "frota": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "placa": {
                          "type": "string"
                        },
                        "pertence": {
                          "type": "boolean",
                          "nullable": true
                        },
                        "verificacao": {
                          "type": "string",
                          "description": "Natureza da verificação desta placa. Em homologação vem\n`simulada`: a situação não foi apurada na ANTT, foi gerada em\nmodo simulado e não tem efeito regulatório.\n\nO marcador viaja **dentro de cada item**, e não no envelope da\nresposta, para sobreviver a ingestões que guardam só a lista de\nplacas e descartam o envelope.\n\n**Trate o campo como opcional.** Ele só existe enquanto a\nverificação é simulada: item **sem** `verificacao` é verificação\nreal. Um parser que exija o campo quebra na virada para o\nprovedor real — leia por presença, não por obrigatoriedade.\n"
                        }
                      }
                    }
                  }
                }
              },
              "environment": {
                "$ref": "#/components/schemas/Environment"
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "`rntrc_nao_confere` — o RNTRC informado não é o registro deste CPF/CNPJ, então não\nhá frota sobre a qual responder.\n`validacao` — alguma placa está fora do formato Mercosul, ou falta parâmetro.\n",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Erro"
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Erro401"
    },
    "403": {
      "$ref": "#/components/responses/Erro403"
    },
    "422": {
      "description": "A empresa autenticada ainda não concluiu o cadastro fiscal (`empresa_nao_habilitada`).",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Erro"
          }
        }
      }
    },
    "503": {
      "description": "A consulta está temporariamente indisponível (`consulta_indisponivel`). Aguarde e tente de novo.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Erro"
          }
        }
      }
    }
  },
  "method": "GET",
  "path": "/consultas/frota"
}