Zum Inhalt springen
QuantyDocs
Quanty öffnen

API-Referenz

Mit dem TMS-Add-on kann ein anderes System von Ihnen (ein BI-Werkzeug, ein Buchhaltungsprogramm, eine Plattform zur Sendungsverfolgung) über die TMS-API die Aufträge, Geschäftspartner, Fahrzeuge und Rechnungen Ihrer Organisation lesen, und Ihr eigenes Telematiksystem kann Fahrzeugpositionen senden. In den Worten der App: „Ein Schlüssel lässt ein anderes System TMS-Daten lesen, zum Beispiel Aufträge für Berichte, oder Fahrzeugpositionen aus seiner Telematik senden. Außer diesen Positionen ändert er nichts.“

Alles andere in Quanty nutzen Sie über die App unter app.quanty.ai. Die interne API der App wird nicht für Integrationen angeboten: Sie braucht eine angemeldete Sitzung und ändert sich ohne Ankündigung.

Bevor Sie beginnen

  • Die Organisation hat das TMS-Add-on und einen bezahlten Plan. Ohne das Add-on wird jede Anfrage mit addon_required abgelehnt, solange der Plan nicht bezahlt ist mit payment_required.
  • Nur ein Administrator der Organisation erstellt und widerruft API-Schlüssel, in den TMS-Einstellungen, API und Webhooks.
  • Das System, das die API aufruft, braucht den Schlüssel, die Adresse Ihrer Quanty-API (sie steht im Beispiel im Schlüsseldialog) und diese Seite.

API-Schlüssel

Ein neuer API-Schlüssel.
Der Dialog Neuer API-Schlüssel: Name und Was er lesen oder senden darf, mit angehakten Aufträgen, Geschäftspartnern, Fahrzeugen und Rechnungen und nicht angehakter Telematik: Senden
  1. Öffnen Sie TMS-Einstellungen, API und Webhooks und klicken Sie unter API-Schlüssel auf Schlüssel erstellen.
  2. Füllen Sie den Dialog aus und klicken Sie auf Schlüssel erstellen.
  3. Der Schlüssel wird einmal gezeigt, mit Kopieren und Beispiel: die ersten 50 Aufträge (Beispiel kopieren): „Wir zeigen diesen Schlüssel nur einmal. In der Liste bleibt nur sein Anfang; geht er verloren, widerrufen Sie ihn und erstellen Sie einen neuen.“
  4. Fügen Sie den Schlüssel in dem System ein, das ihn benutzen soll, und klicken Sie auf Fertig.
FeldWas es bedeutetBeispiel
Name„Am Namen erkennen Sie den Schlüssel in der Liste.“ Höchstens 120 Zeichen.BI-Berichte
Was er lesen oder senden darfAufträge, Geschäftspartner, Fahrzeuge und Rechnungen (standardmäßig angehakt) und Telematik: Senden für ein System, das Positionen sendet (nie standardmäßig angehakt; früher erstellte Schlüssel haben es nicht). Haken Sie mindestens eines an.Aufträge, Rechnungen

Die Liste der Schlüssel zeigt Name, Zugriff, Erstellt, Zuletzt benutzt („noch nicht“ bis zur ersten Anfrage) und Status: Aktiv oder Widerrufen (mit dem Namen der Person, die widerrufen hat). Widerrufen im Menü eines Schlüssels stoppt ihn sofort: „Systeme, die ihn benutzen, verlieren sofort den Zugriff. Das lässt sich nicht rückgängig machen.“

RegelWert
Aktive Schlüssel je Organisationhöchstens 20 („Widerrufen Sie einen unbenutzten Schlüssel, um einen neuen zu erstellen.“)
Wie ein Schlüssel aussiehtbeginnt mit qk_; die Liste zeigt nur seinen Anfang
Ein verlorener Schlüsselkann nicht erneut gezeigt werden: widerrufen und neu erstellen
Zuletzt benutzthöchstens alle 5 Minuten aktualisiert
ChatSchlüssel werden nie über den Chat erstellt, gezeigt oder widerrufen

Halten Sie den Schlüssel geheim

