Referencia de la API

Historial y rutas

Recorrido de un vehículo por tramos de conducción y parada, y posiciones GPS crudas paginadas. Rango máximo, zona horaria y ejemplos.

Estado: Verificado · Revisada el 5 de octubre de 2026

Qué se verificó y cómo: Verificado por lectura del código y diff contra producción; las respuestas se midieron con 61 posiciones ficticias en un entorno de pruebas. El rango máximo de 31 días es el valor por defecto del código, no una medición de producción.

Hay dos formas de consultar el historial de un vehículo:

Tabla
NecesitasUsa
El recorrido resumido: tramos de conducción y paradas, distancia y velocidadesget_history
Las posiciones GPS una por una, con sus atributos, paginadasget_history_messages

Tramos del recorrido #

En get_history, cada elemento de items es un tramo. Su campo status indica el tipo:

Tramos del recorrido
statusSignificado
1Conducción
2Parada
3Inicio
4Fin
5Evento

Cada tramo trae sus puntos en items, con lat, lng, speed y las horas. Los totales del periodo (distance_sum, top_speed, move_duration, stop_duration…) vienen con su unidad, como texto.

Fechas #

Las fechas y horas que envías se interpretan en la zona horaria de tu cuenta. En cada posición, raw_time y time salen en la zona de la cuenta, mientras que device_time y server_time vienen crudos en UTC. Mira Convenciones.

Recorrido de un vehículo por tramos de conducción/parada #

GET /api/get_history Verificado

Reconstruye el recorrido de un vehículo en tramos de conducción y de parada. Identifica el vehículo con device_id o con imei. Las fechas y horas se interpretan en la zona horaria de la cuenta, no en UTC. Rango máximo de 31 días (valor por defecto del código; el de producción no está confirmado). Requiere permiso de historial, que el vehículo sea del usuario y que no esté vencido.

Autenticación. Cabecera user-api-hash con tu user_api_hash.

  • Dentro de cada posición, raw_time y time están en la zona de la cuenta, mientras que device_time y server_time vienen crudos en UTC.

Parámetros

Parámetros de /api/get_history
NombreEnTipoObligatorioDescripción
device_idqueryintegerNoObligatorio si no se envía imei.
imeiquerystringNoAlternativa a device_id.
from_datequerystringSíFecha inicial YYYY-MM-DD. Zona horaria: la de la cuenta del usuario de la API, no UTC. Formato de visualización: el configurado en la cuenta (en las mediciones fue dd-mm-YYYY HH:mm:ss).
from_timequerystringSíHora inicial HH:MM o HH:MM:SS (validación: regex).
to_datequerystringSíFecha final YYYY-MM-DD.
to_timequerystringSíHora final HH:MM o HH:MM:SS.
stopsqueryintegerNoSegundos mínimos para considerar una parada (por defecto 180).
langquerystringNoIdioma de los textos traducibles (SetLang). También se admite la cabecera Accept-Language.

Ejemplo de solicitud

cURL

cURL
curl -sS -G "https://plataforma.trackerintl.com/api/get_history" \
  -H "user-api-hash: TU_API_HASH" \
  --data-urlencode "device_id=9001" \
  --data-urlencode "from_date=2026-10-01" \
  --data-urlencode "from_time=00:00" \
  --data-urlencode "to_date=2026-10-02" \
  --data-urlencode "to_time=23:59"

JavaScript · Node.js 22

JavaScript
const BASE_URL = "https://plataforma.trackerintl.com";
const API_HASH = "TU_API_HASH";

const params = new URLSearchParams({
  device_id: "9001",
  from_date: "2026-10-01",
  from_time: "00:00",
  to_date: "2026-10-02",
  to_time: "23:59",
});
const respuesta = await fetch(`${BASE_URL}/api/get_history?${params}`, {
  headers: { "user-api-hash": API_HASH },
});
if (!respuesta.ok) throw new Error(`HTTP ${respuesta.status}: ${await respuesta.text()}`);
console.log(JSON.stringify(await respuesta.json(), null, 2));

Python · Python 3 con requests

Python
import json
import requests

BASE_URL = "https://plataforma.trackerintl.com"
API_HASH = "TU_API_HASH"

respuesta = requests.get(
    f"{BASE_URL}/api/get_history",
    headers={"user-api-hash": API_HASH},
    params={"device_id": "9001", "from_date": "2026-10-01", "from_time": "00:00", "to_date": "2026-10-02", "to_time": "23:59"},
    timeout=30,
)
respuesta.raise_for_status()
print(json.dumps(respuesta.json(), indent=2, ensure_ascii=False))

