Last updated

Appendix

Request envelope

Every request body is a JSON object with the Full Truckload data under the truckload key.

FieldTypeRequiredDescription
customerAccountNumberstringNoThe project44 tenant ID of the customer the data is for. Maximum 128 characters.
truckloadobjectYesThe Full Truckload (FTL) body.

customerAccountNumber is the customer's project44 tenant ID — obtain it from the customer or your project44 integration representative.

FTL mode body (truckload)

FieldTypeRequiredDescription
identifiersobjectYesShipment-resolving identifiers. See Identifier reference.
shipmentEventobjectConditionalA single tracking event. Requires type and dateTime. At least one of shipmentEvent or readings must be present.
readingsobjectConditionalPosition and/or sensor readings, with its own dateTime. At least one of shipmentEvent or readings must be present.
assetTypestringNoType of tracked unit: TRUCK, TRAILER, or OTHER. Defaults to TRAILER.
extensionsobjectNoReserved for carrier-specific extension fields.

Objects

Field references for the nested objects under truckload. Timestamps are ISO 8601 date-times (for example 2026-06-01T08:30:00Z) and must not be more than 5 minutes in the future.

shipmentEvent

FieldTypeRequiredDescription
typestringYesThe event type. See FTL event types.
dateTimestringYesISO 8601 date-time of the event (for example 2026-06-01T08:30:00Z).
stopNumberintegerNo1-based stop sequence the event applies to.
stopReferenceIdstringNoCarrier's reference id for the stop.
stopIdstringNoproject44 stop id, if known.
descriptionstringNoFree-text note. Maximum 1024 characters.
sourcestringNoUNKNOWN, CARRIER, or CONTRACT.
exceptionCodestringNoCarrier exception code, if any.

readings

FieldTypeRequiredDescription
dateTimestringYesISO 8601 date-time of the readings (for example 2026-06-01T08:30:00Z).
positionobjectConditionalGPS position. At least one of position or sensor is required.
sensorobjectConditionalTelematics/sensor readings. At least one of position or sensor is required.

readings.position

FieldTypeRequiredDescription
latitudenumberYesDecimal degrees, -90 to 90.
longitudenumberYesDecimal degrees, -180 to 180.
altitudenumberNoMeters.
speednumberNoSpeed, expressed in speedUnit.
headingnumberNoDegrees, 0–359.
speedUnitstringNoKILOMETERS_PER_HOUR or MILES_PER_HOUR.

readings.sensor

FieldTypeDescription
ignitionStatusstringON, OFF, or UNKNOWN.
reeferobjectReefer unit status (see below).
fuelobjectFuel reading (see below).
ambientTemperatureobjectAmbient temperature with value and unit (see below).
zonesarrayPer-zone temperature readings, maximum 5 (see below).
tirePressurearrayTire pressure readings, maximum 22 (see below).
shockobjectShock event reading (see below).
vibrationobjectVibration reading (see below).

readings.sensor.reefer

FieldTypeDescription
statestringON, OFF, UNKNOWN.
powerSourcestringDIESEL, ELECTRIC, LIQUEFIED_PETROLEUM_GAS, BATTERY, UNKNOWN.
operatingModestringCONTINUOUS, CYCLE_SENTRY, START_STOP, UNKNOWN.
engineRpmintegerReefer engine RPM.
engineHoursnumberCumulative engine hours.
voltagenumberReefer battery voltage.

readings.sensor.fuel

FieldTypeDescription
typestringDIESEL, GASOLINE, ELECTRIC, LIQUEFIED_NATURAL_GAS, COMPRESSED_NATURAL_GAS.
currentLevelnumber0–100.
capacitynumberTank capacity.
fuelUnitstringPERCENT, LITER, GALLON, PERCENT_REMAINING, KWH.

readings.sensor.zones[]

Each temperature zone. All temperatures in a zone share the zone's temperatureUnit.

FieldTypeDescription
idstringZONE1ZONE5. Single-zone units send ZONE1.
returnAirTemperaturenumber-100 to 100.
dischargeAirTemperaturenumber-100 to 100.
supplyAirTemperaturenumber-100 to 100.
setPointnumberTarget temperature, -100 to 100.
temperatureUnitstringCELSIUS or FAHRENHEIT.
humidityobject{ "percentage": 0–100 }.
batteryobject{ "percentage": 0–100, "isCharging": boolean }.
doorStatestringOPEN, CLOSED, UNKNOWN.

readings.sensor.ambientTemperature

FieldTypeDescription
valuenumberAmbient temperature.
unitstringCELSIUS or FAHRENHEIT.

readings.sensor.tirePressure[]