Wer den Schlüssel hat, kann lesen, was er erlaubt. Speichern Sie ihn als Geheimnis in dem System, das ihn benutzt, und widerrufen Sie ihn, wenn dieses System ihn nicht mehr braucht.

Daten lesen

Verwenden Sie die Adresse aus dem Beispiel im Schlüsseldialog und senden Sie den Schlüssel als Bearer-Token:

GET /api/v1/ext/tms/orders?limit=50
Authorization: Bearer qk_…
PfadDer Schlüssel braucht
GET /api/v1/ext/tms/ordersAufträge
GET /api/v1/ext/tms/contractorsGeschäftspartner
GET /api/v1/ext/tms/vehiclesFahrzeuge
GET /api/v1/ext/tms/invoicesRechnungen

Abfrageparameter

ParameterWas er bedeutetBeispiel
limitZeilen je Seite, 1 bis 200. Standard 50.200
cursorDer next_cursor der vorigen Seite.MjAyNi0xMS0wMlQw…
updated_sinceNur Zeilen, die zu oder nach diesem Zeitpunkt geändert wurden: ein ISO-Zeitpunkt oder ein bloßes Datum, das Mitternacht polnischer Zeit bedeutet.2026-10-21T08:00:00Z

Seiten und regelmäßiges Abfragen

Die Antwort ist eine Seite, älteste Änderung zuerst:

{
  "items": [ { "id": "…", "number": "…", "updated_at": "…" } ],
  "next_cursor": "…"
}
  1. Lesen Sie die erste Seite, mit updated_since, wenn Sie nur die letzten Änderungen wollen.
  2. Solange next_cursor nicht null ist, lesen Sie weiter mit cursor auf diesem Wert (mit demselben updated_since).
  3. Um später Änderungen abzufragen, starten Sie den nächsten Lauf mit updated_since einige Minuten vor der Zeit Ihres letzten Laufs.

Zeilen, die in den letzten 10 Sekunden geändert wurden, werden noch nicht ausgeliefert; sie kommen beim nächsten Lesen, deshalb geht eine Abfrage einige Minuten zurück. Zeilen mit demselben updated_at werden zwischen Seiten nie übersprungen oder wiederholt. Gelöschte Zeilen fehlen; stornierte behalten ihren Status. Antworten werden nie zwischengespeichert.

Felder

Jede Zeile hat id, created_at und updated_at sowie die Felder der passenden Tabelle in TMS Daten (siehe Tabellen in Quanty). Geldbeträge und andere Dezimalzahlen kommen als Text ("1234.50"), ganze Zahlen als Zahlen, Datumsangaben als YYYY-MM-DD (der Tag in polnischer Zeit), Zeitpunkte in UTC und Auswahlwerte als Codes. Ein nicht gesetzter Wert ist null.

orders (Aufträge)

FeldWas es enthält
number, client_referenceDie Auftragsnummer und die Nummer des Kunden.
statusdraft, confirmed, planned, in_progress, delivered, documents (wartet auf Dokumente), invoiced, settled oder cancelled.
client, routeDer Kurzname des Kunden und die Strecke.
loading_date, unloading_dateDie erste Ladung und die letzte Entladung.
executionown (eigener Fuhrpark) oder carrier (Frachtführer).
vehicle_plate, trailer_plate, driverBeim eigenen Fuhrpark Fahrzeug, Auflieger und Fahrer aus dem TMS; beim Frachtführer Kennzeichen und Fahrer aus dem Auftrag.
carrierDer Frachtführer, bei einem Frachtführerauftrag.
freight_amount, currency, freight_plnDie Fracht in ihrer Währung und in PLN.
carrier_cost_pln, margin_plnDie Kosten des Frachtführers und die Marge, bei einem Frachtführerauftrag.
documents_statusmissing, partial, complete oder not_required.
owner, branch, tagsBetreuer, Niederlassung und Tags (durch Komma getrennt).
is_adr, km, co2_kgADR (true oder false), die Kilometer und das CO2 in kg.

contractors (Geschäftspartner)

