Your own system (API)
When your trucks report to a telematics Quanty does not read itself (or to your own system), that system can send the positions to Quanty instead. You connect Your own system (API) in Telematics, make an API key that may send positions, and your system posts the positions to one address. From then on they work like those of any provider: on the fleet map, on the vehicle board in Tracking, for the kilometres of orders and for the odometer.
Before you start
- Telematics is part of the TMS add-on, and only organization admins connect telematics and make API keys.
- The vehicles must already be in the TMS fleet (Vehicles and sets): Quanty matches each position to one of your TMS vehicles and never creates a vehicle from a position.
- The developer of the sending system needs the address, the key and the request below. The full request and answer are also in the API Reference.
1. Connect Your own system (API)
- Open Telematics (from Integrations) and click Connect on the tile Your own system (API): "For a telematics Quanty does not read itself: your system sends the positions to Quanty."
- Access has nothing to fill in: "Nothing to fill in here. Your system sends vehicle positions to the address below, with your organization's API key." It shows the same instructions as How to send data (below).
- Destination: a table or No table, map only, as for any provider (see Connecting telematics).
- Schedule: "Nothing is read on a schedule: positions arrive when your system sends them." Give it a name if you like and save. There is no test: nothing is asked of a provider.
The connection's row then says Receiving: Through the API and Last data (when the last position arrived), and has How to send data. One such connection is enough; the tile hides Connect once you have it.
2. Make an API key that may send positions
- Open TMS settings, API and webhooks and click Create key.
- Give it a Name, for example "Telematics sender".
- Tick Telematics: sending. It is never ticked by default, and keys made earlier do not have it. The four kinds of data to read (Orders, Contractors, Vehicles, Invoices) are ticked by default: untick them for a key that only sends positions.
- Click Create key and copy the key: "We show this key only once. The list keeps only its beginning; if it is lost, revoke it and create a new one."
A key with only Telematics: sending can send positions and read nothing. An organization can hold up to 20 active keys. Revoke stops a key at once.
3. Send positions
How to send data shows the address with Copy:
POST https://<your Quanty API address>/api/v1/ext/tms/telematics/positions
Authorization: Bearer <API key>
Content-Type: application/jsonand the example request, with the current time filled in:
{"items":[{"vehicle":{"plate":"PO 1AB23"},"at":"2026-11-02T10:00:00Z","lat":52.4064,"lng":16.9252,"speed_kmh":82}]}The fields of a position
| Field | What it means | Example |
|---|---|---|
vehicle | Which vehicle: its Quanty id, its vin or its plate. Required. | {"plate":"PO 1AB23"} |
at | When the position was taken: ISO 8601 (without an offset it is UTC) or Unix seconds. Required. | "2026-11-02T10:00:00Z" |
lat, lng | The position in degrees (WGS 84). Required; 0,0 is refused. | 52.4064, 16.9252 |
speed_kmh | Speed, 0 to 400. Send it: without a speed the vehicle shows as Offline on the map. | 82 |
heading | Direction in degrees. | 90 |
odometer_km | The odometer, above 0 and up to 5 000 000. | 423434.5 |
fuel_pct, fuel_l | Fuel level in % (0 to 100) and in litres. | 64 |
driver | The driver: id and name. | {"name":"Marek Zieliński"} |
trailer | The trailer: plate or vin. | {"plate":"PO 4TR11"} |
An optional value that does not make sense (a speed of -1, an odometer of 0, a fuel of "n/a") is left out and listed under ignored; the position itself is kept. A field you do not send keeps its last value (for example the driver); null clears it.
How a vehicle is matched
- By
idwhen given (an unknown id is refused, with no fallback). - Else by
vin; a VIN that matches nothing falls back to the plate. - Else by
plate, compared without spaces and dashes and in capitals ("po-1ab23" matches "PO 1AB23").
A TMS vehicle with no telematics yet is linked to this connection on its first position, and its history says so. A vehicle that another telematics connection already feeds is refused, and so is a plate or VIN that two of your vehicles share.
Limits
| Limit | Value |
|---|---|
| Positions per request | at most 500, and at most 1 MB |
| Requests per key | 60 a minute and 2 000 an hour |
| Time in the future | at most 15 minutes ahead of Quanty's clock ("check the sender's clock") |
| Old positions | not older than the position history (90 days) |
| At the same time | one request per organization; a second one gets "busy" with a retry hint of 2 seconds |
Send in batches of a few hundred positions, in time order per vehicle. The vehicle is Driving from 3 km/h, Stopped below that, and Offline when its last report is more than 6 hours old. The odometer of the TMS vehicle only goes up, so send real readings.
The answer
Quanty answers 200 when at least one position was stored, with:
| Field | Meaning |
|---|---|
accepted | Positions taken. |
positions_added | Positions added to the history. |
older_than_stored | Positions older than what the vehicle already has (taken, not added to the trail). |
vehicles_linked | Plates linked to this connection by this request. |
rejected | Each refused position with its index, its reason and the field. |
ignored | Optional values left out, with their index and field. |
When nothing was stored, the answer has the same shape with the status of the refusals (404, 409 or 422).
| Problem | Answer |
|---|---|
| The key is missing, unknown or revoked | 401 |
| The organization has no TMS add-on, or its plan is unpaid | 402 |
| The key does not have Telematics: sending | 403 |
| Your own system (API) is not connected, or it is paused | 409 |
| The request is too large | 413 |
Not JSON, no items, or more than 500 | 422 |
| Too many requests, or another request is still running | 429 (wait and send again) |
A single position can be refused for: an unknown vehicle id (404), a vehicle that is not unique or is fed by another telematics (409), a time in the future or older than the history, or a missing or wrong field (422).
Keep the key secret
The key lets anyone who has it send positions for your vehicles. Keep it in the sending system only, and revoke it in TMS settings when it may have leaked.
Good to know
- Pausing the connection refuses new positions until you resume it; the row then says Receiving: Paused.
- Deleting the connection deletes its position history and unlinks the TMS vehicles; positions sent afterwards are refused.
- Positions from your system appear on the fleet map within 30 seconds and count for the order kilometres and road cards like any provider's.
Related pages
- Connecting telematics: the providers Quanty reads itself.
- Positions and the fleet map: where the positions show.
- TMS settings: API keys and webhooks.
- API Reference: the full request and answer.