Für Entwickler

Trackingen API-Dokumentation

Lesen Sie Positionen, Fahrzeugdaten, Fahrten, Fehlercodes und Berichte Ihrer Flotte, und richten Sie ihre Fahrzeuge, Fahrer, Geofences und Warnregeln ein, aus Ihren eigenen Skripten und Produkten. Einfaches JSON über HTTPS, mit einem Schlüssel, den Sie selbst erstellen.

Auf dieser Seite

Hier beginnen

  1. 1

    Einen Schlüssel erstellen

    Öffnen Sie im Panel Verwaltung, dann API-Schlüssel, und erstellen Sie einen Schlüssel. Wählen Sie, was er lesen darf, was er ändern darf und wann er aufhört zu funktionieren. Sein Geheimnis erscheint nur einmal, bewahren Sie es sicher auf.

    API-Schlüssel öffnen
  2. 2

    Mit jeder Anfrage senden

    Senden Sie den Schlüssel im Header Authorization als Bearer-Token. Halten Sie ihn aus Webseiten und Apps heraus, die andere öffnen können.

    HTTP
    Authorization: Bearer $TRACKINGEN_API_KEY
  3. 3

    Die erste Frage stellen

    Listen Sie Ihre Fahrzeuge auf. Jedes kommt mit seiner ID, die die Routen zu einem Fahrzeug brauchen.

    Anfrage · curl
    curl "https://trackingen.com/api/v1/vehicles" \
      -H "Authorization: Bearer $TRACKINGEN_API_KEY"

Ein Schlüssel funktioniert, solange Ihre Organisation das API-Paket hat. Fragen Sie es auf der Seite Paket an.

Die ganze Referenz gibt es auch als OpenAPI-3.1-Dokument, das Ihre Werkzeuge lesen und aus dem sie einen Client erzeugen können.openapi.json öffnen

Antworten, Seiten und Ablehnungen

Jede Antwort ist ein JSON-Objekt mit dem Ergebnis in data.

200
{ "data": … }

Eine Liste kommt in Seiten und endet (keyset pagination): Jede Seite hat page.next, einen Cursor, den Sie unverändert zurückschicken und nie selbst bauen oder lesen (opaque cursor), und für die nächste Seite fragen Sie erneut mit after gleich diesem Wert. Auf der letzten Seite ist page.next null, und die Liste ist zu Ende. limit sagt, wie viele höchstens auf einer Seite kommen.

200
{
  "data": [ … ],
  "page": { "next": "MDE5OWIwMDAtMDAwMC03MDAwLTgwMDAtMDAwMDAwMDAwMDAy" }
}

Eine Kopie endet nie: Sie gibt, was nach ihrem Cursor empfangen wurde, in der Reihenfolge des Empfangs und sobald es eine Minute alt ist, sodass keine verspätete Meldung übersprungen wird. page.next ist immer die Stelle, an der es weitergeht; senden Sie es beim nächsten Mal als after, auch wenn die Seite leer war. page.more sagt, ob Sie sofort erneut fragen: true, solange noch mehr wartet, false, sobald Sie auf dem neuesten Stand sind; dann fragen Sie eine Minute oder später wieder. Ohne after beginnt eine Kopie 14 Tage zurück. Mit from an einem Moment der letzten 14 Tage zu beginnen, zählt gegen nichts; weiter zurück, innerhalb Ihrer aufbewahrten Daten, zählt es gegen 5 Starts am Tag für jeden Schlüssel und jede Person, beide Kopien zusammen. Ein Eintrag kann mehr als einmal kommen (at-least-once delivery), mit mehr Inhalt, also speichern Sie jeden nach deviceId und recordedAt.

200
{
  "data": [ … ],
  "page": { "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE", "more": true }
}

Eine Ablehnung hat ihren HTTP-Status und einen error mit einem gleichbleibenden Code, einer Nachricht für Menschen und bei manchen Codes details.

404
{
  "error": {
    "code": "NOT_FOUND",
    "message": "No such vehicle"
  }
}
  • Jeder Moment ist in UTC und in ISO 8601 geschrieben, etwa 2026-11-04T08:00:00.000Z.
  • Jede Route hat ihre Grenze (rate limiting): Eine Route zählt Ihre Anfragen in einem Zeitfenster, eine Kopie zählt stattdessen die Einträge, die sie durchgeht. Über der Grenze antwortet eine Route mit 429 und Retry-After, den Sekunden bis zum nächsten Versuch.
  • Eine Route, die etwas ändert, nimmt ihren Inhalt als JSON, gesendet mit Content-Type: application/json. Eine Route, die etwas anlegt, antwortet mit 201 und dem Angelegten und nimmt einen Header Idempotency-Key aus 8 bis 64 Buchstaben, Ziffern, Binde- oder Unterstrichen: Geht eine Antwort verloren, senden Sie dieselbe Anfrage mit demselben Schlüssel, und einen Tag lang erhalten Sie die erste Antwort zurück, markiert mit Idempotent-Replayed: true, statt eines zweiten Eintrags. Derselbe Schlüssel mit einem anderen Inhalt antwortet IDEMPOTENCY_KEY_REUSED. Eine Änderung setzt die Felder, die sie nennt, auf das Gesendete, also ändert ein erneutes Senden nichts weiter, und ein Löschen antwortet 204, danach 404, sobald der Eintrag weg ist. Jede Änderung zählt gegen ihre eigene Grenze für jeden Schlüssel und jede Person.
  • Version 1 hält ihr Wort: Eine Antwort kann Felder dazubekommen und eine Werteliste wachsen, aber nichts wird umbenannt oder entfernt. Überspringen Sie, was Sie nicht kennen, ein Feld ebenso wie einen Feed-Eintrag einer Art, die Sie noch nicht gesehen haben.

Routen

Fahrzeuge und Positionen

Ihre Fahrzeuge, wo jedes gerade ist, seine Spur in einem Zeitraum, eine Kopie jeder Position, sobald sie eintrifft, und die Tracker, die es hatte.

GET/api/v1/vehicles

Ihre Fahrzeuge

Ihre Fahrzeuge, jedes mit dem eingebauten Tracker, ob dieser Tracker das Fahrzeugkit hat, und mit der Hardware, die Ihr Paket noch braucht

Berechtigungen
vehicle:readFahrzeuge sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (opaque cursor)

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "label": "Delivery van",
      "vin": "VF1EXAMPLE0000001",
      "status": "active",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "kit": true,
      "missingCapabilities": []
    },
    {
      "id": "0199b000-0000-7000-8000-000000000002",
      "plate": "34 API 002",
      "label": null,
      "vin": null,
      "status": "active",
      "deviceId": null,
      "kit": false,
      "missingCapabilities": []
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

PATCH/api/v1/vehicles/{vehicleId}

Ein Fahrzeug bezeichnen

Gibt einem Fahrzeug eine eigene Bezeichnung oder nimmt sie weg; Kennzeichen, FIN und Tracker bleiben, wie die Plattform sie führt. Antwortet mit dem Fahrzeug, wie Ihre Fahrzeugliste es gibt, und der Feed nennt die Änderung vehicle-changed.

Berechtigungen
vehicle:labelFahrzeugbezeichnung ändern
vehicle:readFahrzeuge sehen
Paket
Jedes Paket
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

  • labelInhaltstringPflicht

    Ein Name, den Ihre Organisation dem Fahrzeug gibt, einfacher Text; null, um ihn wegzunehmen

Anfrage · curl
curl -X PATCH "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"Cold chain van"}'
Antwort · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000001",
    "plate": "34 API 001",
    "label": "Cold chain van",
    "vin": "VF1EXAMPLE0000001",
    "status": "active",
    "deviceId": "0199b000-0000-7000-8000-000000000401",
    "kit": true,
    "missingCapabilities": []
  }
}
Fehlercodes

GET/api/v1/vehicles/{vehicleId}/installations

Die Tracker eines Fahrzeugs im Lauf der Zeit

Jeder Einbau eines Trackers in das Fahrzeug, der älteste zuerst, und wann er wieder ausgebaut wurde; der noch eingebaute hat kein removedAt

Berechtigungen
vehicle:readFahrzeuge sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (ein undurchsichtiger Cursor)

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/installations" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000b01",
      "deviceId": "0199b000-0000-7000-8000-000000000402",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "installedAt": "2026-09-01T08:00:00.000Z",
      "removedAt": "2026-10-12T09:10:00.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000b02",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "installedAt": "2026-10-12T09:30:00.000Z",
      "removedAt": null
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

GET/api/v1/fleet/positions

Neueste Positionen

Die neueste Position jedes Fahrzeugs, null bis zu seiner ersten Meldung

Berechtigungen
position:readPositionen sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Anfrage · curl
curl "https://trackingen.com/api/v1/fleet/positions" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "label": "Delivery van",
      "position": {
        "recordedAt": "2026-11-04T08:41:12.000Z",
        "latitude": 41.068,
        "longitude": 29.011,
        "accuracyM": 4,
        "speedKmh": 52,
        "headingDeg": 87,
        "moving": true,
        "silentAt": "2026-11-04T08:56:12.000Z",
        "parkedSince": null
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000003",
      "plate": "34 API 003",
      "label": "Service car",
      "position": {
        "recordedAt": "2026-11-04T08:40:30.000Z",
        "latitude": 41.042,
        "longitude": 28.987,
        "accuracyM": 6,
        "speedKmh": 0,
        "headingDeg": null,
        "moving": false,
        "silentAt": "2026-11-04T08:55:30.000Z",
        "parkedSince": "2026-11-04T08:12:40.000Z"
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "plate": "34 API 002",
      "label": null,
      "position": null
    }
  ]
}
Fehlercodes

