Referencia para desarrolladores

API de Track Center

Consultá los vehículos, la última posición, los recorridos y los eventos de las flotas monitoreadas por Track Center. Es una API REST de solo lectura que responde JSON.

URL base https://api.trackcenter.com.ar Versión v1 Hora UTC−03:00

Primeros pasos

Track Center te entrega una clave de acceso (empieza con tc_live_). Cada clave tiene asignados los clientes que puede ver y lo que puede consultar. Probala con /v1/estado, que te dice exactamente eso:

curl https://api.trackcenter.com.ar/v1/estado \
  -H "Authorization: Bearer tc_live_TU_CLAVE"

Un recorrido típico de una integración:

  • GET /v1/vehiculos una vez al día (o al arrancar) para tener la flota y sus ids.
  • GET /v1/posiciones cada 30 a 60 segundos para el mapa en vivo.
  • GET /v1/eventos?desde=… cada pocos minutos, pidiendo desde el último evento recibido.
  • GET /v1/vehiculos/{id}/recorrido cuando alguien quiere ver por dónde anduvo un vehículo.

Autenticación

Mandá la clave en cada consulta, en el encabezado Authorization:

Encabezado
Authorization: Bearer tc_live_TU_CLAVE

También se acepta el encabezado X-Api-Key: tc_live_TU_CLAVE. La clave nunca va en la URL.

La clave es un secreto. Usala solo desde tu servidor. Si la ponés en una página web o en una app de celular, cualquiera puede leerla. Si se filtra, pedile a Track Center que la rote: la anterior deja de funcionar en el acto.

Una clave puede estar limitada a ciertas IPs, tener fecha de vencimiento o estar pausada. En esos casos la API responde 401 o 403 con un código que explica el motivo (ver Errores).

Convenciones

Respuestas

Todas las respuestas exitosas traen los datos en datos. Las listas suman cantidad:

{ "datos": [ … ], "cantidad": 12 }

Identificadores

Vehículos, clientes y eventos tienen ids propios con prefijo: veh_3f9a1c7b2d4e, cli_51b0a9e2c4d7, evt_9c1e5a77b02f4d6e8a13. Son estables: guardalos en tu sistema. No uses la patente como clave, porque puede cambiar o faltar.

Fechas y horas

Todas las fechas están en hora de Argentina, en ISO 8601 con el huso explícito: 2026-10-06T15:04:05-03:00. En los parámetros desde y hasta podés mandar:

FormatoSe interpreta como
2026-10-06T10:00:00-03:00Exactamente esa hora (cualquier huso, o Z para UTC)
2026-10-06T10:0010:00 hora de Argentina
2026-10-0600:00 de ese día, hora de Argentina

Unidades

El nombre del campo dice la unidad: velocidad_kmh (km/h), odometro_km, distancia_km, tension_alimentacion_v (voltios), temperatura_c (°C). rumbo va en grados de 0 a 359 desde el norte. Las coordenadas son WGS84 con 6 decimales.

Datos faltantes

Si un equipo no informa un dato (temperatura, tensión, conductor), el campo viene en null. El campo siempre está presente.

Límites

Cada clave tiene un presupuesto de unidades por minuto (120 por defecto). Las consultas livianas cuestan 1 unidad; las de historia (/recorrido y /eventos) cuestan 5.

EncabezadoQué indica
X-RateLimit-LimitUnidades por minuto de tu clave
X-RateLimit-RemainingUnidades que te quedan en el minuto actual
Retry-AfterSolo en un 429: segundos a esperar antes de reintentar
  • Recorridos y eventos: hasta 7 días por consulta, dentro de los últimos 90 días. Para períodos más largos, pedilos en partes.
  • Eventos: hasta 500 vehículos por consulta (filtrá por cliente o vehiculos).
  • Las posiciones se actualizan cada 10 a 30 segundos. Consultar más seguido no trae datos más nuevos.

Errores

Los errores responden con el código HTTP correspondiente y este cuerpo:

{
  "error": {
    "codigo": "rango_invalido",
    "mensaje": "El rango no puede superar 7 días por consulta. Pedilo en partes.",
    "solicitud": "64ba9f08-19e9-40e0-af47-2b30e03920d2"
  }
}

Programá contra codigo, que no cambia; mensaje es para personas. Si consultás a Track Center por un error, mandá el id de solicitud.