PHP · PHP 8 con cURL

PHP
<?php
$baseUrl = "https://plataforma.trackerintl.com";
$apiHash = "TU_API_HASH";

$url = $baseUrl . "/api/get_history?" . http_build_query(["device_id" => "9001", "from_date" => "2026-10-01", "from_time" => "00:00", "to_date" => "2026-10-02", "to_time" => "23:59"]);
$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => ["user-api-hash: " . $apiHash],
]);
$cuerpo = curl_exec($ch);
$codigo = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
if ($cuerpo === false || $codigo !== 200) {
    fwrite(STDERR, "HTTP $codigo\n");
    exit(1);
}
echo json_encode(json_decode($cuerpo, true), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), "\n";

Respuestas

Respuestas de /api/get_history
CódigoDescripción
200Respuesta correcta.
401Hash ausente o incorrecto, usuario inactivo, suscripción vencida (también la del gerente) o API deshabilitada por falta de pago del servidor. HTTP 401 con {status: 0, message}.
403Sin permiso del rol para el módulo, vehículo de otro usuario o cuenta restringida por facturación. Incluye perm: 0.
404Dispositivo inexistente: message "\"Device\" was not found.".
422Faltan parámetros, formato de hora inválido, rango > 31 días o vehículo vencido.
500Error interno de la plataforma. Con la depuración apagada el texto del mensaje es genérico.
Campos de primer nivel de la respuesta 200
Campo (respuesta 200)TipoDescripción
itemsarray de HistoryItem
deviceobjectVehículo consultado, con sus sensores.
distance_sumstringCon unidad: "9.2 Km".
top_speedstring"31 kph".
move_durationstring
stop_durationstring
engine_hoursstring
engine_idlestring
engine_workstring
fuel_consumptionstring | null
sensorsarray de object
fuel_consumption_arrarray de
item_classarray de object
imagesarray de object
status
Ejemplo de respuesta 200 (datos ficticios)
JSON
{
  "items": [
    {
      "status": 3,
      "time": null,
      "show": "01-10-2026 08:00:00",
      "raw_time": "2026-10-01 08:00:00",
      "distance": 0,
      "driver": null,
      "items": [
        {
          "id": 500,
          "device_id": 9001,
          "item_id": "i500",
          "time": "01-10-2026 08:00:00",
          "raw_time": "2026-10-01 08:00:00",
          "altitude": 400,
          "course": 90,
          "speed": 27,
          "latitude": -17.78,
          "longitude": -63.18,
          "lat": -17.78,
          "lng": -63.18,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:00:00",
          "server_time": "2026-10-01 12:00:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 27
            },
            {
              "id": "altitude",
              "value": 400
            }
          ]
        }
      ]
    },
    {
      "status": 1,
      "index": 1,
      "time": "40min 0s",
      "show": "01-10-2026 08:00:00",
      "left": "01-10-2026 08:40:00",
      "raw_time": "2026-10-01 08:00:00",
      "distance": 2.91,
      "time_seconds": 2400,
      "engine_work": 2280,
      "engine_idle": 0,
      "engine_hours": 2280,
      "fuel_consumption": null,
      "top_speed": 27,
      "average_speed": 27,
      "driver": null,
      "items": [
        {
          "id": 500,
          "device_id": 9001,
          "item_id": "i500",
          "time": "01-10-2026 08:00:00",
          "raw_time": "2026-10-01 08:00:00",
          "altitude": 400,
          "course": 90,
          "speed": 27,
          "latitude": -17.78,
          "longitude": -63.18,
          "lat": -17.78,
          "lng": -63.18,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:00:00",
          "server_time": "2026-10-01 12:00:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 27
            },
            {
              "id": "altitude",
              "value": 400
            }
          ]
        },
        {
          "id": 501,
          "device_id": 9001,
          "item_id": "i501",
          "time": "01-10-2026 08:02:00",
          "raw_time": "2026-10-01 08:02:00",
          "altitude": 401,
          "course": 90,
          "speed": 27,
          "latitude": -17.779,
          "longitude": -63.179,
          "lat": -17.779,
          "lng": -63.179,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:02:00",
          "server_time": "2026-10-01 12:02:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 27
            },
            {
              "id": "altitude",
              "value": 401
            }
          ]
        },
        {
          "id": 502,
          "device_id": 9001,
          "item_id": "i502",
          "time": "01-10-2026 08:04:00",
          "raw_time": "2026-10-01 08:04:00",
          "altitude": 402,
          "course": 90,
          "speed": 27,
          "latitude": -17.778000000000002,
          "longitude": -63.178,
          "lat": -17.778000000000002,
          "lng": -63.178,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:04:00",
          "server_time": "2026-10-01 12:04:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 27
            },
            {
              "id": "altitude",
              "value": 402
            }
          ]
        },
        {
          "id": 503,
          "device_id": 9001,
          "item_id": "i503",
          "time": "01-10-2026 08:06:00",
          "raw_time": "2026-10-01 08:06:00",
          "altitude": 403,
          "course": 90,
          "speed": 27,
          "latitude": -17.777,
          "longitude": -63.177,
          "lat": -17.777,
          "lng": -63.177,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:06:00",
          "server_time": "2026-10-01 12:06:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 27
            },
            {
              "id": "altitude",
              "value": 403
            }
          ]
        },
        {
          "id": 504,
          "device_id": 9001,
          "item_id": "i504",
          "time": "01-10-2026 08:08:00",
          "raw_time": "2026-10-01 08:08:00",
          "altitude": 404,
          "course": 90,
          "speed": 27,
          "latitude": -17.776,
          "longitude": -63.176,
          "lat": -17.776,
          "lng": -63.176,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:08:00",
          "server_time": "2026-10-01 12:08:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 27
            },
            {
              "id": "altitude",
              "value": 404
            }
          ]
        }
      ]
    },
    {
      "status": 2,
      "index": 1,
      "time": "30min 0s",
      "show": "01-10-2026 08:40:00",
      "left": "01-10-2026 09:10:00",
      "raw_time": "2026-10-01 08:40:00",
      "distance": 0,
      "time_seconds": 1800,
      "engine_work": 0,
      "engine_idle": 0,
      "engine_hours": 0,
      "fuel_consumption": null,
      "top_speed": 0,
      "average_speed": 0,
      "driver": null,
      "items": [
        {
          "id": 520,
          "device_id": 9001,
          "item_id": "i520",
          "time": "01-10-2026 08:40:00",
          "raw_time": "2026-10-01 08:40:00",
          "altitude": 420,
          "course": 90,
          "speed": 0,
          "latitude": -17.76,
          "longitude": -63.16,
          "lat": -17.76,
          "lng": -63.16,
          "distance": 0,
          "other": "<info><ignition>0</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:40:00",
          "server_time": "2026-10-01 12:40:00",
          "other_arr": [
            "ignition: 0"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 0
            },
            {
              "id": "altitude",
              "value": 420
            }
          ]
        },
        {
          "id": 521,
          "device_id": 9001,
          "item_id": "i521",
          "time": "01-10-2026 08:42:00",
          "raw_time": "2026-10-01 08:42:00",
          "altitude": 421,
          "course": 90,
          "speed": 0,
          "latitude": -17.759,
          "longitude": -63.159,
          "lat": -17.759,
          "lng": -63.159,
          "distance": 0,
          "other": "<info><ignition>0</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:42:00",
          "server_time": "2026-10-01 12:42:00",
          "other_arr": [
            "ignition: 0"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 0
            },
            {
              "id": "altitude",
              "value": 421
            }
          ]
        },
        {
          "id": 522,
          "device_id": 9001,
          "item_id": "i522",
          "time": "01-10-2026 08:44:00",
          "raw_time": "2026-10-01 08:44:00",
          "altitude": 422,
          "course": 90,
          "speed": 0,
          "latitude": -17.758000000000003,
          "longitude": -63.158,
          "lat": -17.758000000000003,
          "lng": -63.158,
          "distance": 0,
          "other": "<info><ignition>0</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 12:44:00",
          "server_time": "2026-10-01 12:44:00",
          "other_arr": [
            "ignition: 0"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 0
            },
            {
              "id": "altitude",
              "value": 422
            }
          ]
        }
      ]
    },
    {
      "status": 1,
      "index": 2,
      "time": "48min 0s",
      "show": "01-10-2026 09:10:00",
      "left": "01-10-2026 09:58:00",
      "raw_time": "2026-10-01 09:10:00",
      "distance": 6.29,
      "time_seconds": 2880,
      "engine_work": 2880,
      "engine_idle": 0,
      "engine_hours": 2880,
      "fuel_consumption": null,
      "top_speed": 31,
      "average_speed": 29,
      "driver": null,
      "items": [
        {
          "id": 535,
          "device_id": 9001,
          "item_id": "i535",
          "time": "01-10-2026 09:10:00",
          "raw_time": "2026-10-01 09:10:00",
          "altitude": 435,
          "course": 90,
          "speed": 31,
          "latitude": -17.745,
          "longitude": -63.145,
          "lat": -17.745,
          "lng": -63.145,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 13:10:00",
          "server_time": "2026-10-01 13:10:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 31
            },
            {
              "id": "altitude",
              "value": 435
            }
          ]
        },
        {
          "id": 536,
          "device_id": 9001,
          "item_id": "i536",
          "time": "01-10-2026 09:12:00",
          "raw_time": "2026-10-01 09:12:00",
          "altitude": 436,
          "course": 90,
          "speed": 31,
          "latitude": -17.744,
          "longitude": -63.144,
          "lat": -17.744,
          "lng": -63.144,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 13:12:00",
          "server_time": "2026-10-01 13:12:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 31
            },
            {
              "id": "altitude",
              "value": 436
            }
          ]
        },
        {
          "id": 537,
          "device_id": 9001,
          "item_id": "i537",
          "time": "01-10-2026 09:14:00",
          "raw_time": "2026-10-01 09:14:00",
          "altitude": 437,
          "course": 90,
          "speed": 31,
          "latitude": -17.743000000000002,
          "longitude": -63.143,
          "lat": -17.743000000000002,
          "lng": -63.143,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 13:14:00",
          "server_time": "2026-10-01 13:14:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 31
            },
            {
              "id": "altitude",
              "value": 437
            }
          ]
        },
        {
          "id": 538,
          "device_id": 9001,
          "item_id": "i538",
          "time": "01-10-2026 09:16:00",
          "raw_time": "2026-10-01 09:16:00",
          "altitude": 438,
          "course": 90,
          "speed": 31,
          "latitude": -17.742,
          "longitude": -63.142,
          "lat": -17.742,
          "lng": -63.142,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 13:16:00",
          "server_time": "2026-10-01 13:16:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 31
            },
            {
              "id": "altitude",
              "value": 438
            }
          ]
        }
      ]
    },
    {
      "status": 4,
      "time": null,
      "show": "01-10-2026 09:58:00",
      "raw_time": "2026-10-01 09:58:00",
      "distance": 0,
      "driver": null,
      "items": [
        {
          "id": 538,
          "device_id": 9001,
          "item_id": "i538",
          "time": "01-10-2026 09:16:00",
          "raw_time": "2026-10-01 09:16:00",
          "altitude": 438,
          "course": 90,
          "speed": 31,
          "latitude": -17.742,
          "longitude": -63.142,
          "lat": -17.742,
          "lng": -63.142,
          "distance": 0.12,
          "other": "<info><ignition>1</ignition></info>",
          "color": "#000000",
          "valid": 1,
          "device_time": "2026-10-01 13:16:00",
          "server_time": "2026-10-01 13:16:00",
          "other_arr": [
            "ignition: 1"
          ],
          "sensors_data": [
            {
              "id": "speed",
              "value": 31
            },
            {
              "id": "altitude",
              "value": 438
            }
          ]
        }
      ]
    }
  ],
  "device": {
    "id": 9001,
    "name": "Camioneta de prueba 01",
    "imei": "999000000000001",
    "plate_number": "TEST-001",
    "sensors": [],
    "traccar": {}
  },
  "distance_sum": "9.2 Km",
  "top_speed": "31 kph",
  "move_duration": "1h 28min 0s",
  "stop_duration": "30min 0s",
  "engine_hours": "1h 28min 0s",
  "engine_idle": "0s",
  "engine_work": "1h 28min 0s",
  "fuel_consumption": null,
  "sensors": [
    {
      "id": "speed",
      "name": "Speed",
      "sufix": "kph"
    },
    {
      "id": "altitude",
      "name": "Altitude",
      "sufix": "m"
    }
  ],
  "fuel_consumption_arr": [],
  "item_class": [
    {
      "id": 1,
      "value": "drive",
      "title": "Drive"
    },
    {
      "id": 2,
      "value": "stop",
      "title": "Stop"
    },
    {
      "id": 3,
      "value": "start",
      "title": "Start"
    },
    {
      "id": 4,
      "value": "end",
      "title": "End"
    },
    {
      "id": 5,
      "value": "event",
      "title": "Event"
    }
  ],
  "images": [
    {
      "id": 1,
      "value": "https://example.invalid/assets/images/route_drive.png",
      "title": "https://example.invalid/assets/images/route_drive.png"
    }
  ],
  "status": 1
}