GET/api/v1/vehicles/{vehicleId}/track

Die Spur eines Fahrzeugs

Die Positionen eines Fahrzeugs von einem Moment zum anderen, höchstens sieben Tage

Berechtigungen
position:readPositionen sehen
Paket
Jedes Paket
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

  • fromAbfragedate-timePflicht

    Der erste Moment des Zeitraums

  • toAbfragedate-timePflicht

    Der letzte Moment des Zeitraums

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/track?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "latitude": 41.068,
      "longitude": 29.011,
      "accuracyM": 4,
      "speedKmh": 52,
      "headingDeg": 87,
      "moving": true
    }
  ]
}
Fehlercodes

GET/api/v1/positions

Positionen kopieren

Die Positionen jedes Fahrzeugs in der Reihenfolge ihres Empfangs, ab dem Ende Ihrer letzten Seite, sobald sie eine Minute alt sind

Berechtigungen
position:readPositionen sehen
Paket
Jedes Paket
Anfragegrenze
120.000 Einträge pro Minute
Parameter
  • afterAbfragestring

    Das page.next der vorigen Seite, um dort weiterzumachen, wo sie endete

  • fromAbfragedate-time

    Stattdessen hier eine neue Kopie beginnen. Innerhalb der letzten 14 Tage zählt das gegen nichts; weiter zurück, innerhalb Ihrer aufbewahrten Daten, zählt es gegen 5 Starts am Tag für jeden Schlüssel und jede Person

  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 1000Standard 1000

Anfrage · curl
curl "https://trackingen.com/api/v1/positions" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "serial": "EXAMPLE-0001",
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "receivedAt": "2026-11-04T08:41:44.000Z",
      "latitude": 41.068,
      "longitude": 29.011,
      "accuracyM": 4,
      "speedKmh": 52,
      "headingDeg": 87,
      "moving": true
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "deviceId": "0199b000-0000-7000-8000-000000000402",
      "serial": "EXAMPLE-0002",
      "recordedAt": "2026-11-04T08:12:30.000Z",
      "receivedAt": "2026-11-04T08:41:45.000Z",
      "latitude": 41.0712,
      "longitude": 29.0146,
      "accuracyM": 6,
      "speedKmh": 0,
      "headingDeg": null,
      "moving": false
    }
  ],
  "page": {
    "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE",
    "more": false
  }
}
Fehlercodes

Tracker

Die Tracker, die die Plattform Ihnen zugeteilt hat, das Fahrzeug, in dem jeder steckt, wie es ihm geht und was gerade nicht stimmt.

GET/api/v1/devices

Ihre Tracker

Die Tracker, die die Plattform Ihnen zugeteilt hat, mit ihrer Seriennummer und dem Fahrzeug, in dem jeder gerade steckt

Berechtigungen
device:readGeräte sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (ein undurchsichtiger Cursor)

Anfrage · curl
curl "https://trackingen.com/api/v1/devices" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000401",
      "serial": "356938035643809",
      "label": "Van tracker",
      "status": "active",
      "vehicleId": "0199b000-0000-7000-8000-000000000001"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000402",
      "serial": "356938035643817",
      "label": null,
      "status": "active",
      "vehicleId": null
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

GET/api/v1/devices/{deviceId}/health

Wie es einem Tracker geht

Was der Tracker zuletzt über sich meldete: sein Mobilfunksignal, die Versorgung aus dem Fahrzeug, seine Satellitenposition und wie lange er schon läuft. Jedes Feld ist null, bis er zum ersten Mal meldet

Berechtigungen
device:readGeräte sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • deviceIdPfaduuidPflicht

    Die ID des Trackers, aus Ihren Trackern

Anfrage · curl
curl "https://trackingen.com/api/v1/devices/0199b000-0000-7000-8000-000000000401/health" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "signalDbm": -71,
    "supplyMillivolts": 12600,
    "gnss": "fixed",
    "lastFixAt": "2026-11-04T08:39:40.000Z",
    "uptimeSeconds": 5400,
    "healthReportedAt": "2026-11-04T08:40:00.000Z",
    "lastReportAt": "2026-11-04T08:41:00.000Z"
  }
}
Fehlercodes

GET/api/v1/devices/{deviceId}/health-alerts

Die offenen Zustandswarnungen eines Trackers

Was mit dem Tracker gerade nicht stimmt, etwa dass er verstummt ist, jeweils seit wann; leer, wenn nichts ist

Berechtigungen
device:readGeräte sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • deviceIdPfaduuidPflicht

    Die ID des Trackers, aus Ihren Trackern

Anfrage · curl
curl "https://trackingen.com/api/v1/devices/0199b000-0000-7000-8000-000000000401/health-alerts" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000a01",
      "condition": "silent",
      "since": "2026-11-03T18:20:00.000Z",
      "startedAt": "2026-11-04T18:20:00.000Z"
    }
  ]
}
Fehlercodes

Fahrer

Die Menschen, die Ihre Fahrzeuge fahren, mit Telefon und Führerschein, für Touren. Sie kommen mit dem Paket Tourenplanung.

GET/api/v1/drivers

Ihre Fahrer

Ihre aktiven und inaktiven Fahrer, mit Telefon und Führerschein

Berechtigungen
driver:readFahrer sehen
Paket
Tourenplanung
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (ein undurchsichtiger Cursor)

Anfrage · curl
curl "https://trackingen.com/api/v1/drivers" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000601",
      "name": "Ayşe Yılmaz",
      "phone": "+905321234567",
      "licenseNumber": "B1234567",
      "status": "active",
      "userId": null
    },
    {
      "id": "0199b000-0000-7000-8000-000000000602",
      "name": "Mehmet Demir",
      "phone": null,
      "licenseNumber": null,
      "status": "inactive",
      "userId": "0199b000-0000-7000-8000-000000000901"
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

POST/api/v1/drivers

Einen Fahrer hinzufügen

Fügt einen Fahrer hinzu, von Anfang an aktiv, dem Ihre Touren gegeben werden können

Berechtigungen
driver:createFahrer hinzufügen
Paket
Tourenplanung
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • Idempotency-KeyHeaderstring

    Ihr eigener Schlüssel für diese Anfrage, 8 bis 64 Buchstaben, Ziffern, Binde- oder Unterstriche. Senden Sie denselben Schlüssel, wenn Sie die Anfrage nach einer verlorenen Antwort erneut senden, dann kommt die erste Antwort zurück statt eines zweiten Eintrags

  • nameInhaltstringPflicht

    Der volle Name des Fahrers, einfacher Text

  • phoneInhaltstring

    Eine Telefonnummer mit 7 bis 15 Ziffern, mit + und Ländervorwahl davor oder ohne; Leerzeichen, Klammern, Punkte und Bindestriche fallen weg. null für keine

  • licenseNumberInhaltstring

    Die Führerscheinnummer, in Großbuchstaben gespeichert; null für keine

  • userIdInhaltuuid

    Die ID des Kontos, mit dem sich der Fahrer anmeldet, um seine Touren zu sehen. Nur eine angemeldete Person verknüpft ein Konto oder löst es: Ein Schlüssel lässt das Feld weg oder sendet es unverändert, sonst erhält er PERSON_REQUIRED

Anfrage · curl
curl -X POST "https://trackingen.com/api/v1/drivers" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"Ayşe Yılmaz","phone":"+905321234567","licenseNumber":"B1234567"}'
Antwort · 201
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000601",
    "name": "Ayşe Yılmaz",
    "phone": "+905321234567",
    "licenseNumber": "B1234567",
    "status": "active",
    "userId": null
  }
}
Fehlercodes

PATCH/api/v1/drivers/{driverId}

Einen Fahrer ändern

Ändert die gesendeten Felder und behält den Rest. Ein inaktiver Fahrer bekommt keine neuen Touren, und sein Konto sieht seine Touren nicht mehr.

Berechtigungen
driver:updateFahrer bearbeiten
driver:readFahrer sehen
Paket
Tourenplanung
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • driverIdPfaduuidPflicht

    Die ID des Fahrers, aus Ihren Fahrern

  • nameInhaltstring

    Der volle Name des Fahrers, einfacher Text

  • phoneInhaltstring

    Eine Telefonnummer mit 7 bis 15 Ziffern, mit + und Ländervorwahl davor oder ohne; Leerzeichen, Klammern, Punkte und Bindestriche fallen weg. null für keine

  • licenseNumberInhaltstring

    Die Führerscheinnummer, in Großbuchstaben gespeichert; null für keine

  • statusInhaltstring

    active oder inactive. Bei einem mit einem Konto verknüpften Fahrer ändert ihn nur eine angemeldete Person, denn er entscheidet, was das Konto sieht: Ein Schlüssel erhält PERSON_REQUIRED

    activeinactive

  • userIdInhaltuuid

    Die ID des Kontos, mit dem sich der Fahrer anmeldet, um seine Touren zu sehen. Nur eine angemeldete Person verknüpft ein Konto oder löst es: Ein Schlüssel lässt das Feld weg oder sendet es unverändert, sonst erhält er PERSON_REQUIRED

Anfrage · curl
curl -X PATCH "https://trackingen.com/api/v1/drivers/0199b000-0000-7000-8000-000000000601" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone":"+905339876543","status":"active"}'
Antwort · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000601",
    "name": "Ayşe Yılmaz",
    "phone": "+905339876543",
    "licenseNumber": "B1234567",
    "status": "active",
    "userId": null
  }
}
Fehlercodes

Fahrzeugdaten

Was Ihre Fahrzeuge messen, neueste Werte und im Zeitverlauf, die Signale jedes Fahrzeugs und seine getauschten Steuergeräte.

