Trans IT API: transports

Read-only access to your own transports, their orders and waypoints, and the documents on them. Send `x-customer-id` and `x-api-key` on every request. Both come from the link we send you, and the API key is shown only once. A transport id contains `#`, which ends a URL path. Percent-encode it as `%23`. The fields marked always in the tables below are the only ones you can count on. Everything else can be absent on any row, so make it optional in your generated types. A field being present on every transport you have seen so far is not a promise that it will be on the next one. Empty fields are left out rather than returned as null, and never as an empty string. A field is either present with a real value or absent, and absent means we do not have it.

Authentication

HeaderValue
x-customer-idrequired on every request
x-api-keyrequired on every request

Base url: https://api.trans-it.be

Transports

Transports with their orders and waypoints.

GET /transports/{id} One transport by id, including its documents

Documents are always included here. Percent-encode the id.

Parameters

NameInTypeNotes
id requiredpathstring

Responses

CodeMeaning
200The transport. returns Transport
400A parameter is missing or invalid. The message says which.
401Headers missing, unknown customer id, or wrong API key.
403Your access is suspended, or the item belongs to someone else.
404The transport does not exist.
429Too many requests.
GET /transports/byDateRange Transports within a planned date range

The range is inclusive and can cover at most 7 days.

Parameters

NameInTypeNotes
dateFrom requiredquerystring (date)Start of the planned date range, inclusive.
dateTo requiredquerystring (date)End of the planned date range, inclusive. At most 7 days after dateFrom.
limit queryintegerRows per page. Without includeDocuments: 1 to 100, 50 by default. With includeDocuments=true: 1 to 25, 25 by default.
Default 50
includeDocuments querybooleanAdd the documents to every transport in the list. This makes the call noticeably slower, because the documents of each transport have to be looked up separately. Leave it off unless you really need them, and use GET /documents/byTransport/{transportId} for the one transport you are after.
Default false
nextToken querystringValue from the previous response. A page can be empty and still carry one. A token belongs to the search that produced it: keep the endpoint, the search value and the date range the same while paging, otherwise you get a 400.

Responses

CodeMeaning
200Transports, most recent planned date first. returns a list of Transport
400A parameter is missing or invalid. The message says which.
401Headers missing, unknown customer id, or wrong API key.
403Your access is suspended, or the item belongs to someone else.
429Too many requests.
GET /transports/byContainerNumber/{containerNumber} Transports for one container number

The number is normalised: uppercased, and anything that is not a letter or a digit is dropped, so `mscu 123456-7` matches `MSCU1234567`. A date range is optional and usually unnecessary, because the search goes straight to the container number.

Parameters

NameInTypeNotes
containerNumber requiredpathstring
dateFrom querystring (date)Start of the planned date range, inclusive.
dateTo querystring (date)End of the planned date range, inclusive. At most 7 days after dateFrom.
limit queryintegerRows per page. Without includeDocuments: 1 to 100, 50 by default. With includeDocuments=true: 1 to 25, 25 by default.
Default 50
includeDocuments querybooleanAdd the documents to every transport in the list. This makes the call noticeably slower, because the documents of each transport have to be looked up separately. Leave it off unless you really need them, and use GET /documents/byTransport/{transportId} for the one transport you are after.
Default false
nextToken querystringValue from the previous response. A page can be empty and still carry one. A token belongs to the search that produced it: keep the endpoint, the search value and the date range the same while paging, otherwise you get a 400.

Responses

CodeMeaning
200Transports, most recent planned date first. returns a list of Transport
400A parameter is missing or invalid. The message says which.
401Headers missing, unknown customer id, or wrong API key.
403Your access is suspended, or the item belongs to someone else.
429Too many requests.
GET /transports/byCustomerReference/{customerReference} Transports for one of your own references

References are matched exactly, including case. A date range is optional and usually unnecessary.

Parameters