HTTPcodigoCuándo
400parametro_invalidoUn parámetro no tiene el formato esperado (una fecha, un tipo de evento).
400rango_invalidodesde es posterior a hasta, el rango supera 7 días o empieza hace más de 90.
400demasiados_vehiculosLa consulta de eventos abarca más de 500 vehículos.
401no_autenticadoFalta el encabezado Authorization.
401clave_invalidaLa clave no existe o está mal copiada.
401clave_vencidaLa clave pasó su fecha de vencimiento.
401clave_revocadaLa clave fue dada de baja (por ejemplo, al rotarla).
403clave_pausadaLa clave está suspendida temporalmente.
403ip_no_autorizadaLa clave solo se puede usar desde ciertas IPs.
403sin_permisoLa clave no tiene el permiso que pide esa ruta.
404vehiculo_inexistenteEl vehículo no existe o tu clave no lo ve.
404cliente_inexistenteEl cliente no existe o tu clave no lo ve.
404sin_posicionEl vehículo todavía no informó ninguna posición.
404ruta_inexistenteLa ruta no existe.
405metodo_no_permitidoSe usó un método distinto de GET.
429demasiadas_solicitudesSe superó el límite por minuto de la clave, o hay demasiadas consultas de historia en curso para esos vehículos. Esperá lo que indica Retry-After.
429demasiados_intentosDemasiadas claves inválidas desde tu IP. Esperá 10 minutos.
501no_disponibleEsa consulta no está disponible para ese vehículo.
503servicio_no_disponibleEl servicio de posicionamiento no respondió. Reintentá en unos minutos.
500error_internoError inesperado. Avisá a Track Center con el id de solicitud.

Buenas prácticas

  • Mirá la frescura del dato. Cada posición trae fecha (hora del GPS) y actualizado (cuándo la obtuvimos). Un vehículo en un galpón puede seguir en_linea con una fecha vieja: perdió la señal satelital pero el equipo sigue comunicándose.
  • Deduplicá eventos por id. Pedir rangos que se solapan es seguro: el mismo evento trae siempre el mismo id.
  • Reintentá con espera. Ante un 503 o un 429, esperá y reintentá: 5 s, 15 s, 60 s.
  • Cacheá lo que cambia poco. La lista de vehículos y el catálogo de eventos cambian muy de vez en cuando.

Endpoints

Todas las rutas son GET y van debajo de https://api.trackcenter.com.ar. Las que necesitan un permiso lo indican; listar vehículos y clientes funciona con cualquier clave.

GET/v1/estado

Estado de la clave

Qué ve tu clave, con qué permisos y hasta cuándo. Útil para validar la configuración al arrancar.

Respuesta 200
{
  "datos": {
    "acceso": {
      "nombre": "Integración Transporte Ejemplo",
      "permisos": ["posiciones", "recorridos", "eventos"],
      "clientes": [{ "id": "cli_51b0a9e2c4d7", "nombre": "Transporte Ejemplo" }],
      "limite_por_minuto": 120,
      "vence": null
    },
    "servicio": { "estado": "ok", "hora": "2026-10-06T15:28:07-03:00" }
  }
}
GET/v1/clientes

Clientes

Los clientes (empresas o personas dueñas de la flota) que ve tu clave, con su cantidad de vehículos.

Respuesta 200
{ "datos": [{ "id": "cli_51b0a9e2c4d7", "nombre": "Transporte Ejemplo", "vehiculos": 14 }], "cantidad": 1 }
GET/v1/vehiculos
GET/v1/vehiculos/{id}

Vehículos

La flota que ve tu clave. Ver el objeto Vehículo.

ParámetroTipoDescripción
clientestringSolo los vehículos de ese cliente (cli_…).
vehiculosstringSolo esos vehículos: ids separados por coma.
Respuesta 200
{
  "datos": [{
    "id": "veh_3f9a1c7b2d4e",
    "patente": "AB123CD",
    "nombre": "AB123CD",
    "cliente": { "id": "cli_51b0a9e2c4d7", "nombre": "Transporte Ejemplo" },
    "equipo": { "tipo": "gps", "modelo": "Track GPS" },
    "conductor": "Juan Pérez"
  }],
  "cantidad": 1
}
GET/v1/posicionespermiso posiciones
GET/v1/vehiculos/{id}/posicionpermiso posiciones

Última posición

La última posición conocida de cada vehículo. La lista incluye solo los vehículos que informaron alguna posición; sin_posicion cuenta los que todavía no. Acepta los mismos filtros que /v1/vehiculos. Ver el objeto Posición.

Respuesta 200
{
  "datos": [{
    "vehiculo": "veh_3f9a1c7b2d4e",
    "patente": "AB123CD",
    "fecha": "2026-10-06T15:04:05-03:00",
    "latitud": -33.895214,
    "longitud": -60.573198,
    "velocidad_kmh": 72,
    "rumbo": 184,
    "encendido": true,
    "en_linea": true,
    "ultima_comunicacion": "2026-10-06T15:04:20-03:00",
    "odometro_km": 152340.7,
    "tension_alimentacion_v": 27.6,
    "temperatura_c": null,
    "actualizado": "2026-10-06T15:04:31-03:00"
  }],
  "cantidad": 1,
  "sin_posicion": 0
}
GET/v1/vehiculos/{id}/recorridopermiso recorridos

Recorrido

Los puntos por donde pasó un vehículo, ordenados por hora, y la distancia recorrida. Hasta 7 días por consulta dentro de los últimos 90. Cuesta 5 unidades.