GET/api/v1/vehicles/{vehicleId}/readings

Neueste Messwerte

Der neueste Wert jedes Signals, das der Tracker eines Fahrzeugs liest

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

  • kindsAbfragearray

    Die Signalarten der Antwort, durch Kommas getrennt. Messwerte, Zähler und Zustände kommen immer; fügen Sie text für Werte in Worten hinzu.

    measurecounterstatetext

  • signalsAbfragearray

    Nur diese Signale, durch Kommas getrennt, höchstens 32, jedes ein Name aus der Signalliste des Fahrzeugs. Sie kommen, welcher Art sie auch sind.

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/readings" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "recordedAt": "2026-11-04T08:41:12.000Z",
    "readings": {
      "speed": 52,
      "engine-speed": 1726,
      "coolant-temperature": 88,
      "fuel-level": 63.5
    }
  }
}
Fehlercodes

GET/api/v1/vehicles/{vehicleId}/readings/series

Messwerte im Zeitverlauf

Die Messwerte eines Fahrzeugs von einem Moment zum anderen in höchstens 240 Abschnitten, jedes Signal nach seiner Art

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

  • fromAbfragedate-timePflicht

    Der erste Moment des Zeitraums

  • toAbfragedate-timePflicht

    Der letzte Moment des Zeitraums

  • kindsAbfragearray

    Die Signalarten der Antwort, durch Kommas getrennt. Messwerte, Zähler und Zustände kommen immer; fügen Sie text für Werte in Worten hinzu.

    measurecounterstatetext

  • signalsAbfragearray

    Nur diese Signale, durch Kommas getrennt, höchstens 32, jedes ein Name aus der Signalliste des Fahrzeugs. Sie kommen, welcher Art sie auch sind.

  • bucketSecondsAbfrageinteger

    Wie lang ein Abschnitt ist, in Sekunden: mindestens der Zeitraum geteilt durch 240, höchstens der ganze Zeitraum. Ohne ihn gilt der kürzeste.

    60 bis 2678400

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/readings/series?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "from": "2026-11-04T08:00:00.000Z",
    "to": "2026-11-04T09:00:00.000Z",
    "bucketSeconds": 900,
    "quiet": [],
    "series": [
      {
        "signal": "speed",
        "kind": "measure",
        "unit": "km/h",
        "paceSeconds": 20,
        "rare": false,
        "points": [
          {
            "at": "2026-11-04T08:00:00.000Z",
            "low": 0,
            "high": 74,
            "mean": 41.2,
            "last": 52
          }
        ]
      },
      {
        "signal": "odometer",
        "kind": "counter",
        "unit": "km",
        "paceSeconds": 60,
        "rare": false,
        "points": [
          {
            "at": "2026-11-04T08:00:00.000Z",
            "low": 84211.4,
            "high": 84219.8,
            "last": 84219.8
          }
        ]
      },
      {
        "signal": "driver-working-state",
        "kind": "state",
        "paceSeconds": null,
        "rare": true,
        "points": [
          {
            "at": "2026-11-04T08:00:00.000Z",
            "state": "drive"
          }
        ]
      }
    ]
  }
}
Fehlercodes

GET/api/v1/vehicles/{vehicleId}/signals

Die Signale eines Fahrzeugs

Jedes Signal, das der Tracker eines Fahrzeugs liest: sein Name, seine Bezeichnungen in jeder Sprache, seine Art und bei einer Zahl Einheit und Nachkommastellen, bei einem Zustand dessen Werte

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/signals" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "signals": [
      {
        "name": "speed",
        "labels": {
          "tr": "Hız",
          "en": "Speed",
          "de": "Geschwindigkeit"
        },
        "base": true,
        "kind": "measure",
        "unit": "km/h",
        "decimals": 0
      },
      {
        "name": "fuel-level",
        "labels": {
          "tr": "Yakıt seviyesi",
          "en": "Fuel level",
          "de": "Tankfüllstand"
        },
        "base": true,
        "kind": "measure",
        "unit": "%",
        "decimals": 1
      },
      {
        "name": "odometer",
        "labels": {
          "tr": "Kilometre",
          "en": "Odometer",
          "de": "Kilometerstand"
        },
        "base": true,
        "kind": "counter",
        "unit": "km",
        "decimals": 1
      },
      {
        "name": "driver-working-state",
        "labels": {
          "tr": "Sürücü çalışma durumu",
          "en": "Driver working state",
          "de": "Arbeitszustand des Fahrers"
        },
        "base": false,
        "kind": "state",
        "states": [
          {
            "name": "rest",
            "labels": {
              "tr": "Dinlenme",
              "en": "Rest",
              "de": "Ruhezeit"
            }
          },
          {
            "name": "available",
            "labels": {
              "tr": "Hazır bekleme",
              "en": "Available",
              "de": "Bereitschaft"
            }
          },
          {
            "name": "work",
            "labels": {
              "tr": "Diğer iş",
              "en": "Other work",
              "de": "Andere Arbeit"
            }
          },
          {
            "name": "drive",
            "labels": {
              "tr": "Sürüş",
              "en": "Driving",
              "de": "Lenkzeit"
            }
          }
        ]
      }
    ]
  }
}
Fehlercodes

GET/api/v1/fleet/readings

Die neuesten Werte der Flotte

Der neueste Wert der genannten Signale für jedes Fahrzeug, das sie liest, eine Anfrage für die ganze Flotte

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • signalsAbfragearrayPflicht

    Die zu beantwortenden Signale, durch Kommas getrennt, höchstens 32, jedes eines, das auf jedem Fahrzeug dasselbe bedeutet

Anfrage · curl
curl "https://trackingen.com/api/v1/fleet/readings?signals=fuel-level" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "readings": {
        "fuel-level": 61.5
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "recordedAt": "2026-11-04T08:40:58.000Z",
      "readings": {
        "fuel-level": 24
      }
    }
  ]
}
Fehlercodes

GET/api/v1/readings

Messwerte kopieren

Die Messwerte jedes Fahrzeugs in der Reihenfolge ihres Empfangs, ab dem Ende Ihrer letzten Seite, sobald sie eine Minute alt sind. Jede Zeile, die eine Seite durchgeht, zählt zur Grenze, auch eine, die wegfällt, weil sie keines Ihrer Signale enthält.

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
120.000 Einträge pro Minute
Parameter
  • afterAbfragestring

    Das page.next der vorigen Seite, um dort weiterzumachen, wo sie endete

  • fromAbfragedate-time

    Stattdessen hier eine neue Kopie beginnen. Innerhalb der letzten 14 Tage zählt das gegen nichts; weiter zurück, innerhalb Ihrer aufbewahrten Daten, zählt es gegen 5 Starts am Tag für jeden Schlüssel und jede Person

  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 1000Standard 1000

  • signalsAbfragearray

    Nur diese Signale, durch Kommas getrennt, höchstens 32, mit den Namen aus der Signalliste eines Fahrzeugs

Anfrage · curl
curl "https://trackingen.com/api/v1/readings" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "serial": "EXAMPLE-0001",
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "receivedAt": "2026-11-04T08:41:44.000Z",
      "readings": {
        "speed": 52,
        "engine-speed": 1840,
        "fuel-level": 61.5
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "deviceId": "0199b000-0000-7000-8000-000000000402",
      "serial": "EXAMPLE-0002",
      "recordedAt": "2026-11-04T08:40:58.000Z",
      "receivedAt": "2026-11-04T08:41:46.000Z",
      "readings": {
        "coolant-temperature": 88,
        "odometer": 84219.8
      }
    }
  ],
  "page": {
    "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE",
    "more": false
  }
}
Fehlercodes

GET/api/v1/ecu-replacements

Getauschte Steuergeräte

Jedes Steuergerät, dessen Seriennummer sich an derselben Adresse desselben Fahrzeugs änderte, die neuesten zuerst, mit der Seriennummer davor und danach, wie das Steuergerät sie nannte, hexadezimal

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (opaque cursor)

  • vehicleIdAbfrageuuid

    Nur die getauschten Steuergeräte dieses Fahrzeugs, nach seiner ID

Anfrage · curl
curl "https://trackingen.com/api/v1/ecu-replacements" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000701",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "ecu": {
        "tr": "Motor kontrol ünitesi",
        "en": "Engine control unit",
        "de": "Motorsteuergerät"
      },
      "address": 2016,
      "serialBefore": "3132333435363738",
      "serialAfter": "3132333435363739",
      "foundAt": "2026-11-04T08:12:30.000Z"
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

Kraftstoff

Die Kraftstoff- und AdBlue-Tanks jedes Fahrzeugs und die Verluste und Tankvorgänge, die die Plattform darin erkennt. Sie kommen mit dem Paket Kraftstoffüberwachung.

GET/api/v1/vehicles/{vehicleId}/fuel-tanks

Die Tanks eines Fahrzeugs

Der Kraftstoff- und der AdBlue-Tank des Fahrzeugs, jeder mit seiner Größe, wo die Plattform sie kennt, und ob das Fahrzeug seinen Füllstand liefert

Berechtigungen
fuel:readKraftstoffverluste und Tankvorgänge sehen
Paket
Kraftstoffüberwachung
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/fuel-tanks" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "tank": "fuel",
      "litres": 80,
      "given": true
    },
    {
      "tank": "def",
      "litres": null,
      "given": false
    }
  ]
}
Fehlercodes

GET/api/v1/fuel-events

Kraftstoffverluste und Tankvorgänge

Jeder Verlust und jeder Tankvorgang, den die Plattform in einem Tank erkannte, die neuesten zuerst, mit dem Füllstand davor und danach und wie viele Liter das sind