NameInTypeNotes
customerReference requiredpathstring
dateFrom querystring (date)Start of the planned date range, inclusive.
dateTo querystring (date)End of the planned date range, inclusive. At most 7 days after dateFrom.
limit queryintegerRows per page. Without includeDocuments: 1 to 100, 50 by default. With includeDocuments=true: 1 to 25, 25 by default.
Default 50
includeDocuments querybooleanAdd the documents to every transport in the list. This makes the call noticeably slower, because the documents of each transport have to be looked up separately. Leave it off unless you really need them, and use GET /documents/byTransport/{transportId} for the one transport you are after.
Default false
nextToken querystringValue from the previous response. A page can be empty and still carry one. A token belongs to the search that produced it: keep the endpoint, the search value and the date range the same while paging, otherwise you get a 400.

Responses

CodeMeaning
200Transports, most recent planned date first. returns a list of Transport
400A parameter is missing or invalid. The message says which.
401Headers missing, unknown customer id, or wrong API key.
403Your access is suspended, or the item belongs to someone else.
429Too many requests.

Documents

The documents on a transport, and links to the files.

GET /documents/byTransport/{transportId} The documents on one transport

Not paged: every document on the transport comes back in one response.

Parameters

NameInTypeNotes
transportId requiredpathstring

Responses

CodeMeaning
200The documents. returns a list of Document
400A parameter is missing or invalid. The message says which.
401Headers missing, unknown customer id, or wrong API key.
403Your access is suspended, or the item belongs to someone else.
404The transport does not exist.
429Too many requests.
GET /documents/presignedUrl/{id} A link to one document file

Download from the returned URL without your API headers: the link carries its own permission and is valid for 15 minutes. Do not store it, ask for a new one instead.

Parameters

NameInTypeNotes
id requiredpathstring

Responses

CodeMeaning
200The link. returns PresignedUrl
400A parameter is missing or invalid. The message says which.
401Headers missing, unknown customer id, or wrong API key.
403Your access is suspended, or the item belongs to someone else.
404The document does not exist, or has no file.
429Too many requests.

Schemas

Transport

Only the fields marked always are guaranteed. Everything else can be absent, including createdAt and version. The container fields appear on container transports only.

FieldAlwaysTypeNotes
idalwaysstringExample: #TransportId#7f21c0#CustomerCompanyName#VanDijk
transportCategoryalwaysCONTAINER_TRANSPORT CURTAIN_TRANSPORT SEMI_TRAILER_TRANSPORT COURIER_SERVICE
typealwaysLOAD UNLOAD SHUNT OTHER STANDARDWorked out from the stops, in the order they happen and across all orders together, because the planned value is not always right. A load before an unload is STANDARD; a pickup before the last dropoff without either is SHUNT. A transport without waypoints keeps the planned value.
statuscan be absentCREATED INPROGRESS COMPLETE
transportNumbercan be absentstringThe transport number as it is shown in the portal, prefixed with TR-.
Example: TR-10482
tautlinerNumbercan be absentstring
plannedDatealwaysstring (date)Example: 2026-08-03
customerReferencecan be absentstringYour own reference.
containerNumbercan be absentstringAlways uppercase.
Example: MSCU1234567
sealNumbercan be absentstring
containerTypecan be absentstring
containerLinerNamecan be absentstring
containerLinerCodecan be absentstring
containerBoatcan be absentstring
shipcan be absentstring
containerTarWeightcan be absentnumber
containerTarWeightUnitcan be absentTON KG
cargoWeightcan be absentnumber
cargoWeightUnitcan be absentTON KG
goodscan be absentstring
customsInfocan be absentstring
isAdrcan be absentboolean
unNumberscan be absentarray of UnNumber
isPharmacan be absentboolean
isGensetcan be absentboolean
gensetTemperaturecan be absentnumber
isCocContainercan be absentboolean
isSocContainercan be absentboolean
isTiltingChassiscan be absentboolean
isGarbageTransportcan be absentboolean
isLateCancellationcan be absentboolean
isDeadFreightcan be absentboolean
versioncan be absentintegerGoes up on every real change. Useful for deduplication.
createdAtcan be absentstring (date-time)
updatedAtcan be absentstring (date-time)
ordersalwaysarray of OrderAlways ordered by index.
documentscan be absentarray of DocumentAlways on GET /transports/{id}. On a list only with includeDocuments=true.

