SolmexHelp Center

Help CenterIntegration Guides

Send GPS positions from any tracker

For the person connecting trackers to Solmex. The address, the key, the position format, the answer you get back, and the limits a feed works within.

Included in: On requestUpdated

Solmex accepts machine positions from any GPS tracker, through a simple web request. This page is for whoever builds the connection: your tracker supplier, your IT team, or a small script on your own server that reads positions from the tracker platform and passes them on.

To create the key and bind devices to machines in the app, follow Connect GPS trackers. If your trackers are on Wialon Hosting, you do not need this page: see Connect Wialon.

Before you start

  • Live Map is switched on per company, not by plan. Without it, the feed answers that your plan does not include it.
  • An administrator with Settings: Edit creates a feed on the GPS feed tab of Settings and hands you its key. The key is shown once.
  • The Location the machines work on needs a map plan, or positions cannot be placed in a Sublocation. See Create a site plan.
The GPS feed tab in Settings, where a feed is added and its key and devices are managed

The request

Send an HTTPS POST to your company's Solmex address followed by /api/telematics/positions. The GPS feed tab of Settings shows the full address for your company, ready to copy. For a company at yourcompany.getsolmex.com, that is:

POST https://yourcompany.getsolmex.com/api/telematics/positions
Authorization: Bearer <the feed's key>
Content-Type: application/json

{"positions": [
  {"device_id": "860123456789012", "at": "2026-10-12T09:41:12Z", "lat": -6.1659, "lng": 39.2026, "accuracy_m": 8, "speed_kph": 12.5, "heading_deg": 270}
]}

There is no login and no session: the key in the Authorization header is the whole credential. Keep it out of code repositories and logs.

The fields of a position

FieldRequiredMeaning
device_idYesThe tracker's own identifier, such as its IMEI. Up to 120 characters. This is what gets bound to a machine.
atYesWhen the tracker took the fix, not when you send it. ISO 8601, with a time zone, for example ending in Z for UTC.
latYesLatitude in decimal degrees (WGS84), from -90 to 90.
lngYesLongitude in decimal degrees, from -180 to 180.
accuracy_mNoThe fix's accuracy in metres.
speed_kphNoSpeed in kilometres per hour.
heading_degNoDirection of travel in degrees.

Send positions in batches of up to 1,000, in a body of no more than 1 MB.

The answer

A successful request returns counts for that batch:

FieldMeaning
acceptedPositions stored
duplicatesPositions already received (the same device at the same moment) and ignored
unboundPositions from devices not yet bound to a machine. They are stored, and appear on the GPS feed tab for someone to bind.
sightingsPositions that added an entry to a machine's location history
movedMachines whose current Sublocation changed
rejectedA list of positions refused, each with its device_id and a reason

Sending the same position twice is safe: it is counted as a duplicate, never stored twice. So if a request fails or times out, send the batch again.

What Solmex does with a position

Every accepted position is kept for 30 days, which is what draws a machine's day track. A position becomes an entry in the machine's location history only when it says something new: the machine changed Sublocation, or an hour has passed since its last GPS entry. A position is never moved to the nearest Sublocation. These rules are explained in Connect GPS trackers.

Limits

LimitValue
Positions per request1,000
Requests per key120 a minute
Positions per key5,000 a minute
Devices reporting with no machine bound200 per feed
How far ahead of the real time a position may be dated5 minutes

Errors

ResponseMeaning
404 "Not found"The key is missing, wrong, archived or rotated. Solmex gives the same answer in every case.
429 "This feed is sending more positions than it may. Slow down, then retry."Your key went over its per-minute budget. Nothing from that request was stored.
429 "Too many requests. Try again shortly."Too many requests from your server's address. Wait, then retry.
422The body does not match the format above: a required field is missing, a value has the wrong type, or there are more than 1,000 positions.
402Your company does not have Live Map switched on.

Reasons you may see in rejected:

  • "A device id is required."
  • "That coordinate is not on the earth." Check you have not swapped latitude and longitude, or sent zeros.
  • "That fix is dated in the future." The sending computer's clock is wrong, or the time zone is missing.
  • A message that the feed already has 200 devices with no machine bound. Bind the real ones on the GPS feed tab before more can report.

Troubleshooting

What you seeWhat to do
Everything is counted as unboundNobody has bound the devices yet. Ask your administrator to bind each one to its machine.
Positions are accepted but sightings stays at 0Normal while machines stay put. If they are moving, check the Location has a map plan and the Sublocations are drawn as areas or have a radius.
Every request returns 404The key was rotated or the feed archived. Ask your administrator for the current key.