Berechtigungen
fuel:readKraftstoffverluste und Tankvorgänge sehen
Paket
Kraftstoffüberwachung
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (ein undurchsichtiger Cursor)

  • vehicleIdAbfrageuuid

    Nur die Verluste und Tankvorgänge dieses Fahrzeugs, nach seiner ID

  • kindAbfragestring

    Nur Verluste, drop, oder nur Tankvorgänge, refuel

    droprefuel

  • tankAbfragestring

    Nur die dieses Tanks: fuel, oder def für AdBlue

    fueldef

Anfrage · curl
curl "https://trackingen.com/api/v1/fuel-events" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000901",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "tank": "fuel",
      "kind": "drop",
      "during": "parked",
      "levelBefore": 62,
      "levelAfter": 48,
      "litres": 11.2,
      "beforeAt": "2026-11-04T01:10:00.000Z",
      "afterAt": "2026-11-04T01:40:00.000Z",
      "detectedAt": "2026-11-04T01:52:00.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000902",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "tank": "fuel",
      "kind": "refuel",
      "during": "standing",
      "levelBefore": 48,
      "levelAfter": 95,
      "litres": 37.6,
      "beforeAt": "2026-11-04T07:05:00.000Z",
      "afterAt": "2026-11-04T07:14:00.000Z",
      "detectedAt": "2026-11-04T07:20:00.000Z"
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

GET/api/v1/fuel-events/{eventId}

Ein Kraftstoffverlust oder Tankvorgang

Ein Verlust oder Tankvorgang, wie die Liste ihn gibt, mit dem Ort, an dem das Fahrzeug stand, als der Füllstand davor gelesen wurde; ein Schlüssel ohne position:read sieht ihn nicht

Berechtigungen
fuel:readKraftstoffverluste und Tankvorgänge sehen
Paket
Kraftstoffüberwachung
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • eventIdPfaduuidPflicht

    Die ID des Verlusts oder Tankvorgangs, aus der Liste

Anfrage · curl
curl "https://trackingen.com/api/v1/fuel-events/0199b000-0000-7000-8000-000000000901" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000901",
    "vehicleId": "0199b000-0000-7000-8000-000000000001",
    "plate": "34 API 001",
    "tank": "fuel",
    "kind": "drop",
    "during": "parked",
    "levelBefore": 62,
    "levelAfter": 48,
    "litres": 11.2,
    "beforeAt": "2026-11-04T01:10:00.000Z",
    "afterAt": "2026-11-04T01:40:00.000Z",
    "detectedAt": "2026-11-04T01:52:00.000Z",
    "place": {
      "latitude": 41.068,
      "longitude": 29.011
    }
  }
}
Fehlercodes

Fahrten und Berichte

Die Fahrten jedes Fahrzeugs mit ihren Zahlen und ihrer Bewertung, seine harten Manöver und die Berichte Ihrer Flotte für einen Zeitraum.

GET/api/v1/vehicles/{vehicleId}/drives

Die Fahrten eines Fahrzeugs

Die Fahrten eines Fahrzeugs, die von einem Moment zum anderen begannen, höchstens 32 Tage, mit ihren Zahlen, sobald sie berechnet sind

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

  • fromAbfragedate-timePflicht

    Der erste Moment des Zeitraums

  • toAbfragedate-timePflicht

    Der letzte Moment des Zeitraums

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/drives?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000101",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "startedAt": "2026-11-04T07:58:40.000Z",
      "endedAt": "2026-11-04T08:41:12.000Z",
      "startedBy": "crank",
      "figures": {
        "drivingSeconds": 2350,
        "distance": {
          "km": 31.4,
          "by": "odometer"
        },
        "topSpeedKmh": 96,
        "fuel": {
          "litres": 2.6,
          "by": "counter"
        },
        "idleSeconds": 190,
        "highLoadSeconds": 240,
        "topCoolantC": 91,
        "topOilC": 104,
        "harshAccelerations": 1,
        "harshBrakings": 0
      },
      "score": {
        "value": 81,
        "band": "good",
        "parts": [
          {
            "figure": "harshBrakings",
            "value": 0,
            "points": 0
          },
          {
            "figure": "harshAccelerations",
            "value": 3.18,
            "points": 8
          },
          {
            "figure": "idleShare",
            "value": 0.074,
            "points": 5
          },
          {
            "figure": "highLoadShare",
            "value": 0.094,
            "points": 6
          }
        ]
      }
    }
  ]
}
Fehlercodes

GET/api/v1/reports/fuel-distance

Bericht Kraftstoff und Strecke

Fahrten, Strecke und Kraftstoff jedes Fahrzeugs von einem Moment zum anderen, höchstens ein Jahr, und ihre Summe

Berechtigungen
vehicle:readFahrzeuge sehen
Paket
Jedes Paket
Anfragegrenze
30 Anfragen pro Minute
Parameter
  • fromAbfragedate-timePflicht

    Der erste Moment des Zeitraums

  • toAbfragedate-timePflicht

    Der letzte Moment des Zeitraums

Anfrage · curl
curl "https://trackingen.com/api/v1/reports/fuel-distance?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "includes": {
      "fuel": true,
      "fuelEvents": true
    },
    "vehicles": [
      {
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "label": "Delivery van",
        "drives": 42,
        "completed": 41,
        "drivingSeconds": 61200,
        "distanceKm": 1284.6,
        "trackKm": 12.3,
        "fuelLitres": 108.2,
        "litresPer100Km": 8.42,
        "fuelEvents": {
          "refuels": 2,
          "refuelLitres": 96.5,
          "drops": 0,
          "dropLitres": null
        }
      }
    ],
    "total": {
      "drives": 42,
      "completed": 41,
      "drivingSeconds": 61200,
      "distanceKm": 1284.6,
      "trackKm": 12.3,
      "fuelLitres": 108.2,
      "litresPer100Km": null,
      "fuelEvents": {
        "refuels": 2,
        "refuelLitres": 96.5,
        "drops": 0,
        "dropLitres": null
      }
    }
  }
}
Fehlercodes

GET/api/v1/reports/driving

Bericht Fahrweise

Wie jedes Fahrzeug von einem Moment zum anderen gefahren wurde, höchstens ein Jahr: Leerlauf, hohe Last, harte Manöver und Höchstgeschwindigkeit

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
30 Anfragen pro Minute
Parameter
  • fromAbfragedate-timePflicht

    Der erste Moment des Zeitraums

  • toAbfragedate-timePflicht

    Der letzte Moment des Zeitraums

Anfrage · curl
curl "https://trackingen.com/api/v1/reports/driving?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "vehicles": [
      {
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "label": "Delivery van",
        "drives": 42,
        "completed": 41,
        "drivingSeconds": 61200,
        "distanceKm": 1284.6,
        "idleSeconds": 5400,
        "idleShare": 0.088,
        "highLoadSeconds": 3100,
        "highLoadShare": 0.051,
        "harshAccelerations": {
          "count": 3,
          "per100Km": 0.23
        },
        "harshBrakings": {
          "count": 5,
          "per100Km": 0.39
        },
        "topSpeedKmh": 118,
        "score": {
          "value": 89,
          "band": "very-good",
          "parts": [
            {
              "figure": "harshBrakings",
              "value": 0.39,
              "points": 1
            },
            {
              "figure": "harshAccelerations",
              "value": 0.23,
              "points": 1
            },
            {
              "figure": "idleShare",
              "value": 0.088,
              "points": 6
            },
            {
              "figure": "highLoadShare",
              "value": 0.051,
              "points": 3
            }
          ]
        }
      }
    ],
    "total": {
      "drives": 42,
      "completed": 41,
      "drivingSeconds": 61200,
      "distanceKm": 1284.6,
      "idleSeconds": 5400,
      "idleShare": 0.088,
      "highLoadSeconds": 3100,
      "highLoadShare": 0.051,
      "harshAccelerations": {
        "count": 3,
        "per100Km": null
      },
      "harshBrakings": {
        "count": 5,
        "per100Km": null
      },
      "topSpeedKmh": 118,
      "score": {
        "value": 89,
        "band": "very-good",
        "parts": []
      }
    }
  }
}
Fehlercodes

GET/api/v1/reports/power-take-off

Bericht Nebenabtrieb

Wie lange der Nebenabtrieb jedes Fahrzeugs von einem Moment zum anderen lief, höchstens ein Jahr

Berechtigungen
vehicle:readFahrzeuge sehen
Paket
Nebenabtrieb
Anfragegrenze
30 Anfragen pro Minute
Parameter
  • fromAbfragedate-timePflicht

    Der erste Moment des Zeitraums

  • toAbfragedate-timePflicht

    Der letzte Moment des Zeitraums

Anfrage · curl
curl "https://trackingen.com/api/v1/reports/power-take-off?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "vehicles": [
      {
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "label": "Delivery van",
        "drives": 42,
        "completed": 41,
        "drivingSeconds": 61200,
        "distanceKm": 1284.6,
        "powerTakeOffSeconds": 9000,
        "powerTakeOffShare": 0.147
      }
    ],
    "total": {
      "drives": 42,
      "completed": 41,
      "drivingSeconds": 61200,
      "distanceKm": 1284.6,
      "powerTakeOffSeconds": 9000,
      "powerTakeOffShare": 0.147
    }
  }
}
Fehlercodes

GET/api/v1/vehicles/{vehicleId}/harsh-moves

Harte Manöver eines Fahrzeugs