Order

Only the fields marked always are guaranteed. index and waypoints are nullable in our source data, so check them. The number plates appear once a truck has been assigned.

FieldAlwaysTypeNotes
idalwaysstring
indexcan be absentintegerPosition within the transport, and the order we return them in.
typecan be absentLOAD UNLOAD SHUNT OTHER STANDARD
statuscan be absentCREATED INPROGRESS COMPLETE
plannedDatealwaysstring (date)
truckNumberPlatecan be absentstring
trailerNumberPlatecan be absentstring
waypointscan be absentarray of WaypointAlways ordered by index.

Waypoint

Only the fields marked always are guaranteed. type and status are almost always there but are nullable in our source data. The driver and waiting timestamps fill up as the transport runs.

FieldAlwaysTypeNotes
idalwaysstring
indexalwaysinteger
typecan be absentPICKUP DROPOFF DEPOT LOAD UNLOAD WEIGH CUSTOMS SCAN OTHER
statuscan be absentNOTVISITED ONSITE INPROGRESS COMPLETE
isScheduledcan be absentboolean
isMainWaypointcan be absentboolean
plannedDatecan be absentstring (date)
appointmentDatecan be absentstring (date)Example: 2026-08-03
appointmentTimecan be absentstringBelgian local time. Absent when a date was agreed but no time.
Example: 08:30:00
portAppointmentTimeSlotcan be absentTimeSlot
planInfoUpdatedAtcan be absentstring (date-time)
closingcan be absentstring (date-time)
referencecan be absentstring
tarTasReferencecan be absentstringThe pre-announcement reference.
paNumbercan be absentstring
locationcan be absentLocationYour supplier can agree with you that this is shared only for CUSTOMS, WEIGH, SCAN, LOAD and UNLOAD stops. It is then absent on the others. A shunt keeps all of its locations.
etacan be absentstring (date-time)
driverHasArrivedTimestampcan be absentstring (date-time)The corrected time when a planner corrected it afterwards.
driverHasExitedTimestampcan be absentstring (date-time)
waypointInProgressTimestampcan be absentstring (date-time)
waypointCompleteTimestampcan be absentstring (date-time)
totalWaitingHourscan be absentnumber

TimeSlot

Both ends as full timestamps. A slot that runs past midnight ends on the next day.

FieldAlwaysTypeNotes
startcan be absentstring (date-time)Example: 2026-09-02T03:00:00.000+02:00
endcan be absentstring (date-time)Example: 2026-09-02T04:00:00.000+02:00

Location

Nothing here is guaranteed. When a waypoint has no location on file but does have an address, the same object is built from that address, and id, name, shortName and postalCode are absent.

FieldAlwaysTypeNotes
idcan be absentstring
namecan be absentstring
shortNamecan be absentstring
addressLinecan be absentstring
postalCodecan be absentstring
citycan be absentstring
localitycan be absentstring
latitudecan be absentnumber
longitudecan be absentnumber

UnNumber

FieldAlwaysTypeNotes
unnumbercan be absentstringExample: UN1234
descriptioncan be absentstring

Document

Beyond the fields marked always, type and description can be absent.

FieldAlwaysTypeNotes
idalwaysstringUse it for GET /documents/presignedUrl/{id}.
transportIdalwaysstringThe transport this document hangs on. A document is only ever returned through it.
namealwaysstringExample: CMR.pdf
typecan be absentstringExample: CMR
descriptioncan be absentstring

PresignedUrl

FieldAlwaysTypeNotes
urlcan be absentstring (uri)
expiresAtcan be absentstring (date-time)
namecan be absentstring