FeldWas es enthält
name, short_name, nip, city, countryDie Firma und ihr Ländercode.
rolesEine Liste: client, carrier oder beides.
verificationpositive, negative, neutral oder unverified.
credit_limit, exposure_plnDas Kreditlimit und, für einen Kunden, was er jetzt in PLN schuldet.
blocked_as_client, blocked_as_carriertrue oder false.
payment_days, owner, last_order_on, archivedZahlungsziel, Betreuer, Tag des letzten Auftrags und ob er archiviert ist.

vehicles (Fahrzeuge)

FeldWas es enthält
plate, kind, make_model, vinkind ist tractor, trailer, truck, van oder car.
statusactive, service, inactive oder sold.
current_trailer, current_driverDer Zug, in dem das Fahrzeug gerade ist.
insurance_until, inspection_until, tachograph_until, next_expiryDie Fristen und die früheste davon. Das Tachographendatum eines Aufliegers ist keine Frist: next_expiry lässt es aus (ebenso die Tabelle Fahrzeuge in Tabellen in Quanty).
odometer_kmDer Kilometerstand.

invoices (Rechnungen)

FeldWas es enthält
number, seriesDie Nummer (ein Entwurf hat keine) und der Nummernkreis.
statusdraft, issued, sent, partially_paid, paid oder cancelled.
buyer, issue_date, due_dateDer Käufer wie auf der Rechnung und die Daten.
gross, currency, paid, outstanding, net_plnDie Beträge. outstanding ist gesetzt, sobald die Rechnung ausgestellt ist.
days_overdueTage nach Fälligkeit, solange etwas offen ist, sonst 0.
ksef_statusqueued, sent, accepted, rejected oder null, wenn die Rechnung nicht an KSeF ging.
ordersDie Auftragsnummern auf der Rechnung (durch Komma getrennt).

Interne Notizen, Dateien, IDs von Personen und Koordinaten werden nicht ausgeliefert. Datensätze aus Marcos TMS sind wie alle anderen enthalten.

Fehler

Eine Ablehnung hat einen Code und einen Satz (error_code, message), nie etwas vom Schlüssel.

StatusCodeBedeutung
401invalid_api_keyDer Schlüssel fehlt, ist falsch oder widerrufen.
402addon_requiredDie Organisation hat das TMS-Add-on nicht.
402payment_requiredDas Abonnement der Organisation ist nicht bezahlt.
403scope_missingDer Schlüssel darf diese Art von Daten nicht lesen.
422invalid_cursorDer Cursor stammt nicht von dieser API.
422invalid_updated_sinceDer Zeitpunkt ist nicht lesbar.
429Zu viele Anfragen. Warten Sie und versuchen Sie es erneut.

Grenzen

GrenzeWert
Lesen, je Schlüssel120 Anfragen pro Minute und 5 000 pro Stunde
Zeilen je Seitehöchstens 200
Anfragen mit falschem Schlüssel, je Adresse30 pro Minute; danach bekommt ein falscher Schlüssel eine Weile 429
Positionen senden, je Schlüssel60 Anfragen pro Minute und 2 000 pro Stunde
Positionen je Anfragehöchstens 500 und höchstens 1 MB

Falsche Schlüssel anderer bremsen einen gültigen Schlüssel nie aus.

Fahrzeugpositionen senden

Für eine Telematik, die Quanty nicht selbst liest, kann Ihr eigenes System die Positionen senden. Die ganze Anleitung, mit jedem Feld, der Zuordnung der Fahrzeuge und allen Antworten, steht auf Eigenes System (API). Kurz:

  1. Ein Administrator verbindet Eigenes System (API) unter Telematik: „Hier ist nichts einzutragen.“ Die Verbindung zeigt Empfang: Über die API, Letzte Daten und So senden Sie Daten mit der Adresse, dem nötigen Schlüssel und einer Beispielanfrage.
  2. Erstellen Sie einen API-Schlüssel mit Telematik: Senden.
  3. Ihr System sendet die Positionen:
