ZERION ELD API

Read your fleet straight out of ZERION ELD: vehicles, drivers, current duty status and last known vehicle position. Everything is scoped to your own company — one set of credentials only ever sees your own data.

Base URL

Every endpoint below is relative to this base. It is always the host you are reading these docs on.

Requests

All endpoints are POST. Filters and paging (id, skip, limit) go in the query string; only Authentication takes a JSON body.

Authentication

Call Authentication with your API user and company token to get a bearer token, then send it on every other request. Tokens last 24 hours — cache one and re-authenticate when it expires rather than logging in per request.

Rate & volume

List endpoints return up to limit records (default 1000). For fleets larger than that, page with skip. The status endpoints are the ones worth polling; a minute between polls is plenty, since positions update as devices report in.

Machine-readable spec

An OpenAPI 3.0 document describes everything on this page. Import it into Postman or Insomnia to get a ready-made collection pointed at this host.

Base URL
http://app.zerioneld.com/api/HosconnectApi
Authorization header
Authorization: Bearer <accessToken>
Duty status codes
DS_OFF   off duty
DS_SB    sleeper berth
DS_D     driving
DS_ON    on duty, not driving
Authentication

Get an access token

POST /api/HosconnectApi/Authentication Public

Exchange your API credentials for a bearer token.

The token is a JWT valid for 24 hours. Send it as an Authorization: Bearer header on every other endpoint. Credentials are issued per company — contact support to have an API user created for your account.

Parameters

user string · body required API user login.
password string · body required API user password.
company string · body required Your company token. This value scopes every subsequent request — you only ever see your own fleet.

Response

accessTokenstring JWT bearer token. Expires 24 hours after issue.

Errors

400"Not found this user." No API user matches the supplied user and password.
400"This user deleted." The API user exists but has been deactivated.
400"Not found this company." The company token is not recognised.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/Authentication" \
  -H "Content-Type: application/json" \
  -d '{
  "user": "acme-api",
  "password": "••••••••",
  "company": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f"
}'
Response 200
{
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGki..."
}
Company

Get company

POST /api/HosconnectApi/Companies Public

Resolve a company token to the company it belongs to.

Useful as a connectivity check before authenticating: it confirms a company token is valid without needing credentials.

Parameters

ID string · query required The company token.

Response

_idstring The company token, echoed back.
namestring Registered company name.

Errors

400"Not found Company." No company matches that token.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/Companies?ID=YOUR_COMPANY_TOKEN" \
  -H "Content-Type: application/json"
Response 200
{
  "_id": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f",
  "name": "Acme Trucking LLC"
}
Vehicles

List vehicles

POST /api/HosconnectApi/vehicles Bearer token

Every vehicle on your account, ordered by unit number.

Deactivated vehicles are included with active: false, so you can reconcile historical records.

Parameters

skip integer · query default 0 Number of records to skip. Use with limit to page through large fleets.
limit integer · query default 1000 Maximum number of records to return.

Response

_idstring Vehicle ID. Pass this as id to the single-vehicle and vehicle-status endpoints.
namestring Vehicle unit number as shown in the portal.
vinstring Vehicle identification number.
activeboolean false once the vehicle has been deactivated.
companyIdstring Your company token.

Errors

401Unauthorized Missing, malformed, or expired bearer token. Tokens are valid for 24 hours — call Authentication again.
400"Not found api user." The API user behind the token has since been deleted.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/vehicles?skip=0&limit=1000" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json"
Response 200
{
  "data": [
    {
      "_id": "4821",
      "name": "104",
      "vin": "1FUJGLDR8CLBP8834",
      "active": true,
      "companyId": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f"
    }
  ]
}
Vehicles

Get a vehicle

POST /api/HosconnectApi/vehicle Bearer token

A single vehicle by ID.

Returned unwrapped — this endpoint responds with the vehicle object itself, not a data array.

Parameters

id integer · query required Vehicle ID, as returned in _id by List vehicles.

Response

_idstring Vehicle ID. Pass this as id to the single-vehicle and vehicle-status endpoints.
namestring Vehicle unit number as shown in the portal.
vinstring Vehicle identification number.
activeboolean false once the vehicle has been deactivated.
companyIdstring Your company token.

Errors

401Unauthorized Missing, malformed, or expired bearer token. Tokens are valid for 24 hours — call Authentication again.
400"Not found api user." The API user behind the token has since been deleted.
400"Not found vehicle." No vehicle with that ID belongs to your company.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/vehicle?id=0" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json"
Response 200
{
  "_id": "4821",
  "name": "104",
  "vin": "1FUJGLDR8CLBP8834",
  "active": true,
  "companyId": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f"
}
Drivers

List drivers

POST /api/HosconnectApi/drivers Bearer token

Active drivers on your account, ordered by name.

Unlike vehicles, deactivated drivers are omitted entirely.

Parameters

skip integer · query default 0 Number of records to skip. Use with limit to page through large fleets.
limit integer · query default 1000 Maximum number of records to return.

Response

_idstring Driver ID. Pass this as id to the single-driver and driver-status endpoints.
usernamestring The driver's portal / mobile app login.
firstNamestring Driver first name.
lastNamestring Driver last name.
companyIdstring Your company token.