ParámetroTipoDescripción
desdefechaInicio. Por defecto, 24 horas antes de hasta.
hastafechaFin. Por defecto, ahora.
Ejemplo
curl "https://api.trackcenter.com.ar/v1/vehiculos/veh_3f9a1c7b2d4e/recorrido?desde=2026-10-06T06:00&hasta=2026-10-06T18:00" \
  -H "Authorization: Bearer tc_live_TU_CLAVE"
Respuesta 200
{
  "datos": {
    "vehiculo": "veh_3f9a1c7b2d4e",
    "patente": "AB123CD",
    "desde": "2026-10-06T06:00:00-03:00",
    "hasta": "2026-10-06T18:00:00-03:00",
    "distancia_km": 412.6,
    "cantidad_puntos": 1874,
    "puntos": [
      { "fecha": "2026-10-06T06:02:11-03:00", "latitud": -33.895214, "longitud": -60.573198,
        "velocidad_kmh": 0, "rumbo": 0, "encendido": true, "origen": "gps" },
      …
    ]
  }
}

origen indica cómo se ubicó el punto: gps, red_celular (aproximado, por antenas) o wifi. La distancia se calcula solo con los puntos de GPS.

GET/v1/eventospermiso eventos
GET/v1/vehiculos/{id}/eventospermiso eventos

Eventos

Alarmas y sucesos informados por los equipos (pánico, puertas, corte de combustible, encendido, excesos, etc.), en orden cronológico. Hasta 7 días por consulta dentro de los últimos 90. Cuesta 5 unidades. Ver tipos de evento.

ParámetroTipoDescripción
desdefechaInicio. Por defecto, 24 horas antes de hasta.
hastafechaFin. Por defecto, ahora.
tiposstringSolo esos tipos, separados por coma: panico,puerta_abierta.
clientestringSolo /v1/eventos: los de ese cliente.
vehiculosstringSolo /v1/eventos: los de esos vehículos.
Respuesta 200
{
  "datos": [{
    "id": "evt_9c1e5a77b02f4d6e8a13",
    "vehiculo": "veh_3f9a1c7b2d4e",
    "patente": "AB123CD",
    "tipo": "panico",
    "categoria": "seguridad",
    "descripcion": "Botón de pánico",
    "fecha": "2026-10-06T03:12:44-03:00",
    "latitud": -34.60372,
    "longitud": -58.38159,
    "velocidad_kmh": 0
  }],
  "cantidad": 1,
  "desde": "2026-10-05T15:00:00-03:00",
  "hasta": "2026-10-06T15:00:00-03:00"
}

Para seguir los eventos casi en vivo, consultá cada 2 a 5 minutos con desde igual a la fecha del último evento recibido menos un minuto, y descartá los id que ya tenés.

Objetos

Vehículo

CampoTipoDescripción
idstringId estable del vehículo (veh_…).
patentestring · nullDominio en mayúsculas, sin espacios ni guiones. null si no está cargado.
nombrestring · nullNombre para mostrar (alias o patente).
clienteobjetoid y nombre del cliente dueño de la flota.
equipoobjetotipo (gps o camara) y modelo comercial.
conductorstring · nullConductor asignado, si está cargado.

Posición

CampoTipoDescripción
vehiculostringId del vehículo.
patentestring · nullPara mostrar; usá vehiculo como clave.
fechafechaHora del GPS en que se tomó la posición.
latitud, longitudnúmeroWGS84, 6 decimales.
velocidad_kmhentero · nullVelocidad en km/h.
rumboentero · null0 a 359 grados desde el norte.
encendidobooleano · nullMotor (contacto) encendido.
en_lineabooleano · nullEl equipo se está comunicando ahora.
ultima_comunicacionfecha · nullÚltimo contacto del equipo, aunque no tenga posición nueva.
odometro_kmnúmero · nullKilometraje acumulado según el equipo.
tension_alimentacion_vnúmero · nullTensión de la batería del vehículo, en voltios.
temperatura_cnúmero · nullSensor de temperatura (equipos de frío).
actualizadofechaCuándo Track Center obtuvo este dato.

Evento

CampoTipoDescripción
idstringId estable (evt_…): el mismo evento siempre trae el mismo id.
vehiculo, patentestringVehículo que lo informó.
tipostringUno de los tipos de evento.
categoria, descripcionstringPara agrupar y mostrar.
fechafechaCuándo ocurrió.
latitud, longitud, velocidad_kmhnúmero · nullDónde y a qué velocidad, si el equipo lo informó.
entrada, sensorentero · stringSolo en entrada_activada y entrada_desactivada: qué entrada cambió y, si se sabe, qué tiene conectado (enganche_acoplado).

Especificación OpenAPI

La API está descripta en OpenAPI 3.1, para importarla en Postman o Insomnia, o para generar un cliente en tu lenguaje.

Novedades

VersiónFechaCambios
1.0.0Octubre 2026Primera versión: vehículos, clientes, última posición, recorridos y eventos.

Los cambios dentro de v1 solo agregan campos o rutas. Tu integración tiene que ignorar los campos que no conoce.