Saltar al contenido principal

Reporte de Velocidad

Eventos de exceso de velocidad en tu flota — ubicación, velocidad, duración y datos opcionales de proximidad a radares.

GET/apidev/v1/reports/avl/speed
PermisoAPICLI_RPTAVL_VELOCIDAD
Límite de solicitudes10 req/min (ventana deslizante)
Caché300s (5 min)
Rango máximo31 días

Resumen

Identifica todos los casos en los que un vehículo superó un umbral de velocidad determinado. El reporte tiene dos modos: el modo agrupado (predeterminado) devuelve un registro por cada tramo de exceso de velocidad — de inicio a fin — mientras que detailed=true devuelve un registro por cada posición GPS dentro de los tramos.

  • Umbral personalizadospeed_threshold define el límite de velocidad para la detección (predeterminado 80 km/h)
  • Filtrado por duraciónduration_min excluye picos breves de velocidad
  • Modo detalladodetailed=true devuelve cada posición GPS del tramo en lugar del tramo completo
  • Enriquecimiento con radaresradars=true incluye puntos de interés de radares/cámaras de velocidad cercanos
  • Subtotalessubtotals=true para resúmenes agregados

Solicitud

Encabezados de la solicitud

Every request to a protected endpoint requires these headers:

HeaderRequiredDescription
AuthorizationYesBearer token obtained from the Login endpoint. Format: Bearer <token>
X-API-KeyYesCompany integration key provided during onboarding. Format: gtk_xxx...
tenantYesYour assigned tenant domain (default: geotareas.com) — always send your assigned tenant
Content-TypeConditionalapplication/json — required for POST and PUT requests

Parámetros de consulta

ParámetroTipoRequeridoPredeterminadoDescripción
startdatestringFecha-hora de inicio en ISO 8601 (ej. 2026-03-01T00:00:00)
enddatestringFecha-hora de fin en ISO 8601. Rango máximo 31 días
devicesstringNoTodos los visiblesIDs de dispositivo separados por coma. Máximo 500
speed_thresholdintegerNo80Umbral de velocidad en km/h (1300). Se reportan los eventos por encima de este valor
duration_minintegerNo0Duración mínima del exceso de velocidad en minutos. Los eventos más cortos se excluyen
subtotalsbooleanNofalseIncluye filas de subtotal
radarsbooleanNofalseIncluye datos de puntos de interés de radares/cámaras de velocidad cercanos
detailedbooleanNofalseModo detallado: devuelve un registro por posición GPS en lugar de un registro por tramo de exceso
limitintegerNo25Registros por página (1100)
offsetintegerNo0Registros a omitir

Ejemplos de código

curl -s "https://$TENANT/apidev/v1/reports/avl/speed?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&limit=50&speed_threshold=90" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Campos de la respuesta

La forma de la respuesta depende del parámetro detailed.

Modo agrupado (predeterminado)

Un registro por cada tramo de exceso de velocidad — el evento completo, desde que el vehículo supera el umbral hasta que vuelve a estar por debajo:

CampoTipoDescripción
device_namestringNombre visible del vehículo/dispositivo
person_namestringConductor asignado al momento del evento (cadena vacía si no hay)
addressstringDirección geocodificada inversa donde comienza el tramo
datetimestring | nullMarca de tiempo de inicio del tramo
speednumberVelocidad al inicio del tramo (km/h)
datetime_endstring | nullMarca de tiempo de fin del tramo
address_endstringDirección donde termina el tramo
speed_endnumberVelocidad al final del tramo (km/h)
duration_minnumberDuración del tramo en minutos
{
"success": true,
"data": [
{
"device_name": "Sedan C-310",
"person_name": "Ana Lopez",
"address": "Ruta 1 km 45, San Jose",
"datetime": "2026-03-07T14:22:15",
"speed": 96,
"datetime_end": "2026-03-07T14:43:01",
"address_end": "Ruta 1 km 78, Colonia",
"speed_end": 88,
"duration_min": 21
},
{
"device_name": "Truck A-101",
"person_name": "Carlos Martinez",
"address": "Av. Italia 2800, Montevideo",
"datetime": "2026-03-07T16:10:33",
"speed": 95,
"datetime_end": "2026-03-07T16:12:05",
"address_end": "Av. Italia 3400, Montevideo",
"speed_end": 91,
"duration_min": 2
}
],
"meta": {
"total": 23,
"limit": 50,
"offset": 0
}
}

Modo detallado (detailed=true)

Un registro por cada posición GPS dentro de los tramos de exceso — muchas más filas que el modo agrupado:

CampoTipoDescripción
device_namestringNombre visible del vehículo/dispositivo
person_namestringConductor asignado
addressstringDirección de la posición
datetimestring | nullMarca de tiempo de la posición
speednumberVelocidad en esa posición (km/h)
stepstringPosición dentro del tramo: COMIENZA / continua / FINALIZA
poisstringPuntos de interés de radares/cámaras de velocidad cercanos (cuando radars=true). Cadena vacía cuando está deshabilitado o no se encontraron puntos de interés
{
"success": true,
"data": [
{
"device_name": "Sedan C-310",
"person_name": "Ana Lopez",
"address": "Ruta 1 km 45, San Jose",
"datetime": "2026-03-07T14:22:15",
"speed": 96,
"step": "COMIENZA",
"pois": "Radar Km 44 (320m)"
},
{
"device_name": "Sedan C-310",
"person_name": "Ana Lopez",
"address": "Ruta 1 km 52, San Jose",
"datetime": "2026-03-07T14:27:40",
"speed": 102,
"step": "continua",
"pois": ""
},
{
"device_name": "Sedan C-310",
"person_name": "Ana Lopez",
"address": "Ruta 1 km 78, Colonia",
"datetime": "2026-03-07T14:43:01",
"speed": 88,
"step": "FINALIZA",
"pois": ""
}
],
"meta": {
"total": 112,
"limit": 50,
"offset": 0
}
}

Errores

CódigoHTTPDescripción
INVALID_DATE_RANGE400El rango de fechas supera el máximo de 31 días, el fin es anterior al inicio, o fechas no ISO
VALIDATION_ERROR400Parámetros inválidos: faltan fechas, speed_threshold fuera del rango 1–300, limit > 100
UNAUTHORIZED401tenant / Authorization / X-API-Key faltante, inválido o expirado
FORBIDDEN403El usuario carece del permiso APICLI_RPTAVL_VELOCIDAD
RATE_LIMITED429Se superaron las 10 req/min
INTERNAL_ERROR500Error inesperado del servidor