Verificación

Estado: Verificado. Revisado el 5 de octubre de 2026. Ruta confirmada en producción y archivos del flujo idénticos a los verificados (comparación por huella y diff). La forma de la respuesta se midió con datos ficticios en un entorno de pruebas; no se probó con una cuenta real de producción.

Posiciones GPS crudas paginadas #

GET /api/get_history_messages Verificado

Lista las posiciones almacenadas de un vehículo en el rango dado, paginadas. limit solo admite 50, 100, 200, 300, 400, 500 o 1000; cualquier otro valor se sustituye por 50 sin avisar. sorting=true ordena de la más reciente a la más antigua. A diferencia de get_history, no aplica el límite de 31 días y exige device_id (no acepta imei).

Autenticación. Cabecera user-api-hash con tu user_api_hash.

  • Aunque este endpoint no limita el rango, conviene consultar por tramos de hasta 31 días, igual que get_history.

Parámetros

Parámetros de /api/get_history_messages
NombreEnTipoObligatorioDescripción
device_idqueryintegerSíID del vehículo (campo id de get_devices).
from_datequerystringSíFecha inicial YYYY-MM-DD. Zona horaria: la de la cuenta del usuario de la API, no UTC. Formato de visualización: el configurado en la cuenta (en las mediciones fue dd-mm-YYYY HH:mm:ss).
from_timequerystringSíHora inicial HH:MM o HH:MM:SS (validación: regex).
to_datequerystringSíFecha final YYYY-MM-DD.
to_timequerystringSíHora final HH:MM o HH:MM:SS.
limitqueryinteger (50, 100, 200, 300, 400, 500, 1000)NoTamaño de página (valor distinto -> 50).
pagequeryintegerNoNúmero de página.
sortingquerystring ("true")Notrue = descendente.
langquerystringNoIdioma de los textos traducibles (SetLang). También se admite la cabecera Accept-Language.