Die starken Beschleunigungen und das starke Bremsen eines Fahrzeugs von einem Moment zum anderen, höchstens 32 Tage, die ältesten zuerst: wann jedes am stärksten war, wie stark in m/s², bei welcher Geschwindigkeit es begann und endete und, wenn bekannt, wo es geschah. Es kommen nur Manöver, die mindestens so stark sind wie die Schwellen, mit denen die harten Manöver einer Fahrt gezählt werden.

Berechtigungen
vehicle:readFahrzeuge sehen
position:readPositionen sehen
Paket
Fahrzeugdaten
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • vehicleIdPfaduuidPflicht

    Die ID des Fahrzeugs, aus Ihrer Fahrzeugliste

  • fromAbfragedate-timePflicht

    Der erste Moment des Zeitraums

  • toAbfragedate-timePflicht

    Der letzte Moment des Zeitraums

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/harsh-moves?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "kind": "acceleration",
      "peakAt": "2026-11-04T08:03:12.000Z",
      "peakMs2": 3.4,
      "fromKmh": 0,
      "toKmh": 41,
      "place": {
        "latitude": 41.0151,
        "longitude": 28.9793
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "kind": "braking",
      "peakAt": "2026-11-04T08:12:31.000Z",
      "peakMs2": 4.6,
      "fromKmh": 87,
      "toKmh": 52,
      "place": null
    }
  ]
}
Fehlercodes

Fehlercodes

Die Fehlercodes Ihrer Fahrzeuge mit ihrer Bedeutung, und wie viele auf jedem Fahrzeug noch offen sind.

GET/api/v1/fleet/open-faults

Offene Störungen je Fahrzeug

Wie viele Störungen an jedem Fahrzeug noch offen sind, eine Anfrage für die ganze Flotte; ein Fahrzeug ohne Störung fehlt

Berechtigungen
fault:readFahrzeugfehler sehen
Paket
Fahrzeugfehler
Anfragegrenze
120 Anfragen pro Minute
Anfrage · curl
curl "https://trackingen.com/api/v1/fleet/open-faults" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "open": 2
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "open": 1
    }
  ]
}
Fehlercodes

GET/api/v1/vehicle-faults

Fehlercodes

Ihre Fehlercodes, die neuesten zuerst, jeder mit seiner Bedeutung und dem Teil des Fahrzeugs, der ihn meldete

Berechtigungen
fault:readFahrzeugfehler sehen
Paket
Fahrzeugfehler
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (opaque cursor)

  • vehicleIdAbfrageuuid

    Nur die Fehlercodes dieses Fahrzeugs, nach seiner ID

Anfrage · curl
curl "https://trackingen.com/api/v1/vehicle-faults" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000601",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "code": "P0301",
      "system": "powertrain",
      "meaning": {
        "tr": "Silindir 1 ateşleme hatası algılandı",
        "en": "Cylinder 1 misfire detected",
        "de": "Zylinder 1 Fehlzündung erkannt"
      },
      "ecu": {
        "tr": "Motor kontrol ünitesi",
        "en": "Engine control unit",
        "de": "Motorsteuergerät"
      },
      "clearable": false,
      "status": "stored",
      "appearedAt": "2026-11-04T08:12:30.000Z",
      "clearedAt": null,
      "clearingRefusal": null,
      "clearingWarning": null
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

Geofences

Die Orte, die Sie auf der Karte zeichnen, deren Ein- und Ausfahrten der Feed nennt, wie viele Sie haben dürfen und die Aufenthalte jedes Fahrzeugs darin.

GET/api/v1/geofences

Ihre Geofences

Ihre Geofences, jedes mit seiner Form, was es meldet und wie viele Fahrzeuge darin sind

Berechtigungen
geofence:readGeofences sehen; Aufenthalte und ihre Meldungen brauchen auch Positionen sehen
Paket
Geofences
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (ein undurchsichtiger Cursor)

Anfrage · curl
curl "https://trackingen.com/api/v1/geofences" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000701",
      "name": "Depot",
      "shape": {
        "kind": "circle",
        "center": {
          "latitude": 41.0681,
          "longitude": 29.0109
        },
        "radiusMeters": 250
      },
      "tellEntries": true,
      "tellExits": true,
      "inside": 2,
      "createdAt": "2026-11-02T07:30:00.000Z",
      "shapedAt": "2026-11-02T07:30:00.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000702",
      "name": "Harbour gate",
      "shape": {
        "kind": "polygon",
        "corners": [
          {
            "latitude": 40.9921,
            "longitude": 29.0241
          },
          {
            "latitude": 40.9934,
            "longitude": 29.0263
          },
          {
            "latitude": 40.9917,
            "longitude": 29.0279
          }
        ]
      },
      "tellEntries": true,
      "tellExits": false,
      "inside": 0,
      "createdAt": "2026-11-03T09:12:00.000Z",
      "shapedAt": "2026-11-04T06:45:00.000Z"
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

POST/api/v1/geofences

Ein Geofence zeichnen

Zeichnet ein Geofence; hinein- und hinausfahrende Fahrzeuge werden von da an beurteilt. Geofences zeichnen, ändern und entfernen zählt außerdem zusammen gegen 60 pro Minute für Ihre ganze Organisation.

Berechtigungen
geofence:configureGeofences zeichnen und ändern
Paket
Geofences
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • Idempotency-KeyHeaderstring

    Ihr eigener Schlüssel für diese Anfrage, 8 bis 64 Buchstaben, Ziffern, Binde- oder Unterstriche. Senden Sie denselben Schlüssel, wenn Sie die Anfrage nach einer verlorenen Antwort erneut senden, dann kommt die erste Antwort zurück statt eines zweiten Eintrags

  • nameInhaltstringPflicht

    Ein Name für das Geofence, einfacher Text, eindeutig unter Ihren Geofences ohne Rücksicht auf Groß- und Kleinschreibung

  • shapeInhaltobjectPflicht

    Ein Kreis, {kind: circle, center, radiusMeters}, oder ein Vieleck, {kind: polygon, corners}, jeder Ort {latitude, longitude} in Grad. Die Route der Geofence-Grenzen sagt, wie viele Ecken und welchen Radius Sie zeichnen dürfen

  • tellEntriesInhaltboolean

    Ob ein hineinfahrendes Fahrzeug gemeldet wird, Ihren Leuten als Benachrichtigung und im Feed als geofence-entered; true, wenn es bei einem neuen Geofence fehlt

  • tellExitsInhaltboolean

    Ob ein hinausfahrendes Fahrzeug gemeldet wird, als Benachrichtigung und im Feed als geofence-left; true, wenn es bei einem neuen Geofence fehlt

Anfrage · curl
curl -X POST "https://trackingen.com/api/v1/geofences" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"Depot","shape":{"kind":"circle","center":{"latitude":41.0681,"longitude":29.0109},"radiusMeters":250},"tellExits":true}'
Antwort · 201
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000701",
    "name": "Depot",
    "shape": {
      "kind": "circle",
      "center": {
        "latitude": 41.0681,
        "longitude": 29.0109
      },
      "radiusMeters": 250
    },
    "tellEntries": true,
    "tellExits": true,
    "inside": 0,
    "createdAt": "2026-11-02T07:30:00.000Z",
    "shapedAt": "2026-11-02T07:30:00.000Z"
  }
}
Fehlercodes

GET/api/v1/geofences/{geofenceId}

Ein Geofence

Ein Geofence, wie Ihre Geofence-Liste es gibt

Berechtigungen
geofence:readGeofences sehen; Aufenthalte und ihre Meldungen brauchen auch Positionen sehen
Paket
Geofences
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • geofenceIdPfaduuidPflicht

    Die ID des Geofence, aus Ihren Geofences

Anfrage · curl
curl "https://trackingen.com/api/v1/geofences/0199b000-0000-7000-8000-000000000701" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000701",
    "name": "Depot",
    "shape": {
      "kind": "circle",
      "center": {
        "latitude": 41.0681,
        "longitude": 29.0109
      },
      "radiusMeters": 250
    },
    "tellEntries": true,
    "tellExits": true,
    "inside": 2,
    "createdAt": "2026-11-02T07:30:00.000Z",
    "shapedAt": "2026-11-02T07:30:00.000Z"
  }
}
Fehlercodes

PATCH/api/v1/geofences/{geofenceId}

Ein Geofence ändern

Ändert die gesendeten Felder und behält den Rest. Eine neue Form wird ab dem Moment beurteilt, in dem sie gezeichnet wird. Geofences zeichnen, ändern und entfernen zählt außerdem zusammen gegen 60 pro Minute für Ihre ganze Organisation.

Berechtigungen
geofence:configureGeofences zeichnen und ändern
geofence:readGeofences sehen; Aufenthalte und ihre Meldungen brauchen auch Positionen sehen
Paket
Geofences
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • geofenceIdPfaduuidPflicht

    Die ID des Geofence, aus Ihren Geofences

  • nameInhaltstring

    Ein Name für das Geofence, einfacher Text, eindeutig unter Ihren Geofences ohne Rücksicht auf Groß- und Kleinschreibung

  • shapeInhaltobject

    Ein Kreis, {kind: circle, center, radiusMeters}, oder ein Vieleck, {kind: polygon, corners}, jeder Ort {latitude, longitude} in Grad. Die Route der Geofence-Grenzen sagt, wie viele Ecken und welchen Radius Sie zeichnen dürfen

  • tellEntriesInhaltboolean

    Ob ein hineinfahrendes Fahrzeug gemeldet wird, Ihren Leuten als Benachrichtigung und im Feed als geofence-entered; true, wenn es bei einem neuen Geofence fehlt

  • tellExitsInhaltboolean

    Ob ein hinausfahrendes Fahrzeug gemeldet wird, als Benachrichtigung und im Feed als geofence-left; true, wenn es bei einem neuen Geofence fehlt