FieldTypeDescription
axleinteger1-based axle number.
positionstringLEFT, RIGHT, INNER_LEFT, OUTER_LEFT, INNER_RIGHT, OUTER_RIGHT.
psinumber0–250.
alarmStatestringOK, LOW, HIGH, CRITICAL, UNKNOWN.

readings.sensor.shock

FieldTypeDescription
magnitudenumberShock magnitude.
unitstringG.
axisstringX, Y, Z, RESULTANT.
durationInMillisecondsintegerDuration of the shock event.
thresholdExceededbooleanWhether a configured threshold was exceeded.
thresholdValuenumberThe configured threshold.

readings.sensor.vibration

FieldTypeDescription
valuenumberVibration value.
unitstringG, G_RMS, IN_PER_SEC, MM_PER_SEC, MIL, UM, DB, VDV.
axisstringX, Y, Z, RESULTANT.
frequencyInHertznumberDominant frequency.

Identifier reference

The identifiers object uses named keys, not a polymorphic typed array. At least one of billOfLadingNumber or orderNumber is required; each value is a string with a maximum length of 256 characters.

CategoryKeyDescription
ShipmentbillOfLadingNumberThe shipment's bill of lading (BOL) number.
ShipmentorderNumberThe shipment's order number.

Additional identifier keys are accepted and stored, but only billOfLadingNumber and orderNumber currently resolve the shipment. Leading and trailing whitespace on identifier values is trimmed before matching.

Stop coupling

Stop-coupled events reference a stop through the shipmentEvent object (not identifiers), using any of stopReferenceId, stopId, or stopNumber. All three are optional. When more than one is present, they are resolved in the priority order stopReferenceId > stopId > stopNumber.


FTL event types

The endpoint accepts project44's standard shipment event types plus the truckload terminal events ARRIVED_AT_TERMINAL and DEPARTED_TERMINAL. The complete list is in the reference documentation. Other values are accepted and stored but do not change the shipment's status; only the events below produce a status milestone:

Event typeDescription
ARRIVAL_AT_STOPVehicle has arrived at the stop.
DEPARTURE_FROM_STOPVehicle has departed from the stop.
LOAD_ONTO_VEHICLEFreight is being loaded onto the vehicle.
UNLOAD_FROM_VEHICLEFreight is being unloaded from the vehicle.
DELIVERYFreight has been delivered.
GATE_INUnit has entered the gate/facility.
GATE_OUTUnit has exited the gate/facility.
DISPATCHVehicle has been dispatched.
ARRIVED_AT_TERMINALUnit has arrived at a terminal.
DEPARTED_TERMINALUnit has departed a terminal.

Events that do not map to a milestone (for example PICKED_UP, OUT_FOR_DELIVERY) are accepted with 202 and stored, but do not change the shipment's status. A position update flows whenever readings.position is present, regardless of the event type.


Payload limits

EntityLimit
Total payload1 MB
identifiers keys250
Identifier value length256 characters
readings.sensor.zones[] items5
readings.sensor.tirePressure[] items22

Error response codes

If there was a problem with your request, you will receive one of the following HTTP status codes:

Status codeMeaning
400 Bad RequestSynchronous schema validation failed. The response body lists each violation. The event was not accepted.
401 UnauthorizedAuthentication credentials are missing or invalid.
403 ForbiddenYour credentials are not authorized to push for this tenant.
404 Not FoundThe requested resource does not exist.
413 Content Too LargePayload exceeds the 1 MB size limit.

No 5xx status is surfaced externally.

Error response body

Validation errors return the standard project44 ApiError envelope. errors[] may carry more than one entry (for example, an empty identifiers object returns three). errorMessage and source are returned null; supportReferenceId is a reference id to quote when contacting project44 support.

JSON
{
  "httpStatusCode": 400,
  "httpMessage": "Bad Request",
  "errorMessage": null,
  "errors": [
    {
      "severity": "ERROR",
      "message": "$.truckload.readings.position: required property 'latitude' not found",
      "diagnostic": "MISSING_REQUIRED_FIELD at $.truckload.readings.position",
      "source": null
    }
  ],
  "supportReferenceId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Error Response FieldDescription
httpStatusCodeThe value of the HTTP status code.
httpMessageA brief description of the HTTP status code.
errorMessageA detailed description of the error. Returned null for schema-validation errors.
errorsAn array containing one entry per violation.
errors.severityThe severity of the message. Possible values: ERROR, WARNING, INFO.
errors.messageThe JSON path of the offending field plus the reason.
errors.diagnosticA machine-readable diagnostic code and the JSON path (for example MISSING_REQUIRED_FIELD at $.truckload.identifiers).
errors.sourceThe originator of the error. Returned null for schema-validation errors.
supportReferenceIdA reference identifier to quote when contacting project44 support.