Ejemplo de solicitud

cURL

cURL
curl -sS -G "https://plataforma.trackerintl.com/api/get_history_messages" \
  -H "user-api-hash: TU_API_HASH" \
  --data-urlencode "device_id=9001" \
  --data-urlencode "from_date=2026-10-01" \
  --data-urlencode "from_time=00:00" \
  --data-urlencode "to_date=2026-10-02" \
  --data-urlencode "to_time=23:59" \
  --data-urlencode "limit=100" \
  --data-urlencode "page=1"

JavaScript · Node.js 22

JavaScript
const BASE_URL = "https://plataforma.trackerintl.com";
const API_HASH = "TU_API_HASH";

const params = new URLSearchParams({
  device_id: "9001",
  from_date: "2026-10-01",
  from_time: "00:00",
  to_date: "2026-10-02",
  to_time: "23:59",
  limit: "100",
  page: "1",
});
const respuesta = await fetch(`${BASE_URL}/api/get_history_messages?${params}`, {
  headers: { "user-api-hash": API_HASH },
});
if (!respuesta.ok) throw new Error(`HTTP ${respuesta.status}: ${await respuesta.text()}`);
console.log(JSON.stringify(await respuesta.json(), null, 2));

Python · Python 3 con requests

Python
import json
import requests

