API REST

Integra el tracking GPS de tu flota a tu propia plataforma, ERP o app móvil. Bearer auth, rate-limit 60 req/min, scopes granulares.

Latencia < 200ms HTTPS · TLS 1.3 JSON · REST

Quick start

  1. 1
    Genera un token. Entra a tu dashboard → /dashboard/configuracion/api-tokens y crea uno con los scopes que necesites.
  2. 2
    Manda el token en el header Authorization:
    curl https://systecgps.mx/api/public/v1/devices \
      -H "Authorization: Bearer sk_live_..."
  3. 3
    Listo. Las respuestas son JSON. Errores siguen formato { error: "..." } con HTTP status apropiado.

Autenticación

Toda petición lleva un header Authorization: Bearer <TOKEN>. Los tokens NO expiran salvo que los revoques desde el dashboard. Cada token tiene un set de scopes:

    read

    Listar unidades, posiciones, alertas, eventos.

    write

    Crear/modificar metadatos (geocercas, conductores).

    commands

    Enviar comandos al GPS (locate, restart, etc).

Rate limits

EndpointLímiteHeaders
GET /devices, /devices/.../positions, /alerts60 req/minX-RateLimit-Remaining
POST /devices/.../locate10 req/minX-RateLimit-Remaining

Sobre el límite → HTTP 429 con header Retry-After en segundos.

Endpoints

GET/api/public/v1/devicesscope: read

Lista las unidades visibles con telemetría básica (lat, lng, speed, status, lastUpdate).

Respuesta ejemplo
{
  "data": [
    {
      "id": "12",
      "name": "SAVEIRO YN-310-A",
      "plate": "YN-310-A",
      "imei": "352093080123456",
      "status": "online",
      "speed": 45.2,
      "position": { "lat": 19.4326, "lng": -99.1332 },
      "lastUpdate": "2026-05-08T14:23:45Z"
    }
  ]
}
GET/api/public/v1/devices/{id}/positionsscope: read

Histórico de posiciones de una unidad. Query params: from, to (ISO 8601). Máx 90 días.

Respuesta ejemplo
{
  "data": [
    {
      "lat": 19.4326,
      "lng": -99.1332,
      "speed": 45.2,
      "heading": 180,
      "timestamp": "2026-05-08T14:23:45Z"
    }
  ]
}
POST/api/public/v1/devices/{id}/locatescope: commands

Solicita geolocalización inmediata de la unidad (envía comando al GPS por TCP).

Respuesta ejemplo
{
  "ok": true,
  "queued": true,
  "commandId": "abc-123"
}
GET/api/public/v1/alertsscope: read

Lista las alertas activas. Query: status (open|acknowledged), since (ISO).

Respuesta ejemplo
{
  "data": [
    {
      "id": 42,
      "type": "fuel_drop",
      "severity": "critical",
      "deviceId": "12",
      "message": "Caída de 15L en 2 min",
      "createdAt": "2026-05-08T13:50:11Z"
    }
  ]
}

Webhooks

Recibe eventos en tu propio servidor en lugar de hacer polling. Configura URLs en /dashboard/configuracion/webhooks. Eventos disponibles:

  • fuel_alert
  • fuel_alert_critical
  • sos
  • geofence_enter
  • geofence_exit
  • speeding
  • device_offline
  • device_online
  • custom_rule_triggered
  • maintenance_due

Cada payload se firma con HMAC-SHA256 en header X-Systec-Signature. Compatible con Slack y Discord (auto-formato Block Kit / embeds).

Códigos de estado

200OK
400Bad request — body o params inválidos
401Unauthorized — token ausente o inválido
403Forbidden — token no tiene el scope requerido
404Not found
429Rate limit excedido
500Error interno
502Backend Traccar no responde

¿Preguntas o necesitas algo que no aparece?

Hablar con soporte