Anfrage · curl
curl -X PATCH "https://trackingen.com/api/v1/geofences/0199b000-0000-7000-8000-000000000701" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tellExits":false}'
Antwort · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000701",
    "name": "Depot",
    "shape": {
      "kind": "circle",
      "center": {
        "latitude": 41.0681,
        "longitude": 29.0109
      },
      "radiusMeters": 250
    },
    "tellEntries": true,
    "tellExits": false,
    "inside": 2,
    "createdAt": "2026-11-02T07:30:00.000Z",
    "shapedAt": "2026-11-02T07:30:00.000Z"
  }
}
Fehlercodes

DELETE/api/v1/geofences/{geofenceId}

Ein Geofence entfernen

Entfernt ein Geofence: Fahrzeuge darin werden nicht mehr beurteilt, ihre Aufenthalte enden ohne Meldung, und seine Aufenthalte bleiben in ihrer Geschichte. Geofences zeichnen, ändern und entfernen zählt außerdem zusammen gegen 60 pro Minute für Ihre ganze Organisation.

Berechtigungen
geofence:configureGeofences zeichnen und ändern
Paket
Geofences
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • geofenceIdPfaduuidPflicht

    Die ID des Geofence, aus Ihren Geofences

Anfrage · curl
curl -X DELETE "https://trackingen.com/api/v1/geofences/0199b000-0000-7000-8000-000000000701" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"

204Erledigt; die Antwort hat keinen Inhalt.

Fehlercodes

GET/api/v1/geofence-limits

Geofence-Grenzen

Wie viele Geofences Sie haben dürfen und jetzt haben, die meisten Ecken eines Vielecks und der kleinste und größte Radius eines Kreises

Berechtigungen
geofence:readGeofences sehen; Aufenthalte und ihre Meldungen brauchen auch Positionen sehen
Paket
Geofences
Anfragegrenze
120 Anfragen pro Minute
Anfrage · curl
curl "https://trackingen.com/api/v1/geofence-limits" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "geofencesMax": 100,
    "geofencesUsed": 2,
    "cornersMax": 50,
    "radiusMinMeters": 50,
    "radiusMaxMeters": 30000
  }
}
Fehlercodes

GET/api/v1/geofence-stays

Aufenthalte in Geofences

Jede Zeit, in der ein Fahrzeug in einem Geofence war, von der Einfahrt bis zur Ausfahrt, die neuesten zuerst; ein Aufenthalt, der noch andauert, hat kein Ende

Berechtigungen
geofence:readGeofences sehen; Aufenthalte und ihre Meldungen brauchen auch Positionen sehen
position:readPositionen sehen
Paket
Geofences
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (ein undurchsichtiger Cursor)

  • vehicleIdAbfrageuuid

    Nur die Aufenthalte dieses Fahrzeugs, nach seiner ID

  • geofenceIdAbfrageuuid

    Nur die Aufenthalte in diesem Geofence, nach seiner ID

  • insideAbfragestring

    true für nur die Aufenthalte, die noch andauern

    truefalse

Anfrage · curl
curl "https://trackingen.com/api/v1/geofence-stays" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000302",
      "geofenceId": "0199b000-0000-7000-8000-000000000701",
      "geofence": "Depot",
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "plate": "34 API 002",
      "start": "entered",
      "startedAt": "2026-11-04T06:02:10.000Z",
      "end": "left",
      "endedAt": "2026-11-04T08:43:58.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000303",
      "geofenceId": "0199b000-0000-7000-8000-000000000701",
      "geofence": "Depot",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "start": "already-inside",
      "startedAt": "2026-11-02T07:30:00.000Z",
      "end": null,
      "endedAt": null
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

Warnungen

Die Regeln, die warnen, wenn ein Messwert eines Fahrzeugs eine Schwelle überschreitet, die Signale, die eine Regel beobachten darf, und die ausgelösten Warnungen.

GET/api/v1/alert-rules

Ihre Warnregeln

Ihre Warnregeln, an und aus, und jedes Signal, das eine Regel beobachten darf, mit den Schwellen, die es nimmt, und ob Ihr Paket eine Regel darauf jetzt zulässt

Berechtigungen
alert:readWarnungen sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Anfrage · curl
curl "https://trackingen.com/api/v1/alert-rules" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": {
    "rules": [
      {
        "id": "0199b000-0000-7000-8000-000000000201",
        "name": "Engine running hot",
        "signal": "coolant-temperature",
        "comparison": "above",
        "threshold": 105,
        "unit": "°C",
        "holdSeconds": 60,
        "on": true
      },
      {
        "id": "0199b000-0000-7000-8000-000000000202",
        "name": "Battery running low",
        "signal": "battery-low",
        "comparison": "below",
        "threshold": null,
        "unit": "V",
        "holdSeconds": 300,
        "on": false
      }
    ],
    "signals": [
      {
        "signal": "coolant-temperature",
        "unit": "°C",
        "threshold": {
          "by": "customer",
          "min": 40,
          "max": 130,
          "step": 1
        },
        "usable": true
      },
      {
        "signal": "battery-low",
        "unit": "V",
        "threshold": {
          "by": "platform",
          "comparison": "below"
        },
        "usable": true
      }
    ]
  }
}
Fehlercodes

POST/api/v1/alert-rules

Eine Warnregel hinzufügen

Fügt eine Regel hinzu, von Anfang an an: Ein Fahrzeug, dessen Signal für die Haltezeit jenseits der Schwelle bleibt, löst eine Warnung aus, Ihren Leuten gemeldet und im Feed als vehicle-alert. Warnregeln hinzufügen und ändern zählt außerdem zusammen gegen 100 pro Tag für Ihre ganze Organisation.

Berechtigungen
alert:configureWarnregeln festlegen
Paket
Jedes Paket
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • Idempotency-KeyHeaderstring

    Ihr eigener Schlüssel für diese Anfrage, 8 bis 64 Buchstaben, Ziffern, Binde- oder Unterstriche. Senden Sie denselben Schlüssel, wenn Sie die Anfrage nach einer verlorenen Antwort erneut senden, dann kommt die erste Antwort zurück statt eines zweiten Eintrags

  • nameInhaltstringPflicht

    Ein Name für die Regel, einfacher Text, mit jeder Warnung gezeigt

  • signalInhaltstringPflicht

    Das Signal, das die Regel beobachtet: eines der Signale, die die Liste der Warnregeln nennt, oder battery-low

  • comparisonInhaltstringPflicht

    above oder below: auf welcher Seite der Schwelle gewarnt wird

    abovebelow

  • thresholdInhaltstringPflicht

    Der Wert, den das Signal überschreiten muss, in seinem Bereich und seinen Schritten, wie die Liste der Warnregeln sie nennt; null für battery-low, dessen Schwelle die Plattform setzt

  • holdSecondsInhaltintegerPflicht

    Wie viele ganze Sekunden das Signal jenseits der Schwelle bleibt, bevor gewarnt wird; 0 warnt sofort

    0 bis 3600

Anfrage · curl
curl -X POST "https://trackingen.com/api/v1/alert-rules" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"Engine running hot","signal":"coolant-temperature","comparison":"above","threshold":105,"holdSeconds":60}'
Antwort · 201
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000201",
    "name": "Engine running hot",
    "signal": "coolant-temperature",
    "comparison": "above",
    "threshold": 105,
    "unit": "°C",
    "holdSeconds": 60,
    "on": true
  }
}
Fehlercodes

PATCH/api/v1/alert-rules/{ruleId}

Eine Warnregel ändern

Ändert die gesendeten Felder, behält den Rest und schaltet die Regel an oder aus. Warnregeln hinzufügen und ändern zählt außerdem zusammen gegen 100 pro Tag für Ihre ganze Organisation.

Berechtigungen
alert:configureWarnregeln festlegen
alert:readWarnungen sehen
Paket
Jedes Paket
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • ruleIdPfaduuidPflicht

    Die ID der Regel, aus Ihren Warnregeln

  • nameInhaltstring

    Ein Name für die Regel, einfacher Text, mit jeder Warnung gezeigt

  • signalInhaltstring

    Das Signal, das die Regel beobachtet: eines der Signale, die die Liste der Warnregeln nennt, oder battery-low

  • comparisonInhaltstring

    above oder below: auf welcher Seite der Schwelle gewarnt wird

    abovebelow

  • thresholdInhaltstring

    Der Wert, den das Signal überschreiten muss, in seinem Bereich und seinen Schritten, wie die Liste der Warnregeln sie nennt; null für battery-low, dessen Schwelle die Plattform setzt

  • holdSecondsInhaltinteger

    Wie viele ganze Sekunden das Signal jenseits der Schwelle bleibt, bevor gewarnt wird; 0 warnt sofort

    0 bis 3600

  • onInhaltboolean

    Ob die Regel warnt; sind so viele Regeln an, wie gleichzeitig an sein dürfen, antwortet das Anschalten ALERT_RULE_LIMIT

Anfrage · curl
curl -X PATCH "https://trackingen.com/api/v1/alert-rules/0199b000-0000-7000-8000-000000000201" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"threshold":110,"on":true}'
Antwort · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000201",
    "name": "Engine running hot",
    "signal": "coolant-temperature",
    "comparison": "above",
    "threshold": 110,
    "unit": "°C",
    "holdSeconds": 60,
    "on": true
  }
}
Fehlercodes

DELETE/api/v1/alert-rules/{ruleId}

Eine Warnregel entfernen

Entfernt eine Regel; die Warnungen, die sie auslöste, bleiben im Warnverlauf