BASE_URL = "https://plataforma.trackerintl.com"
API_HASH = "TU_API_HASH"

respuesta = requests.get(
    f"{BASE_URL}/api/get_history_messages",
    headers={"user-api-hash": API_HASH},
    params={"device_id": "9001", "from_date": "2026-10-01", "from_time": "00:00", "to_date": "2026-10-02", "to_time": "23:59", "limit": "100", "page": "1"},
    timeout=30,
)
respuesta.raise_for_status()
print(json.dumps(respuesta.json(), indent=2, ensure_ascii=False))

PHP · PHP 8 con cURL

PHP
<?php
$baseUrl = "https://plataforma.trackerintl.com";
$apiHash = "TU_API_HASH";

$url = $baseUrl . "/api/get_history_messages?" . http_build_query(["device_id" => "9001", "from_date" => "2026-10-01", "from_time" => "00:00", "to_date" => "2026-10-02", "to_time" => "23:59", "limit" => "100", "page" => "1"]);
$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => ["user-api-hash: " . $apiHash],
]);
$cuerpo = curl_exec($ch);
$codigo = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
if ($cuerpo === false || $codigo !== 200) {
    fwrite(STDERR, "HTTP $codigo\n");
    exit(1);
}
echo json_encode(json_decode($cuerpo, true), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), "\n";

