Vera Public API (1.0.0)

Download OpenAPI specification:

Public REST API for fleet tracking data (vehicles, live locations, reports, and history). Replaces the legacy SOAP web service; the modernized JSON field names below fully replace the legacy SOAP fields for all API consumers.

Authentication

All endpoints require an API key sent as an HTTP Bearer token: Authorization: Bearer <key>. Keys are issued per firm; each key is scoped to that firm's vehicles only.

Response envelope

Successful responses always use the shape { "data": ..., "meta": { "count": N } }. Failures use { "error": { "code": "...", "message": "..." } } with a machine-readable code and a human-readable English message.

Ownership guard

If a requested deviceId does not belong to the caller's account (per the key's vehicle scope), the API does not return 404/403 — it returns HTTP 200 with an empty result: { "data": [], "meta": { "count": 0 } }. This matches the legacy service's "no result set" behavior for unauthorized/unknown devices.

Date-range limits

Report and history endpoints that accept date1/date2 enforce a server-side maximum range:

  • /v1/history/tracking: 300 days
  • all other date-ranged endpoints (/v1/reports/mileage, /v1/reports/working-hours, /v1/reports/heat, /v1/history/alarms): 32 days

Exceeding the cap, or sending date1 after date2, or an unparseable date, returns HTTP 422 with {"error":{"code":"INVALID_DATE_RANGE", ...}}.

Auth

API key verification.

Verify an API key

Confirms whether the supplied Authorization: Bearer API key is valid, active, and (if IP-restricted) called from an allowed IP. The key is already authenticated by middleware before this handler runs, so a 200 response simply confirms validity.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "meta": { }
}

Vehicles

Fleet vehicle listing.

List all vehicles for the authenticated account

Returns every vehicle the API key's account has access to (via the account's vehicle scope). No query parameters. The legacy DRIVER field is intentionally omitted from this endpoint (wire parity with the legacy service).

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Locations

Live/last-known vehicle locations.

Get the last known location for one or all vehicles

Returns the most recent known position/telemetry per vehicle. If deviceId is omitted or empty, returns the last location for every vehicle in the account's scope. If deviceId is supplied but does not belong to the account, returns an empty list (ownership guard — see top-level description), not an error.

Authorizations:
bearerAuth
query Parameters
deviceId
string
Example: deviceId=352093081234567

Device identifier (IMEI). Omit or leave empty to include all vehicles in the account's scope. If a deviceId is supplied that does not belong to the account, the response is an empty list (HTTP 200), not an error.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Reports

Mileage, working-hours, and heat reports over a date range.

Daily mileage (distance) report

Returns per-device, per-day distance traveled (km) between date1 and date2 (inclusive). deviceId is optional; omit for all vehicles in scope. Maximum range: 32 days.

Authorizations:
bearerAuth
query Parameters
deviceId
string
Example: deviceId=352093081234567

Device identifier (IMEI). Omit or leave empty to include all vehicles in the account's scope. If a deviceId is supplied that does not belong to the account, the response is an empty list (HTTP 200), not an error.

date1
required
string <date>
Example: date1=2026-07-01

Range start date, inclusive, YYYY-MM-DD.

date2
required
string <date>
Example: date2=2026-07-02

Range end date, inclusive, YYYY-MM-DD. Must not be before date1.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Aggregate working-hours report

Returns one aggregate working-hours total per device over the date1..date2 range (not one row per day). deviceId is optional; omit for all vehicles in scope. Maximum range: 32 days. The always-empty legacy DATE field is removed from this endpoint's output.

Authorizations:
bearerAuth
query Parameters
deviceId
string
Example: deviceId=352093081234567

Device identifier (IMEI). Omit or leave empty to include all vehicles in the account's scope. If a deviceId is supplied that does not belong to the account, the response is an empty list (HTTP 200), not an error.

date1
required
string <date>
Example: date1=2026-07-01

Range start date, inclusive, YYYY-MM-DD.

date2
required
string <date>
Example: date2=2026-07-02