Berechtigungen
alert:configureWarnregeln festlegen
Paket
Jedes Paket
Anfragegrenze
60 Anfragen pro Minute
Parameter
  • ruleIdPfaduuidPflicht

    Die ID der Regel, aus Ihren Warnregeln

Anfrage · curl
curl -X DELETE "https://trackingen.com/api/v1/alert-rules/0199b000-0000-7000-8000-000000000201" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"

204Erledigt; die Antwort hat keinen Inhalt.

Fehlercodes

GET/api/v1/alert-episodes

Ausgelöste Warnungen

Jedes Mal, wenn ein Messwert eines Fahrzeugs die Schwelle einer Warnregel überschritt, die neuesten zuerst, mit wie weit und wie lange, und wo es begann, für einen Schlüssel mit position:read

Berechtigungen
alert:readWarnungen sehen
Paket
Jedes Paket
Anfragegrenze
120 Anfragen pro Minute
Parameter
  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 100Standard 50

  • afterAbfragestring

    Das page.next der vorigen Seite, um die nächste Seite abzufragen; senden Sie es, wie es kam (ein undurchsichtiger Cursor)

  • vehicleIdAbfrageuuid

    Nur die Warnungen dieses Fahrzeugs, nach seiner ID

Anfrage · curl
curl "https://trackingen.com/api/v1/alert-episodes" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000301",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "name": "Engine running hot",
      "signal": "coolant-temperature",
      "comparison": "above",
      "threshold": 105,
      "unit": "°C",
      "peak": 112.5,
      "startedAt": "2026-11-04T08:41:12.000Z",
      "durationSeconds": 95,
      "place": {
        "latitude": 41.068,
        "longitude": 29.011
      }
    }
  ],
  "page": {
    "next": null
  }
}
Fehlercodes

Der Feed

Was in Ihrer Flotte geschah und was sich an Ihren Fahrzeugen, Geräten und Ihrem Paket änderte, in einer Reihenfolge.

GET/api/v1/feed

Der Feed

Was in Ihrer Flotte geschah, in der Reihenfolge, in der es geschrieben wurde, ab dem Ende Ihrer letzten Seite, sobald es eine Minute alt ist, und 14 Tage lang. Jeder Eintrag ist von einer Art und trägt, worum es geht, so wie dessen eigene Liste es gibt, mit einem Cursor, um direkt danach weiterzumachen. Jede Art braucht ihre eigene Berechtigung, und ohne position:read fehlt der Ort eines Eintrags. Ohne das Fahrzeugdaten-Paket kommt eine Fahrt nur mit Fahrzeit und Strecke, so wie die Fahrtenliste des Fahrzeugs sie gibt. Mit der Zeit können weitere Arten kommen; überspringen Sie einen Eintrag einer Art, die Sie nicht kennen, und machen Sie nach seinem Cursor weiter.

Berechtigungen
alert:readWarnungen sehen
device:readGeräte sehen
fault:readFahrzeugfehler sehen
fuel:readKraftstoffverluste und Tankvorgänge sehen
geofence:readGeofences sehen; Aufenthalte und ihre Meldungen brauchen auch Positionen sehen
package:readPaket und Preis sehen
position:readPositionen sehen
vehicle:readFahrzeuge sehen
Paket
Jedes Paket
Anfragegrenze
120.000 Einträge pro Minute
Arten

Was in Ihrer Flotte geschah

  • vehicle-silentvehicle:read
  • vehicle-heard-againvehicle:read
  • vehicle-faultsfault:readFahrzeugfehler
  • vehicle-alertalert:read
  • geofence-enteredgeofence:readposition:readGeofences
  • geofence-leftgeofence:readposition:readGeofences
  • fuel-dropfuel:readKraftstoffüberwachung
  • refuelfuel:readKraftstoffüberwachung
  • health-alertdevice:readvehicle:read
  • health-alert-endeddevice:readvehicle:read
  • drive-completedvehicle:readposition:read
  • ecu-replacedvehicle:readposition:readFahrzeugdaten

Was sich an Ihren Fahrzeugen, Geräten und Ihrem Paket änderte

  • vehicle-addedvehicle:read
  • vehicle-changedvehicle:read
  • device-assigneddevice:read
  • device-installeddevice:readvehicle:read
  • device-removeddevice:readvehicle:read
  • feature-switchedpackage:read
  • retention-changedpackage:read
  • retention-appliedpackage:read
Parameter
  • afterAbfragestring

    Das page.next der vorigen Seite, um dort weiterzumachen, wo sie endete

  • fromAbfragedate-time

    Stattdessen hier beginnen, höchstens 14 Tage zurück

  • limitAbfrageinteger

    Wie viele höchstens auf einer Seite kommen

    1 bis 1000Standard 1000

  • kindsAbfragearray

    Nur Einträge dieser Arten, durch Kommas getrennt. Ohne sie kommt jede Art, die Sie lesen dürfen; eine Art, die Sie nicht lesen dürfen, wird abgelehnt.

    vehicle-silentvehicle-heard-againvehicle-faultsvehicle-alertgeofence-enteredgeofence-leftfuel-droprefuelhealth-alerthealth-alert-endeddrive-completedecu-replacedvehicle-addedvehicle-changeddevice-assigneddevice-installeddevice-removedfeature-switchedretention-changedretention-applied

  • waitSecondsAbfrageinteger

    Wenn nichts bereitliegt, bis zu so viele Sekunden auf den nächsten Eintrag warten; die Plattform wartet vielleicht kürzer. 0 antwortet sofort.

    0 bis 30Standard 0

Anfrage · curl
curl "https://trackingen.com/api/v1/feed" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Antwort · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000801",
      "kind": "vehicle-alert",
      "cursor": "Wm3kQ9vXEXAMPLE.Pz7cR2EXAMPLE",
      "customerId": "0199b000-0000-7000-8000-000000000501",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "writtenAt": "2026-11-04T08:43:05.000Z",
      "subject": {
        "id": "0199b000-0000-7000-8000-000000000301",
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "name": "Engine running hot",
        "signal": "coolant-temperature",
        "comparison": "above",
        "threshold": 105,
        "unit": "°C",
        "peak": 112.5,
        "startedAt": "2026-11-04T08:41:12.000Z",
        "durationSeconds": 95,
        "place": {
          "latitude": 41.068,
          "longitude": 29.011
        }
      }
    },
    {
      "id": "0199b000-0000-7000-8000-000000000802",
      "kind": "geofence-left",
      "cursor": "Hn4wLp9vEXAMPLE.Qe8tY1EXAMPLE",
      "customerId": "0199b000-0000-7000-8000-000000000501",
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "writtenAt": "2026-11-04T08:44:30.000Z",
      "subject": {
        "id": "0199b000-0000-7000-8000-000000000302",
        "geofenceId": "0199b000-0000-7000-8000-000000000701",
        "geofence": "Depot",
        "vehicleId": "0199b000-0000-7000-8000-000000000002",
        "plate": "34 API 002",
        "start": "entered",
        "startedAt": "2026-11-04T06:02:10.000Z",
        "end": "left",
        "endedAt": "2026-11-04T08:43:58.000Z"
      }
    }
  ],
  "page": {
    "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE",
    "more": false
  }
}
Fehlercodes

Webhooks

Ein Webhook sendet die Einträge des Feeds an Ihren eigenen https-Endpunkt, sobald sie feststehen, sodass Ihr System von einem Alarm, einem überquerten Geofence oder einer abgeschlossenen Fahrt erfährt, ohne zu fragen. Er ist der Feed als Push: dieselben Einträge, in derselben Reihenfolge, mit denselben Cursors.

  • Eine Person richtet einen Webhook im Panel ein, unter Verwaltung und dann Webhooks, mit ihrem Passwort; ein API-Schlüssel nie, und alle, die Ihr Team verwalten, erfahren von einem neuen. Wählen Sie die Arten, die er bekommt, und ob er Orte sieht. Ein Webhook gehört zu einer Person, die ihn eingerichtet oder zuletzt geprüft hat, und hält nie mehr, als diese Person lesen darf: Jede Zustellung prüft erneut, was diese Person jetzt lesen darf, ob Ihre Organisation das API-Paket hat und ob der Webhook die Art des Eintrags lesen darf, sodass eine abgeschaltete Funktion ihre Arten anhält. Geht diese Person oder darf sie keine API-Schlüssel mehr verwalten, pausiert der Webhook, und alle, die Ihre API-Schlüssel verwalten, werden benachrichtigt. Er wird nie wieder geprüft, da sein Endpunkt noch das Geheimnis kennt, das diese Person gesehen hat: Entfernen Sie ihn und richten Sie einen neuen ein, der ein neues Geheimnis mitbringt. Prüft jemand anderes einen Webhook, der nur wegen seiner Fehlschläge pausiert, wird diese Person für ihn verantwortlich. Ohne Orte ist der Ort eines Alarms null, wie der Feed ihn ohne position:read gibt. Das Signaturgeheimnis, das mit whsec_ beginnt, erscheint einmal; wir bewahren es versiegelt auf.
  • Der Endpunkt ist https auf Port 443 unter einem öffentlichen Hostnamen. Wir lösen den Namen auf, lehnen ihn ab, wenn auch nur eine Adresse, die er ergibt, privat, Loopback, Link-Local, geteilt oder sonst nicht öffentlich ist, in IPv4 oder einer beliebigen IPv6-Form, verbinden uns dann mit genau dieser Adresse und prüfen ihr Zertifikat gegen den Namen.

Bevor etwas gesendet wird, prüfen Sie den Endpunkt im Panel. Wir senden ihm eine signierte Challenge, und er antwortet mit 2xx und JSON, dessen answer das HMAC-SHA256 der Challenge in base64 ist, mit dem Geheimnis als Schlüssel wie bei einer Signatur; das beweist, dass er das Geheimnis kennt. Ein Webhook, der seine Prüfung nicht bestanden hat, bekommt nichts; ein pausierter macht dort weiter, wo er stehen blieb, sobald er sie wieder besteht.

