> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.datalbus.com.br/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.datalbus.com.br/_mcp/server.

# Performance de veículos elétricos

GET https://datalbus.com.br:8000/api/v2/reports/performance

Indicadores diários de desempenho de **veículos elétricos**, por veículo ou por motorista.

- Sem filtros de motorista: uma linha por **veículo** por dia.
- Com `worker_id`, `driver_name` ou `driver_group`: uma linha por **motorista** por dia (os filtros `asset_*` são desconsiderados).

Retorna um único array (sem paginação). Os valores numéricos são retornados como string.

**Resposta 200** (array). Campos de identificação:

| Campo | Tipo | Descrição |
| --- | --- | --- |
| `tenant` | string | Empresa |
| `day` | string `YYYY-MM-DD HH:MM:SS` | Dia |
| `asset` | string | Por veículo: prefixo do veículo |
| `asset_manufacturer` | string | Por veículo: fabricante |
| `asset_model` | string | Por veículo: modelo |
| `asset_transmission` | string | Por veículo: transmissão |
| `asset_group` | string | Por veículo: grupo / garagem |
| `driver` | string | Por motorista: nome |
| `driver_worker_id` | string | Por motorista: matrícula |
| `driver_group` | string | Por motorista: grupo |
| `operational` | string | Linhas operadas no dia |

Indicadores (sufixo `_hours` = horas):

| Campo | Descrição |
| --- | --- |
| `total_distance` | Distância percorrida (km) |
| `total_fuel_used` | Combustível consumido |
| `total_engine_hours` | Horas de motor |
| `total_trip_duration_hours` | Duração das viagens |
| `total_idle_duration_hours` | Tempo parado |
| `total_driving_duration_hours` | Tempo em movimento |
| `total_recharger_energy` | Energia recarregada |
| `total_consumption_energy` | Energia consumida |
| `total_regenerated_energy` | Energia regenerada |
| `total_time_hvac_compressor_on_hours` | Tempo com compressor do ar-condicionado ligado |
| `total_time_internal_temperature_above_setpoint_hours` | Tempo com temperatura interna acima do setpoint |
| `total_time_compressor_on_above_10_min_hours` | Tempo com compressor do ar-condicionado ligado por mais de 10 min seguidos |
| `total_hvac_energy_consumption` | Energia consumida pelo ar-condicionado |
| `max_daily_external_temperature` | Temperatura externa máxima |
| `avg_daily_external_temperature` | Temperatura externa média |
| `total_time_pneumatic_compressor_on_hours` | Tempo com compressor pneumático ligado |
| `total_pneumatic_compressor_on` | Acionamentos do compressor pneumático |
| `total_electric_brake_20_time_hours` ... `total_electric_brake_100_time_hours` | Tempo de freio elétrico por faixa de intensidade (20, 40, 60, 80 e 100%) |
| `total_electric_brake_total_time_hours` | Tempo total de freio elétrico |
| `total_rolling_time_hours` | Tempo em rolagem (sem pedais) |
| `total_braking_time_hours` | Tempo freando |
| `total_high_usage_acc_pedal_with_kickdown_hours` | Tempo de uso intenso do acelerador com kickdown |
| `total_high_usage_acc_pedal_without_kickdown_hours` | Tempo de uso intenso do acelerador sem kickdown |
| `total_high_usage_acc_pedal_with_kickdown_plan_hours` | Idem, com kickdown, em terreno plano |
| `total_high_usage_acc_pedal_without_kickdown_plan_hours` | Idem, sem kickdown, em terreno plano |
| `total_usage_acc_pedal_hours` | Tempo de uso do acelerador |
| `total_usage_pedals_hours` | Tempo de uso dos pedais |
| `total_high_up_topography` ... `total_high_down_topography` | Amostras por faixa de topografia (subida forte, subida leve, plano, descida leve, descida forte) |
| `total_topography` | Total de amostras de topografia |
| `total_low_soc` | Ocorrências de bateria com carga baixa |
| `total_time_low_soc_hours` | Tempo com bateria com carga baixa |
| `total_recharger_sessions` | Por veículo: sessões de recarga |
| `total_recharger_duration_hours` | Tempo de recarga |

**Erros:** `422` para datas ausentes ou inválidas.

Reference: https://docs.datalbus.com.br/datalbus-api-v-2/relatorios/eletricos/performance-de-veículos-elétricos

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Query parameters

- `start_date` (string, optional) — Obrigatório. Data inicial, formato `DD-MM-YYYY`.
- `end_date` (string, optional) — Obrigatório. Data final (inclusiva), formato `DD-MM-YYYY`.

## Response

### 200

OK

