Pular para o conteúdo principal
Começando

Integre seu sistema à plataforma Frota162

A API Frota162 conecta o seu sistema à nossa plataforma de gestão de frotas. Veículos, condutores, multas e viagens passam a fluir entre os dois lados sem ninguém abrir o painel.

12 min de leituraVale para v1 e v2 (beta)

Antes de tudo — três URLs que você vai usar

Você vai se deparar com três endereços diferentes ao longo da integração. Entender a diferença entre eles evita a maioria dos erros de início:

  • 📡 API — é onde você envia as chamadas HTTP. Exemplo: https://api.v1.frota162.com.br/key/create-car
  • 🖥️ Plataforma (Sistema Web) — é onde você faz login para gerar credenciais e gerenciar sua conta. Exemplo: https://sistema.frota162.com.br/login
  • 📖 Documentação (este portal) — é onde você está agora, lendo os guias e a referência. Exemplo: https://docs.frota162.com

Regra prática: se você está escrevendo código que faz curl, fetch ou axios, use a URL da API. Se você está num navegador gerando tokens ou gerenciando usuários, use a URL da Plataforma.


O que muda com a integração

Sem API, cada atualização exige login no painel, navegação manual e conciliação depois. Com API, seu sistema lê e escreve direto, e recebe aviso quando algo muda do nosso lado.

Dois caminhos: você chama a API quando precisa; a gente chama o seu endpoint quando algo acontece.

O que a API entrega

MóduloO que você consegue fazer
VeículosCadastrar, atualizar, listar, consultar e desativar
EmpresasCadastrar, listar e desativar empresas, divisões e subdivisões
UsuáriosCadastrar e desativar usuários vinculados à conta
CondutoresCadastrar, atualizar, listar, consultar e desativar
ViagensCadastrar, atualizar, listar, consultar e excluir
Multas e notificaçõesVincular condutores a infrações e atualizar dados de pagamento
WebhooksReceber eventos em tempo real (multas, notificações, IPVA)
Beta

O módulo de Indicação de Motoristas (API v2) está em beta — o contrato pode mudar antes da versão final. Ver guia de Indicação de Motoristas

Qual API usar?

Operamos dois modelos de API simultaneamente. A diferença entre eles é histórica — cada um atende clientes integrados em momentos diferentes. As duas APIs não têm funcionalidades sobrepostas: elas se complementam, não se substituem.

API v1 (Legado)API v2 (Moderno)
TecnologiaPHP (Laravel)Node.js (NestJS) — Partner Gateway
IdentificaçãoPor usuário (email + senha)Por empresa (Client ID + Client Secret)
AutenticaçãoHMAC SHA256 (Authorization: Basic + Key) recalculado a cada chamadaHMAC SHA256 (mesmo modelo da v1)
CoberturaCompleta — veículos, condutores, empresas, usuários, viagens, multas, webhooks, SSOApenas indicação de condutor (NIC) — nenhuma outra operação disponível
StatusEstávelEm evolução ativa
Se o cliente precisa de...Use a...
Indicar condutor em multa (NIC)API v2 — é a única funcionalidade disponível nela
Qualquer outra operaçãoAPI v1 — é a única que tem essas funcionalidades

Para quem é este guia

Escrito para quem vai implementar a integração. Também serve para gestores e analistas que precisam saber o que a API cobre antes de decidir escopo — as seções com código podem ser repassadas ao time de desenvolvimento sem perda de contexto.

Ambientes

Dois ambientes isolados, com credenciais próprias. As chaves de um não funcionam no outro.

URLs da API (onde você envia as chamadas HTTP):

AmbientePara que serveAPI v1API v2 (beta)
SandboxDesenvolvimento e testes, dados fictícioshttps://apidev.v1.frota162.com.brhttps://api.sandbox.v2.frota162.com.br
ProduçãoIntegração final, dados reaishttps://api.v1.frota162.com.brhttps://api.v2.frota162.com.br

URLs da Plataforma (onde você gera credenciais e gerencia a conta):

AmbienteURL
Sandboxhttps://sandbox.frota162.com.br
Produçãohttps://sistema.frota162.com.br
Comece por sandbox

Só migre para produção depois de validar o fluxo inteiro. Peça as credenciais de sandbox ao suporte antes de escrever a primeira linha.


Como a autenticação funciona

Você recebe duas credenciais: um ACCESS_TOKEN, que identifica sua conta, e uma SECRET_KEY, que nunca sai do seu servidor. A partir delas você deriva uma assinatura HMAC-SHA256 e envia três headers em toda requisição:

