entopizo API Reference
GPS tracking for vehicles & fleets
Programmatic access to live vehicle positions, route history, events, alert rules, geofences, device commands, reports and fleet management. All responses are JSON.
Note: This page is fully static (no JavaScript rendering), so it is completely readable by AI tools, crawlers and plain HTTP clients. Some endpoints may vary depending on the platform version and active plugins on the server. Machine-readable version: https://entopizo.com/llms.txt
Introduction
The entopizo API is a conventional REST API. Every request (except login) is authenticated with a user_api_hash token passed as a parameter. There are no SDKs to install β any HTTP client works.
Quickstart: your first request in 60 seconds
Step 1 β Obtain your token once with your entopizo account credentials.
Step 2 β Call any endpoint with the token. The example fetches all your vehicles with their live positions.
That's the whole integration model: one token, plain GET/POST requests, JSON back.
Step 1 β Get your token
curl -X POST "https://go.entopizo.gr/api/login" \
-d "email=user@example.com" \
-d "password=β’β’β’β’β’β’β’β’"
# β { "status": 1, "user_api_hash": "$2y$10$..." }
Step 2 β Fetch your vehicles
curl "https://go.entopizo.gr/api/get_devices?user_api_hash=HASH&lang=en"
Authentication
Authentication uses a static per-user token, the user_api_hash. It is issued once via login and then passed as a parameter on every call. Bearer headers are not used. The token does not expire unless the account password changes.
Returns the account's user_api_hash. Call it once and store the hash securely.
| Parameter | Type | Description |
|---|---|---|
| string required | Your entopizo account email | |
| password | string required | Your account password |
Request
curl -X POST "https://go.entopizo.gr/api/login" \ -d "email=user@example.com" \ -d "password=β’β’β’β’β’β’β’β’"
Response 200
{
"status": 1,
"user_api_hash": "$2y$10$EXAMPLEHASH..."
}
user_api_hash, encrypted at rest, and always transmit over HTTPS. Changing the account password invalidates the current hash.
Conventions
Formats used consistently across the API:
| Convention | Format | Example |
|---|---|---|
| Dates | YYYY-MM-DD | 2026-07-05 |
| Times | HH:MM (account timezone) | 14:30 |
| Timestamps in responses | DD-MM-YYYY HH:MM:SS | 05-07-2026 14:32:10 |
| Coordinates | Decimal degrees, WGS84 | lat: 37.97552, lng: 23.73481 |
| Speed | Account unit setting (km/h or mph) | "speed": 54 |
| Pagination | page parameter; responses include current_page, last_page | ?page=2 |
| Booleans in requests | 1 / 0 | snap_to_road=1 |
| Success flag | "status": 1 in response body | β |
Distance and capacity units (km/mi, litres/gallons) follow the account settings β see Account & Setup.
Devices
A device is a GPS tracker installed in a vehicle or asset. Device objects carry the latest known position, motion state and sensor values, so for "where is my fleet right now" questions a single call is enough.
Returns all devices of the account, grouped, with last known position, speed, heading, connection state and sensor values. Use it to map vehicle names to device_id for all other calls.
| Parameter | Type | Description |
|---|---|---|
| user_api_hash | string required | Authentication token |
| lang | string optional | Language of translated fields, e.g. en or el |
online field: online = transmitting now, ack = recent signal without GPS fix, offline = no communication for over 5 minutes, engine = idling with ignition on.
Request
curl "https://go.entopizo.gr/api/get_devices?user_api_hash=HASH&lang=en"
Response 200 (abridged)
[
{
"id": 0,
"title": "Ungrouped",
"items": [
{
"id": 1042,
"name": "Truck YZX-1234",
"online": "online",
"time": "05-07-2026 14:32:10",
"speed": 54,
"course": 118,
"lat": 37.97552,
"lng": 23.73481,
"altitude": 92,
"address": "132 Gr. Lampraki Ave, Korydallos",
"protocol": "teltonika",
"total_distance": 48211.7,
"stop_duration": "0s",
"sensors": [
{ "name": "Ignition", "value": "On" },
{ "name": "Battery", "value": "12.6V" }
],
"tail": [
{ "lat": "37.97501", "lng": "23.73390" }
]
}
]
}
]
Other device endpoints
All accept user_api_hash.
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_devices_latest | GET | β | Latest positions only β lighter payload than get_devices |
| /api/add_device | POST | name, imei | Register a new device |
| /api/edit_device | POST | device_id, name, icon_id, group_id, fuel_quantity, fuel_price | Edit device details and fuel settings |
| /api/destroy_device | GET | device_id | Permanently delete a device |
Route History
Returns a device's history for a time range, split into drive and stop segments, with total distance and top speed.
| Parameter | Type | Description |
|---|---|---|
| user_api_hash | string required | Authentication token |
| device_id | integer required | Device ID from get_devices |
| from_date | date required | YYYY-MM-DD |
| from_time | time required | HH:MM |
| to_date | date required | YYYY-MM-DD |
| to_time | time required | HH:MM |
| snap_to_road | boolean optional | Snap points to the road network (1/0) |
status field per segment: 1 = driving, 2 = stopped with engine on (idle), 3 = parked, 4 = event, 5 = no signal. For AI use, prefer the per-segment aggregates over the raw GPS points.
Request
curl "https://go.entopizo.gr/api/get_history?user_api_hash=HASH\ &device_id=1042&from_date=2026-07-04&from_time=00:00\ &to_date=2026-07-04&to_time=23:59"
Response 200 (abridged)
{
"distance_sum": "182.4 km",
"top_speed": "96 kph",
"items": [
{
"status": 1,
"distance": 42.7,
"time": "1h 05min",
"items": [
{ "lat": 37.975, "lng": 23.734,
"speed": 51, "time": "08:12:04" }
]
},
{
"status": 3,
"time": "38min",
"location": "Warehouse, Aspropyrgos"
}
]
}
Other history endpoints
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_history_messages | GET | device_id, from_date, from_time, to_date, to_time | Raw position messages including all protocol parameters |
| /api/delete_history_positions | POST | device_id, from, to | Delete history positions for a period |
Events
Events are occurrences recorded against a device: overspeeding, geofence entry/exit, power cut, towing, SOS and more. Events are generated only when a matching alert rule is active.
Returns a paginated list of events, newest first.
| Parameter | Type | Description |
|---|---|---|
| user_api_hash | string required | Authentication token |
| device_id | integer optional | Filter by device |
| page | integer optional | Result page (default 1) |
Response 200 (abridged)
{
"items": {
"data": [
{
"id": 88211,
"device_id": 1042,
"type": "overspeed",
"message": "Speed limit exceeded",
"speed": 112,
"latitude": 38.0142,
"longitude": 23.6650,
"address": "Athinon Ave, Athens",
"time": "04-07-2026 16:44:31"
}
],
"current_page": 1,
"last_page": 4
}
}
Other event endpoints
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/destroy_events | POST | event_id / device_id | Delete events |
| /api/get_custom_events | GET | β | List custom events (based on protocol parameters) |
| /api/add_custom_event | POST | name, protocol, parameter, value | Define a custom event, e.g. SOS button or low battery |
Alert Rules
Alert rules define when events are generated and how the user is notified (push, email, SMS).
Creates an alert rule for one or more devices.
| Parameter | Type | Description |
|---|---|---|
| user_api_hash | string required | Authentication token |
| name | string required | Rule name, e.g. "Overspeed 100 km/h" |
| type | string required | overspeed, geofence_in, geofence_out, ignition_on, ignition_off, custom |
| devices | array required | Device IDs the rule applies to |
| overspeed | integer optional | Speed limit when type = overspeed |
| geofences | array optional | Geofence IDs when type = geofence_in / geofence_out |
| notifications | json optional | Notification channels: push, email, sms |
Request
curl -X POST "https://go.entopizo.gr/api/add_alert" \ -d "user_api_hash=HASH" \ -d "name=Overspeed 100 km/h" \ -d "type=overspeed" \ -d "overspeed=100" \ -d "devices[]=1042" \ -d "devices[]=1043"
Response 200
{ "status": 1 }
Other alert endpoints
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_alerts | GET | β | List all alert rules of the account |
| /api/edit_alert | POST | id, name, type, devices | Edit a rule |
| /api/change_active_alert | POST | id, active (1/0) | Enable / disable a rule |
| /api/destroy_alert | GET | alert_id | Delete a rule |
| /api/get_events_by_protocol | GET | protocol | Available event types per protocol (e.g. teltonika) |
Geofences & Routes
Geofences are named areas (polygons or circles) used for entry/exit alerts and reporting. Routes are predefined paths a vehicle is expected to follow.
Creates a geofence. For polygons, coordinates are passed as a JSON array of points.
| Parameter | Type | Description |
|---|---|---|
| user_api_hash | string required | Authentication token |
| name | string required | Geofence name, e.g. "Warehouse Aspropyrgos" |
| polygon | json required | Array of points [{"lat":..,"lng":..}, ...] |
| polygon_color | string optional | Hex colour, e.g. #0E8A5F |
Request
curl -X POST "https://go.entopizo.gr/api/add_geofence" \
-d "user_api_hash=HASH" \
-d "name=Warehouse Aspropyrgos" \
-d 'polygon=[{"lat":38.061,"lng":23.593},
{"lat":38.062,"lng":23.601},
{"lat":38.057,"lng":23.600}]'
Response 200
{ "status": 1 }
Other geofence & route endpoints
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_geofences | GET | β | List geofences with name, colour and coordinates |
| /api/edit_geofence | POST | id, name, polygon | Edit a geofence |
| /api/destroy_geofence | GET | geofence_id | Delete a geofence |
| /api/point_in_geofences | GET | lat, lng | Check which geofences contain a point |
| /api/get_routes | GET | β | List predefined routes |
| /api/add_route | POST | name, coordinates | Create a route |
| /api/destroy_route | GET | route_id | Delete a route |
Commands
Commands are messages sent to the tracker over GPRS or SMS β for example engine stop/resume on supported installations. Available command types depend on the device protocol.
Sends a GPRS command to a device. Use send_command_data first to discover which command types the device supports.
| Parameter | Type | Description |
|---|---|---|
| user_api_hash | string required | Authentication token |
| device_id | integer required | Target device |
| type | string required | Command type, e.g. custom or a protocol-defined type |
| data | string optional | Command payload when type = custom |
Request
curl -X POST "https://go.entopizo.gr/api/send_gprs_command" \ -d "user_api_hash=HASH" \ -d "device_id=1042" \ -d "type=custom" \ -d "data=setdigout 1"
Response 200
{ "status": 1, "message": "Command sent" }
Other command endpoints
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/send_command_data | GET | device_id | Available command types for the device (per protocol) |
| /api/send_sms_command | POST | device_id, message | Send a command via SMS (requires SMS gateway) |
| /api/get_device_commands | GET | device_id | History of sent commands |
| /api/get_user_gprs_templates | GET | β | Saved GPRS command templates |
| /api/add_user_gprs_template | POST | title, message | Create a GPRS template |
| /api/get_user_sms_templates | GET | β | Saved SMS templates |
| /api/add_user_sms_template | POST | title, message | Create an SMS template |
Reports
Generates reports β general, drives & stops, driver behaviour, fuel, overspeeding, geofence activity and more β in HTML, PDF or XLS, or schedules them for automatic delivery.
Generates a report for selected devices and time range. Fetch get_report_types once to map report names to type IDs on your server.
| Parameter | Type | Description |
|---|---|---|
| user_api_hash | string required | Authentication token |
| title | string required | Report title |
| type | integer required | Report type ID β see get_report_types |
| devices | array required | Device IDs |
| date_from / date_to | datetime required | YYYY-MM-DD HH:MM |
| format | string optional | html, pdf, xls |
Request
curl -X POST "https://go.entopizo.gr/api/generate_report" \ -d "user_api_hash=HASH" \ -d "title=June mileage" \ -d "type=1" \ -d "devices[]=1042" \ -d "date_from=2026-06-01 00:00" \ -d "date_to=2026-06-30 23:59" \ -d "format=html"
Response 200
{
"status": 1,
"url": "https://go.entopizo.gr/report/β¦"
}
Other report endpoints
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_reports | GET | β | List saved / scheduled reports |
| /api/get_report_types | GET | β | Available report types with their IDs |
| /api/destroy_report | GET | report_id | Delete a saved report |
format=html and extract the summary tables, or compute basic figures directly from get_history (distance_sum, top_speed) when that is sufficient.
Drivers
Drivers can be assigned to devices manually or identified automatically via RFID / iButton. Driver identity then appears in history, events and reports.
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_user_drivers | GET | β | List drivers with device assignment and RFID/iButton number |
| /api/add_user_driver | POST | name, device_id, rfid, phone, email, description | Create a driver |
| /api/edit_user_driver | POST | id, name, device_id, rfid | Edit a driver |
| /api/destroy_user_driver | GET | driver_id | Delete a driver |
Sensors
Sensors translate raw protocol parameters into readable values: ignition, fuel level, temperature, door state, battery voltage and more. Sensor values appear inside get_devices responses.
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_sensors | GET | device_id | List sensors of a device |
| /api/add_sensor | POST | device_id, name, type, tag_name, unit_of_measurement | Create a sensor from a protocol parameter |
| /api/edit_sensor | POST | id, name, type | Edit a sensor |
| /api/destroy_sensor | GET | sensor_id | Delete a sensor |
Maintenance
Maintenance items (services) track recurring vehicle obligations β servicing, oil changes, vehicle inspection, insurance β by odometer, engine hours or calendar days, with expiration warnings.
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_services | GET | device_id | Maintenance reminders of a device |
| /api/add_service | POST | device_id, name, expiration_by (odometer / engine_hours / days), interval, trigger_before | Create a maintenance reminder |
| /api/edit_service | POST | id, name, interval | Edit a reminder |
| /api/destroy_service | GET | service_id | Delete a reminder |
Tasks
Tasks represent jobs or deliveries assigned to a vehicle, with pickup/delivery details, priority and status tracking.
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_tasks | GET | β | List tasks / deliveries with status and priority |
| /api/add_task | POST | title, device_id, priority, pickup & delivery address/time | Create a task |
| /api/edit_task | POST | id, status, priority | Update a task |
| /api/destroy_task | GET | task_id | Delete a task |
Account & Setup
| Endpoint | Method | Key parameters | Description |
|---|---|---|---|
| /api/get_user_data | GET | β | Account details: email, device limits, subscription expiration |
| /api/edit_setup_data | GET | β | Full settings data: timezone, units (km/mi, lt/gl), language, groups |
| /api/save_setup | POST | lang, timezone_id, unit_of_distance, unit_of_capacity | Save settings |
| /api/change_password | POST | old_password, new_password | Change password β caution: invalidates the current user_api_hash |
| /api/get_user_map_icons | GET | β | Custom map icons and POI groups |
Plugin-dependent endpoints
The following endpoints are available only when the corresponding platform plugin is enabled on the server. If a call returns HTTP 404 or an HTML error page, the plugin is not active for your account.
| Area | Typical endpoints | Description |
|---|---|---|
| Camera / Media | get_device_media, get_device_media_file | Photos and video clips uploaded by camera-equipped trackers |
| Sharing | get_sharings, add_sharing, destroy_sharing | Temporary public links to view a vehicle's live position |
| Expenses | get_device_expenses, add_device_expense | Vehicle cost logging (fuel, tolls, repairs) |
| Checklists | get_checklists, checklist rows & images | Driver inspection checklists per task or vehicle |
| POIs | get_user_map_icons, add_map_icon | Points of interest shown on the map |
Errors & limits
Successful calls return HTTP 200 with "status": 1. Failures return "status": 0 in the body, or an HTTP error code.
| Code | Meaning | Action |
|---|---|---|
| 200 / status:1 | Success | β |
| 200 / status:0 | Logical error (e.g. invalid parameters) | Check the message field |
| 401 | Invalid or revoked user_api_hash | Log in again to obtain a new hash |
| 404 | Unknown endpoint or resource | Check the path, device_id, and plugin availability |
| 422 | Validation error | Check required parameters and formats |
| 429 | Rate limit exceeded | Reduce request frequency, apply exponential backoff |
Error example
{
"status": 0,
"message": "Wrong email or password"
}
Guidance for AI agents
This section addresses LLM-based agents (Claude, ChatGPT, custom assistants) consuming the API through MCP servers or function calling.
Recommended flow
1. Call get_devices once to map vehicle names to device_id. 2. Use the device_id for history, events, sensors or commands. 3. For current-position questions, get_devices data is sufficient β no second call needed.
Token efficiency
Responses from get_devices and get_history are large. Keep only the fields id, name, online, time, speed, lat, lng, address, and in history the per-segment aggregates (distance, time, status, location) instead of raw GPS points.
Safety & consent
Never store credentials in prompts. Calls to send_gprs_command or any destroy endpoint require explicit user confirmation. Location data is personal data under GDPR β do not expose it to third parties.
https://entopizo.com/llms.txt, following the llms.txt standard.