- `list of PerformanceDeVeiculosEletricosEletricosResponseItem`

## Errors

### 401 Performance De Veiculos Eletricos Eletricos Request Unauthorized Error

Unauthorized

- `message` (string, required)

### 422 Performance De Veiculos Eletricos Eletricos Request Unprocessable Entity Error

Unprocessable Content

- `errors` (UnprocessableEntityErrorBodyErrors, required)
- `message` (string, required)

## Types

### PerformanceDeVeiculosEletricosEletricosResponseItem

- `day` (string, required)
- `asset` (string, required)
- `tenant` (string, required)
- `asset_group` (string, required)
- `asset_model` (string, required)
- `operational` (string, required)
- `total_low_soc` (string, required)
- `total_distance` (string, required)
- `total_fuel_used` (string, required)
- `total_topography` (string, required)
- `asset_manufacturer` (string, required)
- `asset_transmission` (string, required)
- `total_engine_hours` (string, required)
- `total_plan_topography` (string, required)
- `total_recharger_energy` (string, required)
- `total_low_up_topography` (string, required)
- `total_braking_time_hours` (string, required)
- `total_consumption_energy` (string, required)
- `total_high_up_topography` (string, required)
- `total_recharger_sessions` (string, required)
- `total_regenerated_energy` (string, required)
- `total_rolling_time_hours` (string, required)
- `total_time_low_soc_hours` (string, required)
- `total_usage_pedals_hours` (string, required)
- `total_idle_duration_hours` (string, required)
- `total_low_down_topography` (string, required)
- `total_trip_duration_hours` (string, required)
- `total_high_down_topography` (string, required)
- `total_usage_acc_pedal_hours` (string, required)
- `total_driving_duration_hours` (string, required)
- `total_hvac_energy_consumption` (string, required)
- `total_pneumatic_compressor_on` (string, required)
- `avg_daily_external_temperature` (string, required)
- `max_daily_external_temperature` (string, required)
- `total_recharger_duration_hours` (string, required)
- `total_electric_brake_20_time_hours` (string, required)
- `total_electric_brake_40_time_hours` (string, required)
- `total_electric_brake_60_time_hours` (string, required)
- `total_electric_brake_80_time_hours` (string, required)
- `total_electric_brake_100_time_hours` (string, required)
- `total_time_hvac_compressor_on_hours` (string, required)
- `total_electric_brake_total_time_hours` (string, required)
- `total_time_pneumatic_compressor_on_hours` (string, required)
- `total_time_compressor_on_above_10_min_hours` (string, required)
- `total_high_usage_acc_pedal_with_kickdown_hours` (string, required)
- `total_high_usage_acc_pedal_without_kickdown_hours` (string, required)
- `total_high_usage_acc_pedal_with_kickdown_plan_hours` (string, required)
- `total_time_internal_temperature_above_setpoint_hours` (string, required)
- `total_high_usage_acc_pedal_without_kickdown_plan_hours` (string, required)

### UnprocessableEntityErrorBodyErrors

- `date` (list of string, required)
- `groupBy` (list of string, required)

## Examples

### 200 - Por veículo

**Response**

```json
[
  {
    "day": "2026-10-01 00:00:00",
    "asset": "5130",
    "tenant": "empresa_exemplo",
    "asset_group": "Garagem Norte",
    "asset_model": "D11A",
    "operational": "100 - Centro",
    "total_low_soc": "0",
    "total_distance": "311.925",
    "total_fuel_used": "0",
    "total_topography": "2799",
    "asset_manufacturer": "BYD",
    "asset_transmission": "BYD - 2912TZ-XY-A - A",
    "total_engine_hours": "15.35",
    "total_plan_topography": "1896",
    "total_recharger_energy": "1124",
    "total_low_up_topography": "174",
    "total_braking_time_hours": "1.81",
    "total_consumption_energy": "819",
    "total_high_up_topography": "17",
    "total_recharger_sessions": "4",
    "total_regenerated_energy": "302",
    "total_rolling_time_hours": "2.91",
    "total_time_low_soc_hours": "0",
    "total_usage_pedals_hours": "7.13",
    "total_idle_duration_hours": "4.36",
    "total_low_down_topography": "543",
    "total_trip_duration_hours": "15.51",
    "total_high_down_topography": "169",
    "total_usage_acc_pedal_hours": "5.32",
    "total_driving_duration_hours": "11.16",
    "total_hvac_energy_consumption": "0",
    "total_pneumatic_compressor_on": "209",
    "avg_daily_external_temperature": "24.5",
    "max_daily_external_temperature": "31",
    "total_recharger_duration_hours": "1.61",
    "total_electric_brake_20_time_hours": "0.064",
    "total_electric_brake_40_time_hours": "0.002",
    "total_electric_brake_60_time_hours": "0",
    "total_electric_brake_80_time_hours": "0",
    "total_electric_brake_100_time_hours": "0",
    "total_time_hvac_compressor_on_hours": "0",
    "total_electric_brake_total_time_hours": "0.066",
    "total_time_pneumatic_compressor_on_hours": "10.06",
    "total_time_compressor_on_above_10_min_hours": "0",
    "total_high_usage_acc_pedal_with_kickdown_hours": "0.32",
    "total_high_usage_acc_pedal_without_kickdown_hours": "0.32",
    "total_high_usage_acc_pedal_with_kickdown_plan_hours": "0.2",
    "total_time_internal_temperature_above_setpoint_hours": "0",
    "total_high_usage_acc_pedal_without_kickdown_plan_hours": "0.2"
  }
]
```