HeaderValor
AuthorizationBasic {ACCESS_TOKEN}
Keyassinatura derivada do token com a SECRET_KEY
cache-controlno-cache
O que a assinatura prova

Ela prova que você possui a SECRET_KEY. Ela não assina o conteúdo da requisição — corpo, URL e horário não entram no cálculo. Por isso o valor é constante enquanto o par de credenciais existir: na prática é uma segunda credencial derivada, e merece o mesmo cuidado de armazenamento que a primeira.

Detalhes, exemplos por linguagem e diagnóstico de erro: Autenticação.


O caminho para a primeira chamada

No fim desta seção você tem uma chamada autenticada respondendo 200 em sandbox, com dados da sua frota. Três passos: gerar credenciais, assinar a requisição, conferir a resposta.

Gere as credenciais no painel

Você precisa de duas chaves: um ACCESS_TOKEN e uma SECRET_KEY.

AmbientePainel
Sandboxhttps://sandbox.frota162.com.br/login
Produçãohttps://sistema.frota162.com.br/login
  1. Entre no painel do ambiente que vai usar.
  2. Acesse Configurações → Usuários no menu lateral.
  3. Abra a edição do seu próprio usuário.
  4. Na seção Credenciais de API, use os botões Gerar Token e Gerar Secret Key.
  5. Clique em Ver para exibir os valores e em Copiar para levá-los ao seu ambiente.

Exporte as duas no shell antes de seguir:

terminal
export FROTA_ACCESS_TOKEN="seu_token"
export FROTA_SECRET_KEY="sua_chave_secreta"
A SECRET_KEY não deve sair do servidor

Guarde as duas em variável de ambiente ou gerenciador de segredos. Nunca no código-fonte, nunca no navegador, nunca em log de requisição.

Faça a chamada assinada

A assinatura é um HMAC-SHA256 do ACCESS_TOKEN usando a SECRET_KEY como chave, com saída em hexadecimal. Três headers vão em toda requisição: Authorization, Key e cache-control.

primeira-chamada.sh — roda como está
# chave = SECRET · mensagem = TOKEN · saída = hex
KEY=$(printf '%s' "$FROTA_ACCESS_TOKEN" \
| openssl dgst -sha256 -hmac "$FROTA_SECRET_KEY" \
| awk '{print $2}')

curl -s -w '\n%{http_code}\n' \
"https://apidev.v1.frota162.com.br/key/list-cars?pagination[page]=1&pagination[perpage]=10" \
-H "Authorization: Basic $FROTA_ACCESS_TOKEN" \
-H "Key: $KEY" \
-H 'cache-control: no-cache'

Use printf, não echo -n. O -n não é portável entre shells e, onde não funciona, o newline entra no cálculo e a assinatura sai errada sem nenhum aviso.

Confira o resultado

Status 200 e "error": false confirmam que a chamada passou. total é a contagem geral de veículos da conta; data traz os registros da página pedida.

Rodar
terminal
node index.mjs
200 { cars: { current_page: 1, total: 42, ... }, error: false, code: 'fbk_200' }

A resposta

200 OK
{
"cars": {
"current_page": 1,
"data": [
{
"id": 1,
"car_plate": "ABC1234",
"renavam": "00123456789",
"brand": "TOYOTA",
"model": "COROLLA",
"active": "1"
}
],
"total": 42,
"per_page": "10",
"last_page": 5
},
"error": false,
"code": "fbk_200"
}

Como percorrer as demais páginas: Paginação.

Quando vem erro em vez de dados

O erro do primeiro dia é quase sempre de autenticação, e todos os casos abaixo devolvem o mesmo fbk_001 — a mensagem não distingue a causa.

401 · fbk_001
{
"message": "Não autorizado",
"error": true,
"code": "fbk_001"
}
SintomaCausa provávelComo resolver
fbk_001 constanteChave e mensagem invertidas no HMACA chave é a SECRET_KEY, a mensagem é o ACCESS_TOKEN
fbk_001 constanteAssinatura em base64A API só aceita hexadecimal (digest('hex'))
fbk_001 constanteAlgoritmo erradoPrecisa ser sha256 — não sha1, não md5
fbk_001 intermitenteNewline ou espaço no valor lido do ambienteAplique trim() no token e na chave
Resposta antiga ou inesperadaHeader cache-control ausenteAdicione cache-control: no-cache
fbk_002Conta sem permissão para a empresaNão é problema de assinatura. Fale com o suporte

Confirme também que a URL aponta para sandbox (apidev) e que as credenciais são as do mesmo ambiente — chave de produção em sandbox devolve fbk_001.

Lista completa de códigos: Tratamento de erros.

Próximos passos