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

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)

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
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 ou Gestão → 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​