**SDK Code**

```python 200 - Por veículo
import requests

url = "https://datalbus.com.br:8000/api/v2/reports/performance"

querystring = {"end_date":"07-10-2026","start_date":"01-10-2026"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript 200 - Por veículo
const url = 'https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go 200 - Por veículo
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby 200 - Por veículo
require 'uri'
require 'net/http'

url = URI("https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java 200 - Por veículo
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php 200 - Por veículo
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp 200 - Por veículo
using RestSharp;

var client = new RestClient("https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift 200 - Por veículo
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### 200 - Por motorista

**Response**

```json
[
  {
    "day": "2026-10-01 00:00:00",
    "asset": "asset",
    "tenant": "empresa_exemplo",
    "asset_group": "asset_group",
    "asset_model": "asset_model",
    "operational": "100 - Centro",
    "total_low_soc": "0",
    "total_distance": "311.925",
    "total_fuel_used": "0",
    "total_topography": "2799",
    "asset_manufacturer": "asset_manufacturer",
    "asset_transmission": "asset_transmission",
    "total_engine_hours": "15.35",
    "total_plan_topography": "1896",
    "total_recharger_energy": "1124",
    "total_low_up_topography": "174",
    "total_braking_time_hours": "1.81",
    "total_consumption_energy": "819",
    "total_high_up_topography": "17",
    "total_recharger_sessions": "total_recharger_sessions",
    "total_regenerated_energy": "302",
    "total_rolling_time_hours": "2.91",
    "total_time_low_soc_hours": "0",
    "total_usage_pedals_hours": "7.13",
    "total_idle_duration_hours": "4.36",
    "total_low_down_topography": "543",
    "total_trip_duration_hours": "15.51",
    "total_high_down_topography": "169",
    "total_usage_acc_pedal_hours": "5.32",
    "total_driving_duration_hours": "11.16",
    "total_hvac_energy_consumption": "0",
    "total_pneumatic_compressor_on": "209",
    "avg_daily_external_temperature": "24.5",
    "max_daily_external_temperature": "31",
    "total_recharger_duration_hours": "1.61",
    "total_electric_brake_20_time_hours": "0.064",
    "total_electric_brake_40_time_hours": "0.002",
    "total_electric_brake_60_time_hours": "0",
    "total_electric_brake_80_time_hours": "0",
    "total_electric_brake_100_time_hours": "0",
    "total_time_hvac_compressor_on_hours": "0",
    "total_electric_brake_total_time_hours": "0.066",
    "total_time_pneumatic_compressor_on_hours": "10.06",
    "total_time_compressor_on_above_10_min_hours": "0",
    "total_high_usage_acc_pedal_with_kickdown_hours": "0.32",
    "total_high_usage_acc_pedal_without_kickdown_hours": "0.32",
    "total_high_usage_acc_pedal_with_kickdown_plan_hours": "0.2",
    "total_time_internal_temperature_above_setpoint_hours": "0",
    "total_high_usage_acc_pedal_without_kickdown_plan_hours": "0.2"
  }
]
```

**SDK Code**

```python 200 - Por motorista
import requests

url = "https://datalbus.com.br:8000/api/v2/reports/performance"

querystring = {"end_date":"07-10-2026","start_date":"01-10-2026"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript 200 - Por motorista
const url = 'https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go 200 - Por motorista
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby 200 - Por motorista
require 'uri'
require 'net/http'

url = URI("https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java 200 - Por motorista
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php 200 - Por motorista
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp 200 - Por motorista
using RestSharp;

var client = new RestClient("https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift 200 - Por motorista
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://datalbus.com.br:8000/api/v2/reports/performance?end_date=07-10-2026&start_date=01-10-2026")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```