Respuestas

Respuestas de /api/get_history_messages
CódigoDescripción
200Respuesta correcta.
401Hash ausente o incorrecto, usuario inactivo, suscripción vencida (también la del gerente) o API deshabilitada por falta de pago del servidor. HTTP 401 con {status: 0, message}.
403Sin permiso del rol para el módulo, vehículo de otro usuario o cuenta restringida por facturación. Incluye perm: 0.
404Dispositivo inexistente.
422Faltan device_id o fechas.
500Error interno de la plataforma. Con la depuración apagada el texto del mensaje es genérico.
Campos de primer nivel de la respuesta 200
Campo (respuesta 200)TipoDescripción
messagesPaginator + object
sensorsarray de object
pagination_limitsobject
limitinteger
sortingstring ("asc", "desc")
parametersobject
status
Ejemplo de respuesta 200 (datos ficticios)
JSON
{
  "messages": {
    "current_page": 1,
    "data": [
      {
        "id": 1000,
        "altitude": 400,
        "course": 90,
        "latitude": -17.78,
        "longitude": -63.18,
        "other": "<info><ignition>1</ignition><totaldistance>1000</totaldistance></info>",
        "speed": "27.00",
        "time": "01-10-2026 08:00:00",
        "device_time": "2026-10-01 12:00:00",
        "server_time": "01-10-2026 08:00:00",
        "sensors_values": null,
        "valid": 1,
        "distance": 120,
        "protocol": "gt06",
        "device_id": 9001,
        "other_arr": [
          "ignition: 1",
          "totaldistance: 1000"
        ],
        "other_array": {
          "ignition": "1",
          "totaldistance": "1000"
        },
        "popup_sensors": {
          "70001": {
            "name": "Bateria",
            "value": "87 %"
          }
        },
        "sensors_value": {
          "70001": "87 %"
        }
      },
      {
        "id": 1001,
        "altitude": 401,
        "course": 90,
        "latitude": -17.779,
        "longitude": -63.179,
        "other": "<info><ignition>1</ignition><totaldistance>1000</totaldistance></info>",
        "speed": "27.00",
        "time": "01-10-2026 08:01:00",
        "device_time": "2026-10-01 12:01:00",
        "server_time": "01-10-2026 08:01:00",
        "sensors_values": null,
        "valid": 1,
        "distance": 120,
        "protocol": "gt06",
        "device_id": 9001,
        "other_arr": [
          "ignition: 1",
          "totaldistance: 1000"
        ],
        "other_array": {
          "ignition": "1",
          "totaldistance": "1000"
        },
        "popup_sensors": {
          "70001": {
            "name": "Bateria",
            "value": "87 %"
          }
        },
        "sensors_value": {
          "70001": "87 %"
        }
      }
    ],
    "first_page_url": "https://plataforma.example.invalid/api/get_history_messages?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "https://plataforma.example.invalid/api/get_history_messages?page=3",
    "links": [],
    "next_page_url": "https://plataforma.example.invalid/api/get_history_messages?page=2",
    "path": "https://plataforma.example.invalid/api/get_history_messages",
    "per_page": 50,
    "prev_page_url": null,
    "to": 2,
    "total": 120,
    "url": "https://plataforma.example.invalid/api/get_history_messages"
  },
  "sensors": [],
  "pagination_limits": {
    "50": 50,
    "100": 100,
    "200": 200,
    "300": 300,
    "400": 400,
    "500": 500,
    "1000": 1000
  },
  "limit": 50,
  "sorting": "asc",
  "parameters": {
    "ignition": "",
    "totaldistance": ""
  },
  "status": 1
}

Verificación

Estado: Verificado. Revisado el 5 de octubre de 2026. Ruta confirmada en producción y archivos del flujo idénticos a los verificados (comparación por huella y diff). La forma de la respuesta se midió con datos ficticios en un entorno de pruebas; no se probó con una cuenta real de producción.