Esta documentação foi preparada para clientes e parceiros da Aioti que desejam integrar seus sistemas à plataforma SafePilot. A API permite autenticar usuários autorizados, consultar frotas, motoristas e viagens, além de obter dados de telemetria e eventos de condução de forma padronizada.
Todos os endpoints desta versão estão disponíveis sob o prefixo /v1.
Os endpoints protegidos exigem o envio do token JWT no header Authorization.
Primeiro, utilize /v1/user/auth para obter um accessToken e um
refreshToken. Em seguida, envie o accessToken nas chamadas protegidas:
Após obter um accessToken através do endpoint /v1/user/auth,
as chamadas subsequentes devem ser realizadas utilizando o header:
Authorization: Bearer seu_access_token
A utilização da API segue um fluxo sequencial simples:
/v1/fleets para obter as frotas disponíveis.
Cada frota possui um identificador único (id), que será utilizado
nas próximas etapas.
/v1/drivers, informando o parâmetro
fleetId, que corresponde ao identificador da frota obtido em
/v1/fleets. Opcionalmente, é possível informar o parâmetro
tenantId para consultar motoristas de um cliente específico,
desde que o usuário autenticado possua permissão de acesso a esse tenant.
Caso tenantId não seja informado, a consulta utilizará o tenant
do próprio usuário autenticado.
/v1/trips, informando o parâmetro
driverId, obtido na resposta de /v1/drivers, além
do período desejado (initialDate e finalDate).
A resposta conterá as viagens realizadas pelo motorista no período informado.
/v1/trips/route, informando o parâmetro
tripId, obtido na resposta de /v1/trips.
Este endpoint retorna a rota detalhada da viagem em formato GeoJSON.
/v1/trips/disregard e
/v1/trips/reconsider, informando o parâmetro
tripId no corpo da requisição. Essas operações permitem alterar
se uma viagem deve ou não ser considerada como condução do motorista.
Este fluxo permite navegar de forma estruturada entre frotas, motoristas e viagens, garantindo consultas consistentes e com melhor performance.
Datas devem ser informadas em formato ISO 8601, por exemplo:
2026-04-01T00:00:00.000Z. Para consultas de viagens, o período máximo permitido é de
31 dias. Quando aplicável, utilize pageNumber para navegar pela paginação.
A seguir, um exemplo completo de utilização da API SafePilot, demonstrando o fluxo desde a autenticação até a consulta de viagens de um motorista.
curl -X POST "https://api.safepilot.com.br/v1/user/auth" \
-H "Content-Type: application/json" \
-d '{
"email": "usuario@email.com",
"password": "senha"
}'
Resposta:
{
"accessToken": "SEU_ACCESS_TOKEN",
"refreshToken": "SEU_REFRESH_TOKEN"
}
---
curl -G "https://api.safepilot.com.br/v1/fleets" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN"
Resposta (exemplo):
{
"fleets": [
{
"id": "FLEET_ID_123",
"name": "Frota São Paulo"
}
]
}
Neste exemplo, utilizaremos o fleetId = FLEET_ID_123.
curl -G "https://api.safepilot.com.br/v1/drivers" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
--data-urlencode "fleetId=FLEET_ID_123" \
--data-urlencode "tenantId=TENANT_ID_OPCIONAL"
Resposta (exemplo):
{
"drivers": [
{
"id": "DRIVER_ID_456",
"firstName": "João",
"lastName": "Silva"
}
]
}
---
curl -G "https://api.safepilot.com.br/v1/trips" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
--data-urlencode "driverId=DRIVER_ID_456" \
--data-urlencode "initialDate=2026-04-01T00:00:00.000Z" \
--data-urlencode "finalDate=2026-04-30T23:59:59.999Z"
Resposta (exemplo):
{
"trips": [
{
"id": "TRIP_ID_789",
"status": "CONSIDERED",
"start_time": "2026-04-16T17:07:31.289Z",
"end_time": "2026-04-16T17:52:01.385Z",
"scores": {
"overall": 90,
"speeding": 94,
"distraction": 100,
"harshBraking": 72,
"harshAcceleration": 100,
"sharpTurn": 100
},
"trip_info": {
"total_distance_km": 15.89,
"distance_on_road_km": 15.89,
"distance_offroad_km": 0
},
"events": [
{
"type": "HARD_BRAKING",
"timestamp": "2026-04-16T17:10:19.384Z"
}
]
},
{
"id": "TRIP_ID_790",
"status": "DISREGARDED",
"start_time": "2026-04-17T09:12:04.100Z",
"end_time": "2026-04-17T09:38:22.500Z",
"scores": {
"overall": 0
},
"trip_info": {
"total_distance_km": 8.42
},
"events": []
}
],
"pagination": {
"currentPage": 1,
"totalItems": 2,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
}
curl -G "https://api.safepilot.com.br/v1/trips/route" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
--data-urlencode "tripId=TRIP_ID_789"
Resposta (exemplo):
{
"tripId": "TRIP_ID_789",
"route": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-46.5292212367, -23.4778878093],
[-46.5294478834, -23.4780554473],
[-46.5299870074, -23.4784537554]
]
}
}
]
}
}
curl -X POST "https://api.safepilot.com.br/v1/trips/disregard" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tripId": "TRIP_ID_789"
}'
Resposta (exemplo):
{
"tripId": "TRIP_ID_789",
"status": "DISREGARDED"
}
curl -X POST "https://api.safepilot.com.br/v1/trips/reconsider" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tripId": "TRIP_ID_789"
}'
Resposta (exemplo):
{
"tripId": "TRIP_ID_789",
"status": "RECONSIDERED"
}
---
Este fluxo demonstra a navegação entre os principais recursos da API: frotas → motoristas → viagens.