Errors

401Unauthorized Missing, malformed, or expired bearer token. Tokens are valid for 24 hours — call Authentication again.
400"Not found api user." The API user behind the token has since been deleted.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/drivers?skip=0&limit=1000" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json"
Response 200
{
  "data": [
    {
      "_id": "9134",
      "username": "jdoe",
      "firstName": "John",
      "lastName": "Doe",
      "companyId": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f"
    }
  ]
}
Drivers

Get a driver

POST /api/HosconnectApi/driver Bearer token

A single active driver by ID.

Returned unwrapped — this endpoint responds with the driver object itself, not a data array.

Parameters

id integer · query required Driver ID, as returned in _id by List drivers.

Response

_idstring Driver ID. Pass this as id to the single-driver and driver-status endpoints.
usernamestring The driver's portal / mobile app login.
firstNamestring Driver first name.
lastNamestring Driver last name.
companyIdstring Your company token.

Errors

401Unauthorized Missing, malformed, or expired bearer token. Tokens are valid for 24 hours — call Authentication again.
400"Not found api user." The API user behind the token has since been deleted.
400"Not found driver." No active driver with that ID belongs to your company.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/driver?id=0" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json"
Response 200
{
  "_id": "9134",
  "username": "jdoe",
  "firstName": "John",
  "lastName": "Doe",
  "companyId": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f"
}
Last Driver Status

Last driver status

POST /api/HosconnectApi/latest_driver_statuses Bearer token

Current duty status and remaining hours for every driver, or for one driver.

Omit id (or send 0) for the whole fleet; pass a driver ID for a single driver. The clock fields are seconds remaining; the matching *Text fields are the same values formatted as HH:MM for display, and go negative once a limit is exceeded.

Parameters

id integer · query default 0 Driver ID to filter by. 0 returns all drivers.
skip integer · query default 0 Number of records to skip. Use with limit to page through large fleets.
limit integer · query default 1000 Maximum number of records to return.

Response

CompanyIdstring Your company token.
DriverIDinteger Driver ID.
dutyStatusstring Current duty status: DS_OFF (off duty), DS_SB (sleeper berth), DS_D (driving), DS_ON (on duty, not driving).
Breakinteger Seconds until the 30-minute break is required.
Driveinteger Seconds of driving time remaining.
Shiftinteger Seconds remaining in the shift (14-hour) window.
Cycleinteger Seconds remaining in the cycle (60/70-hour) window.
BreakText / DriveText / ShiftText / CycleTextstring The same four clocks formatted as HH:MM. Prefixed with "-" when the limit has been exceeded.
UserIdstring Reserved. Currently always null.

Errors

401Unauthorized Missing, malformed, or expired bearer token. Tokens are valid for 24 hours — call Authentication again.
400"Not found api user." The API user behind the token has since been deleted.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/latest_driver_statuses?id=0&skip=0&limit=1000" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json"
Response 200
{
  "data": [
    {
      "CompanyId": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f",
      "UserId": null,
      "DriverID": 9134,
      "dutyStatus": "DS_D",
      "Break": 12600,
      "Drive": 21600,
      "Shift": 25200,
      "Cycle": 158400,
      "BreakText": "03:30",
      "DriveText": "06:00",
      "ShiftText": "07:00",
      "CycleText": "44:00"
    }
  ]
}
Last Vehicle Status

Last vehicle status

POST /api/HosconnectApi/latest_vehicle_statuses Bearer token

Latest known position, speed and odometer for every vehicle, or for one vehicle.

Omit id (or send 0) for the whole fleet; pass a vehicle ID for a single vehicle. Positions come from the last GPS record received from the device, so a vehicle that is parked out of coverage keeps reporting its last known point.

Parameters

id integer · query default 0 Vehicle ID to filter by. 0 returns all vehicles.
skip integer · query default 0 Number of records to skip. Use with limit to page through large fleets.
limit integer · query default 1000 Maximum number of records to return.

Response

CompanyIdstring Your company token.
vehicleIdstring Vehicle ID.
lat / lonnumber Last known coordinates, in decimal degrees.
speedinteger Speed in mph. Reported as 0 unless the vehicle is moving (code "M").
odometerinteger Odometer reading in miles.
codestring "M" when the vehicle is moving (driver in driving status), "S" when stationary.
timestring Timestamp of the position, "yyyy-MM-dd HH:mm:ss". UTC or the account's local time depending on how your API user is configured.

Errors

401Unauthorized Missing, malformed, or expired bearer token. Tokens are valid for 24 hours — call Authentication again.
400"Not found api user." The API user behind the token has since been deleted.
curl -X POST "http://app.zerioneld.com/api/HosconnectApi/latest_vehicle_statuses?id=0&skip=0&limit=1000" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json"
Response 200
{
  "data": [
    {
      "CompanyId": "7c9e1f4a-2b56-4d1e-9f30-8a1b2c3d4e5f",
      "vehicleId": "4821",
      "lat": 41.878113,
      "lon": -87.629799,
      "speed": 62,
      "odometer": 418327,
      "code": "M",
      "time": "2026-08-26 14:32:07"
    }
  ]
}

Need API credentials?

API users are issued per company. Contact us and we'll set one up for your account, along with your company token.