POST /api/v1/ext/tms/telematics/positions
Authorization: Bearer qk_…
Content-Type: application/json
{
  "items": [
    {
      "vehicle": { "plate": "PO 1AB12" },
      "at": "2026-11-01T10:00:00Z",
      "lat": 52.40,
      "lng": 16.92,
      "speed_kmh": 82,
      "heading": 270,
      "odometer_km": 423434.5,
      "fuel_pct": 61,
      "fuel_l": 410,
      "driver": { "id": "D-17", "name": "Jan Kowalski" },
      "trailer": { "plate": "PO 9TR" }
    }
  ]
}
  • vehicle nennt das Fahrzeug über seine Quanty-id, seine FIN (vin) oder sein Kennzeichen (plate). Ein Fahrzeug ohne Telematik wird bei der ersten Position verbunden; eines, das seine Positionen aus einer anderen Telematikverbindung bekommt, wird für diese Position abgelehnt.
  • at ist ein ISO-Zeitpunkt (ohne Zeitzone als UTC gelesen) oder Unix-Sekunden; eine Zeit mehr als 15 Minuten nach der Uhr von Quanty wird abgelehnt, prüfen Sie also die Uhr des Senders. lat und lng sind Pflicht, der Rest ist optional. Der Name des Fahrers ist ein personenbezogenes Datum, wie bei jeder Telematik.
  • Ein Feld, das eine Position weglässt, behält den letzten Wert des Fahrzeugs (Kraftstoff, Fahrer), und null löscht ihn. Der Kilometerstand des Fahrzeugs steigt nur, senden Sie also einen echten Wert. Ein optionaler Wert, der kein Messwert ist (eine Geschwindigkeit von -1, ein Kilometerstand von 0, ein Kraftstoff von "n/a"), wird weggelassen und unter ignored aufgeführt; die Position zählt trotzdem.

Die Antwort ist 200, wenn mindestens eine Position gespeichert wurde:

{
  "accepted": 1,
  "positions_added": 1,
  "older_than_stored": 0,
  "vehicles_linked": 0,
  "rejected": [ { "index": 3, "status": 404, "error_code": "…", "message": "…" } ],
  "ignored": [ { "index": 0, "field": "speed_kmh" } ]
}

Jede Position wird für sich beantwortet: Eine abgelehnte steht unter rejected mit ihrem Index, die anderen werden gespeichert. Derselbe Inhalt zweimal gesendet wird einmal gespeichert, und eine Meldung, die älter ist als die neueste des Fahrzeugs, kommt in seine Spur, ohne das Fahrzeug zurückzusetzen.

Eine ganze Anfrage wird abgelehnt mit:

StatusCodeBedeutung
401, 402wie obenSchlüssel, Add-on oder Plan.
403scope_missingDer Schlüssel hat Telematik: Senden nicht.
409push_not_connected, push_pausedKeine Verbindung Eigenes System (API), oder sie ist pausiert.
413body_too_largeMehr als 1 MB. Teilen Sie die Positionen auf.
422invalid_json, items_required, too_many_itemsKein JSON, kein items oder mehr als 500.
429push_busyEine andere Sendung Ihrer Organisation wird gerade gespeichert: Warten Sie die Sekunden aus Retry-After und senden Sie erneut. Auch wenn der Schlüssel zu viele Anfragen sendet.

Andere Wege, Daten zu bewegen

  • Google Sheets: Zeilen aus einer Google-Tabelle nach Zeitplan importieren, mit einer Schlüsselspalte gegen Duplikate, oder eine Tabelle in die andere Richtung exportieren.
  • Export: Jede Tabelle lässt sich über Weitere Aktionen im Raster als CSV, Excel oder PDF exportieren (siehe Projekte, Tabellen und Ansichten), und die TMS-Listen und -Berichte haben ihren eigenen Export.
  • Automatisierungen (Beta): E-Mails, WhatsApp-Nachrichten und KSeF-Rechnungen zu Datensätzen einer Tabelle machen und auf neue und geänderte Datensätze reagieren.
  • Freigabelinks: Dashboards und Präsentationen lassen sich per Link schreibgeschützt teilen (siehe Dashboards und Präsentationen).

Fragen zur API: support@quanty.ai.