Challenge
POST /your/path HTTP/1.1
Host: hooks.example.com
Content-Type: application/json
webhook-id: 0199b000-0000-7000-8000-000000000990
webhook-timestamp: 1762245785
webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDNEXAMPLE=

{"challenge":"q8XbT0hZx2vYmR4cEXAMPLE"}
Ihre Antwort
HTTP/1.1 200 OK
Content-Type: application/json

{"answer":"kOcc0/V1k6uRAwpp/m/bzF5VAhPZm7t/QXJRO0qG5ZY="}

Jede Zustellung ist ein POST mit einem Feed-Eintrag als JSON-Body, genau wie GET /api/v1/feed ihn listet, mit seinem Cursor. Einträge gehen in der Reihenfolge des Feeds, einer nach dem anderen je Webhook, frühestens eine Minute nach dem Geschehen, und ein Eintrag wird erneut gesendet, bis Ihr Endpunkt ihn annimmt (at-least-once delivery); bewahren Sie jeden daher nach seiner id auf. webhook-id ist die id des Eintrags. Überspringen Sie eine Art, die Sie nicht kennen.

Zustellung
POST /your/path HTTP/1.1
Host: hooks.example.com
Content-Type: application/json
webhook-id: 0199b000-0000-7000-8000-000000000801
webhook-timestamp: 1762245785
webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDNEXAMPLE=

{
  "id": "0199b000-0000-7000-8000-000000000801",
  "kind": "vehicle-alert",
  "cursor": "Wm3kQ9vXEXAMPLE.Pz7cR2EXAMPLE",
  "customerId": "0199b000-0000-7000-8000-000000000501",
  "vehicleId": "0199b000-0000-7000-8000-000000000001",
  "writtenAt": "2026-11-04T08:43:05.000Z",
  "subject": {
    "id": "0199b000-0000-7000-8000-000000000301",
    "vehicleId": "0199b000-0000-7000-8000-000000000001",
    "plate": "34 API 001",
    "name": "Engine running hot",
    "signal": "coolant-temperature",
    "comparison": "above",
    "threshold": 105,
    "unit": "°C",
    "peak": 112.5,
    "startedAt": "2026-11-04T08:41:12.000Z",
    "durationSeconds": 95,
    "place": {
      "latitude": 41.068,
      "longitude": 29.011
    }
  }
}

Jede Zustellung und jede Challenge ist mit dem eigenen Geheimnis des Webhooks signiert, nach den Headern von Standard Webhooks, sodass auch deren Bibliotheken sie prüfen. Signiert wird webhook-id, ein Punkt, webhook-timestamp, ein Punkt und der rohe Body. Sein HMAC-SHA256, mit dem base64-dekodierten Geheimnis nach whsec_ als Schlüssel, steht base64-kodiert in webhook-signature nach v1,, und der Header kann mehrere tragen, durch Leerzeichen getrennt. Vergleichen Sie in konstanter Zeit, am Body, wie er ankam, bevor Sie ihn parsen.

webhook-timestamp ist der Moment, in dem wir sendeten, in Sekunden seit 1970 UTC. Lehnen Sie eine Zustellung ab, deren Zeitstempel mehr als 300 Sekunden von Ihrer Uhr abweicht, und bewahren Sie die webhook-id-Werte auf, die Sie in diesem Fenster angenommen haben, um eine Wiederholung abzulehnen.

Eine Zustellung prüfen · JavaScript
import { createHmac, timingSafeEqual } from "node:crypto";

function keyOf(secret) {
  return Buffer.from(secret.slice("whsec_".length), "base64");
}

export function challengeAnswer(secret, challenge) {
  return createHmac("sha256", keyOf(secret)).update(challenge).digest("base64");
}

export function isFromTrackingen(secret, headers, rawBody) {
  const sentAt = Number(headers["webhook-timestamp"]);
  if (!(Math.abs(Date.now() / 1000 - sentAt) <= 300)) {
    return false;
  }
  const signed = `${headers["webhook-id"]}.${headers["webhook-timestamp"]}.${rawBody}`;
  const expected = Buffer.from(
    createHmac("sha256", keyOf(secret)).update(signed).digest("base64"),
  );
  return headers["webhook-signature"].split(" ").some((each) => {
    const given = Buffer.from(each.slice("v1,".length));
    return (
      each.startsWith("v1,") &&
      given.length === expected.length &&
      timingSafeEqual(given, expected)
    );
  });
}
Eine Zustellung prüfen · Python
import base64, hashlib, hmac, time

def mac_of(secret: str, content: bytes) -> str:
    key = base64.b64decode(secret.removeprefix("whsec_"))
    return base64.b64encode(hmac.new(key, content, hashlib.sha256).digest()).decode()

def challenge_answer(secret: str, challenge: str) -> str:
    return mac_of(secret, challenge.encode())

def is_from_trackingen(secret: str, headers: dict, raw_body: bytes) -> bool:
    sent_at = int(headers["webhook-timestamp"])
    if abs(time.time() - sent_at) > 300:
        return False
    signed = f'{headers["webhook-id"]}.{headers["webhook-timestamp"]}.'.encode() + raw_body
    expected = mac_of(secret, signed)
    return any(
        hmac.compare_digest(each.removeprefix("v1,"), expected)
        for each in headers["webhook-signature"].split(" ")
        if each.startswith("v1,")
    )
  • Antworten Sie innerhalb von 10 Sekunden mit 2xx, und erledigen Sie die Arbeit nach der Antwort. Jede andere Antwort, eine Weiterleitung, eine Zeitüberschreitung, eine abgelehnte Verbindung oder ein Zertifikat, das nicht zum Namen des Endpunkts passt, gilt als Fehlschlag. Wir folgen nie einer Weiterleitung, und wir bewahren den Body Ihrer Antwort nicht auf und lesen nicht mehr als ein paar Bytes davon.
  • Ein gescheiterter Eintrag wird 30 Sekunden später erneut gesendet, dann jedes Mal nach doppelt so langer Zeit, höchstens alle 60 Minuten, und nichts danach wird vor ihm gesendet (backoff). Nach 30 Fehlschlägen in Folge, etwa einem Tag, pausiert der Webhook, und alle, die Ihre API-Schlüssel verwalten, werden benachrichtigt. Wir bewahren von jedem Fehlschlag nur auf, wie er ausging und wann, nie einen Body.
  • Solange ein Webhook scheitert oder pausiert, geht nichts verloren: Lesen Sie GET /api/v1/feed mit dem zuletzt erhaltenen Cursor als after, mit denselben Arten, und machen Sie von dort weiter. Der Feed bewahrt 14 Tage auf.
  • Ein Webhook bekommt höchstens 60 Zustellungen pro Minute, alle Webhooks einer Organisation zusammen 120; was wartet, geht als Nächstes. Eine Organisation hat bis zu 5 Webhooks.

Fehlercodes

Eine Ablehnung nennt einen dieser Codes. Bauen Sie auf den Code: Er bleibt gleich, die Nachricht kann besser formuliert werden.

  • INVALID_REQUEST400Ein Wert in Pfad, Abfrage oder Inhalt fehlt oder ist fehlerhaft. Nur eine Route, die einen Inhalt annimmt, antwortet auf einen zu großen Inhalt mit 413 und auf einen vom falschen Typ mit 415
  • UNAUTHENTICATED401Mit der Anfrage kam kein gültiges Bearer-Token, keine Sitzung und kein gültiger API-Schlüssel
  • FEATURE_DISABLED403Das Paket des Kunden enthält die nötige Funktion nicht, oder die Organisation des API-Schlüssels hat das API-Paket nicht
  • FORBIDDEN403Dem Aufrufer fehlt eine nötige Berechtigung, oder die Anfrage kam von einer anderen Website
  • KEY_NOT_ALLOWED403Ein API-Schlüssel erreicht nur die Schlüsselrouten, und diese Route mit dieser Methode gehört nicht dazu
  • PASSWORD_CHANGE_REQUIRED403Die angemeldete Person muss vor allem anderen ihr Passwort ändern. Das erhält nur die Sitzung einer Person; ein API-Schlüssel nie, denn er hat kein Passwort
  • PERSON_REQUIRED403Das tut nur eine angemeldete Person, etwa eine Aktion, die nach dem Passwort fragt; ein API-Schlüssel nie
  • NOT_FOUND404Nichts in der Reichweite des Aufrufers hat diese ID
  • METHOD_NOT_ALLOWED405Der Pfad nimmt diese Methode nicht an; der Header Allow nennt die, die er annimmt
  • ALERT_RULE_LIMIT409So viele Warnregeln, wie gleichzeitig an sein dürfen, sind an
  • CONFLICT409Die Anfrage widerspricht dem jetzigen Stand
  • GEOFENCE_LIMIT409Der Kunde hat so viele Geofences, wie er haben darf
  • GEOFENCE_NAME_TAKEN409Ein anderes Geofence hat diesen Namen
  • IDEMPOTENCY_KEY_REUSED409Dieser Idempotency-Schlüssel wurde schon für eine andere Anfrage verwendet
  • CURSOR_EXPIRED410Der Cursor ist zu alt, um dort weiterzumachen; beginnen Sie die Kopie neu, mit from für weiter zurück
  • RATE_LIMITED429Zu viele Anfragen; der Header Retry-After sagt, wann es wieder geht
  • INTERNAL_ERROR500Bei uns ist etwas schiefgelaufen