Skip to main content
Vehicle data (telemetry) is respresented through two extensible models: Vehicle updates and vehicle statuses.

Vehicle update

Vehicle updates represent the raw data ingested from a vehicle, including sensor readings, location information, and system parameters. Generally, you will only have to interact with the VehicleUpdate model when uploading data from a vehicle (see data upload guide for details).

Vehicle status

Vehicle status information represents fully sanitized and augmented data about a vehicle’s current state, including location, fuel levels, battery status, and other operational parameters. This data is derived from raw vehicle updates and is made available through the VehicleStatus model:
{
    "timestamp": "2025-09-17T12:21:49.566Z",  // Time of the status record
    "last_update": "2025-09-17T12:21:49.566Z",  // Time of the last received vehicle update
    "status": "PARK_HOME",  // Operational status: SETUP, PARK, PARK_HOME, FLOATING, CRUISING
    "fuel_level_pct": 0,
    "fuel_level": 0,
    "expected_range": null,
    "remaining_energy_wh": null,
    "remaining_energy_ah": null,
    "state_of_charge_pct": null,
    "battery_main_pct": 100,
    "battery_main_voltage": 13.345333333333334,
    "battery_main_trend": "CHARGE",
    "battery_main_trend_slope": 20.518,
    "battery_ext_1_pct": 71.56935817805379,
    "battery_ext_1_voltage": 26.76133333333333,
    "battery_ext_1_trend": "CHARGE",
    "battery_ext_1_trend_slope": 0.781,
    "battery_ext_2_pct": null,
    "battery_ext_2_voltage": null,
    "battery_ext_2_trend": null,
    "battery_ext_2_trend_slope": null,
    "battery_ext_3_pct": null,
    "battery_ext_3_voltage": null,
    "battery_ext_3_trend": null,
    "battery_ext_3_trend_slope": null,
    "battery_ext_4_pct": null,
    "battery_ext_4_voltage": null,
    "battery_ext_4_trend": null,
    "battery_ext_4_trend_slope": null,
    "speed": 0,
    "total_odometer": null,
    "pdop_value": 10,
    "last_valid_location_update": "2025-09-17T12:21:49.566Z",  // Time of the last valid GPS location
    "distance_to_shore": 39.98442664031744,
    "shore_zone": "OPEN_SEA",
    "temp_1": 33.25,
    "temp_2": 27.93,
    "temp_3": 30,
    "temp_4": 26.87,
    "sensor_temp_1_state": "G",
    "sensor_temp_2_state": "G",
    "sensor_temp_3_state": "G",
    "sensor_temp_4_state": "G",
    "sensor_relative_humidity_1_pct": 0,
    "sensor_relative_humidity_2_pct": 0,
    "sensor_relative_humidity_3_pct": 0,
    "sensor_relative_humidity_4_pct": 0,
    "sensor_relative_humidity_1_state": "G",
    "sensor_relative_humidity_2_state": "G",
    "sensor_relative_humidity_3_state": "G",
    "sensor_relative_humidity_4_state": "G",
    "sensor_battery_1_pct": 0,
    "sensor_battery_2_pct": 0,
    "sensor_battery_3_pct": 0,
    "sensor_battery_4_pct": 0,
    "temp_motor": null,
    "temp_water": null,
    "landline_voltage": 220,
    "in_water": null,
    "din_1_state": true,
    "din_2_state": true,
    "din_3_state": false,
    "din_4_state": null,
    "din_5_state": null,
    "ignition_on": true,
    "is_locked": null,
    "dout_1_state": null,
    "dout_2_state": null,
    "dout_3_state": null,
    "dout_4_state": null,
    "dout_1_waiting_for_update": null,  // Indicates if the output state change is pending
    "dout_2_waiting_for_update": null,
    "dout_3_waiting_for_update": null,
    "dout_4_waiting_for_update": null,
    "active_geofences": [],  // List of active geofences
    "vehicle_status_can": null,  // CAN bus data, if available
    "vehicle_status_n2k": {  // NMEA2000 data, if available
        "n2k_last_update": "2025-09-17T12:21:49.566Z",
        "n2k_engine_1_seconds": 4286880,
        "n2k_engine_1_seconds_last_update": "2025-09-17T12:21:49.566Z",
        ...
    },
    "vehicle_status_obd2": null,  // OBD2 data, if available
    "longitude": 9.5582564,
    "latitude": 47.4984334,
    "altitude": 404,
    "angle": 180,
    "fuel_level_voltage": 3.6666999999999996,
    "temp_1_trend": "CONST",
    "temp_2_trend": "INCR",
    "temp_3_trend": "CONST",
    "temp_4_trend": "INCR",
    "distance_to_home": 0,
    "fuel_last_update": "2025-09-17T12:21:49.566Z",  // Time of the last fuel level update
    "vehicle_id": "veh_01jnk61e5pf6zs5ag6483xqe43"  // Associated vehicle ID
}
The most up-to-date status of a vehicle can be retrieved by querying:
curl -X GET https://api.ctechnology.io/api/v2.2/vehicle/{vehicle_id}/status \
-H "Authorization: Token {access_token}"
Similarly, the most recent status is always broadcasted via the AsyncAPI WebSocket interface (see AsyncAPI documentation for details) upon connection and whenever a new status is available.
I