Range end date, inclusive, YYYY-MM-DD. Must not be before date1.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Temperature (heat sensor) report

Returns temperature-sensor readings with position/telemetry context for a single device between date1 and date2. deviceId is required. Maximum range: 32 days.

Authorizations:
bearerAuth
query Parameters
deviceId
required
string
Example: deviceId=352093081234567

Device identifier (IMEI). Required for this endpoint. If the device does not belong to the account, the response is an empty list (HTTP 200), not an error. Omitting it returns HTTP 422 with {"error":{"code":"MISSING_PARAMETER", ...}}.

date1
required
string <date>
Example: date1=2026-07-01

Range start date, inclusive, YYYY-MM-DD.

date2
required
string <date>
Example: date2=2026-07-02

Range end date, inclusive, YYYY-MM-DD. Must not be before date1.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

CAN-Bus telemetry report

Returns CAN-Bus telemetry readings (engine RPM, coolant temperature, speed, fuel level, distance, fuel usage, etc.) for a single device between date1 and date2. deviceId is required. Maximum range: 32 days. One row per reading timestamp; a signal absent from a reading is null.

Authorizations:
bearerAuth
query Parameters
deviceId
required
string
Example: deviceId=352093081234567

Device identifier (IMEI). Required for this endpoint. If the device does not belong to the account, the response is an empty list (HTTP 200), not an error. Omitting it returns HTTP 422 with {"error":{"code":"MISSING_PARAMETER", ...}}.

date1
required
string <date>
Example: date1=2026-07-01

Range start date, inclusive, YYYY-MM-DD.

date2
required
string <date>
Example: date2=2026-07-02

Range end date, inclusive, YYYY-MM-DD. Must not be before date1.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Passenger boarding/alighting report

Returns passenger ride records (boarding and alighting time, location, and coordinates, plus plate and device) for the caller's firm between date1 and date2 (over the boarding time). Unlike the other report endpoints, this is scoped by firm, not by device — the caller sees all passenger rides for their firm. Maximum range: 32 days. An optional plateNumber filters by plate (partial match).

Authorizations:
bearerAuth
query Parameters
date1
required
string <date>
Example: date1=2026-07-01

Range start date, inclusive, YYYY-MM-DD.

date2
required
string <date>
Example: date2=2026-07-02

Range end date, inclusive, YYYY-MM-DD. Must not be before date1.

plateNumber
string
Example: plateNumber=34 ABC

Optional plate filter (partial, case-insensitive match).

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

History

Historical tracking and alarm event data over a date range.

Historical tracking (breadcrumb) points

Returns historical position/telemetry points for a single device between date1 and date2. deviceId is required. Maximum range: 300 days (wider than other date-ranged endpoints).

Authorizations:
bearerAuth
query Parameters
deviceId
required
string
Example: deviceId=352093081234567

Device identifier (IMEI). Required for this endpoint. If the device does not belong to the account, the response is an empty list (HTTP 200), not an error. Omitting it returns HTTP 422 with {"error":{"code":"MISSING_PARAMETER", ...}}.

date1
required
string <date>
Example: date1=2026-07-01

Range start date, inclusive, YYYY-MM-DD.

date2
required
string <date>
Example: date2=2026-07-02

Range end date, inclusive, YYYY-MM-DD. Must not be before date1.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Historical alarm events

Returns historical alarm events with position context for a single device between date1 and date2. deviceId is required. Maximum range: 32 days. Unlike the other history/report endpoints, rows do not include an ignition field.

Authorizations:
bearerAuth
query Parameters
deviceId
required
string
Example: deviceId=352093081234567

Device identifier (IMEI). Required for this endpoint. If the device does not belong to the account, the response is an empty list (HTTP 200), not an error. Omitting it returns HTTP 422 with {"error":{"code":"MISSING_PARAMETER", ...}}.

date1
required
string <date>
Example: date1=2026-07-01

Range start date, inclusive, YYYY-MM-DD.

date2
required
string <date>
Example: date2=2026-07-02

Range end date, inclusive, YYYY-MM-DD. Must not be before date1.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}