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
| Header | Value |
|---|---|
x-customer-id | required on every request |
x-api-key | required 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
| Name | In | Type | Notes |
|---|---|---|---|
id required | path | string |
Responses
| Code | Meaning |
|---|---|
| 200 | The transport. returns Transport |
| 400 | A parameter is missing or invalid. The message says which. |
| 401 | Headers missing, unknown customer id, or wrong API key. |
| 403 | Your access is suspended, or the item belongs to someone else. |
| 404 | The transport does not exist. |
| 429 | Too many requests. |
GET /transports/byDateRange Transports within a planned date range
The range is inclusive and can cover at most 7 days.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dateFrom required | query | string (date) | Start of the planned date range, inclusive. |
dateTo required | query | string (date) | End of the planned date range, inclusive. At most 7 days after dateFrom. |
limit | query | integer | Rows per page. Without includeDocuments: 1 to 100, 50 by default. With includeDocuments=true: 1 to 25, 25 by default. Default 50 |
includeDocuments | query | boolean | Add 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 | query | string | Value 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
| Code | Meaning |
|---|---|
| 200 | Transports, most recent planned date first. returns a list of Transport |
| 400 | A parameter is missing or invalid. The message says which. |
| 401 | Headers missing, unknown customer id, or wrong API key. |
| 403 | Your access is suspended, or the item belongs to someone else. |
| 429 | Too 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
| Name | In | Type | Notes |
|---|---|---|---|
containerNumber required | path | string | |
dateFrom | query | string (date) | Start of the planned date range, inclusive. |
dateTo | query | string (date) | End of the planned date range, inclusive. At most 7 days after dateFrom. |
limit | query | integer | Rows per page. Without includeDocuments: 1 to 100, 50 by default. With includeDocuments=true: 1 to 25, 25 by default. Default 50 |
includeDocuments | query | boolean | Add 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 | query | string | Value 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
| Code | Meaning |
|---|---|
| 200 | Transports, most recent planned date first. returns a list of Transport |
| 400 | A parameter is missing or invalid. The message says which. |
| 401 | Headers missing, unknown customer id, or wrong API key. |
| 403 | Your access is suspended, or the item belongs to someone else. |
| 429 | Too 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
| Name | In | Type | Notes |
|---|---|---|---|
customerReference required | path | string | |
dateFrom | query | string (date) | Start of the planned date range, inclusive. |
dateTo | query | string (date) | End of the planned date range, inclusive. At most 7 days after dateFrom. |
limit | query | integer | Rows per page. Without includeDocuments: 1 to 100, 50 by default. With includeDocuments=true: 1 to 25, 25 by default. Default 50 |
includeDocuments | query | boolean | Add 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 | query | string | Value 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
| Code | Meaning |
|---|---|
| 200 | Transports, most recent planned date first. returns a list of Transport |
| 400 | A parameter is missing or invalid. The message says which. |
| 401 | Headers missing, unknown customer id, or wrong API key. |
| 403 | Your access is suspended, or the item belongs to someone else. |
| 429 | Too 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
| Name | In | Type | Notes |
|---|---|---|---|
transportId required | path | string |
Responses
| Code | Meaning |
|---|---|
| 200 | The documents. returns a list of Document |
| 400 | A parameter is missing or invalid. The message says which. |
| 401 | Headers missing, unknown customer id, or wrong API key. |
| 403 | Your access is suspended, or the item belongs to someone else. |
| 404 | The transport does not exist. |
| 429 | Too 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
| Name | In | Type | Notes |
|---|---|---|---|
id required | path | string |
Responses
| Code | Meaning |
|---|---|
| 200 | The link. returns PresignedUrl |
| 400 | A parameter is missing or invalid. The message says which. |
| 401 | Headers missing, unknown customer id, or wrong API key. |
| 403 | Your access is suspended, or the item belongs to someone else. |
| 404 | The document does not exist, or has no file. |
| 429 | Too 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.
| Field | Always | Type | Notes |
|---|---|---|---|
id | always | string | Example: #TransportId#7f21c0#CustomerCompanyName#VanDijk |
transportCategory | always | CONTAINER_TRANSPORT CURTAIN_TRANSPORT SEMI_TRAILER_TRANSPORT COURIER_SERVICE | |
type | always | LOAD UNLOAD SHUNT OTHER STANDARD | Worked 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. |
status | can be absent | CREATED INPROGRESS COMPLETE | |
transportNumber | can be absent | string | The transport number as it is shown in the portal, prefixed with TR-. Example: TR-10482 |
tautlinerNumber | can be absent | string | |
plannedDate | always | string (date) | Example: 2026-08-03 |
customerReference | can be absent | string | Your own reference. |
containerNumber | can be absent | string | Always uppercase. Example: MSCU1234567 |
sealNumber | can be absent | string | |
containerType | can be absent | string | |
containerLinerName | can be absent | string | |
containerLinerCode | can be absent | string | |
containerBoat | can be absent | string | |
ship | can be absent | string | |
containerTarWeight | can be absent | number | |
containerTarWeightUnit | can be absent | TON KG | |
cargoWeight | can be absent | number | |
cargoWeightUnit | can be absent | TON KG | |
goods | can be absent | string | |
customsInfo | can be absent | string | |
isAdr | can be absent | boolean | |
unNumbers | can be absent | array of UnNumber | |
isPharma | can be absent | boolean | |
isGenset | can be absent | boolean | |
gensetTemperature | can be absent | number | |
isCocContainer | can be absent | boolean | |
isSocContainer | can be absent | boolean | |
isTiltingChassis | can be absent | boolean | |
isGarbageTransport | can be absent | boolean | |
isLateCancellation | can be absent | boolean | |
isDeadFreight | can be absent | boolean | |
version | can be absent | integer | Goes up on every real change. Useful for deduplication. |
createdAt | can be absent | string (date-time) | |
updatedAt | can be absent | string (date-time) | |
orders | always | array of Order | Always ordered by index. |
documents | can be absent | array of Document | Always 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.
| Field | Always | Type | Notes |
|---|---|---|---|
id | always | string | |
index | can be absent | integer | Position within the transport, and the order we return them in. |
type | can be absent | LOAD UNLOAD SHUNT OTHER STANDARD | |
status | can be absent | CREATED INPROGRESS COMPLETE | |
plannedDate | always | string (date) | |
truckNumberPlate | can be absent | string | |
trailerNumberPlate | can be absent | string | |
waypoints | can be absent | array of Waypoint | Always 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.
| Field | Always | Type | Notes |
|---|---|---|---|
id | always | string | |
index | always | integer | |
type | can be absent | PICKUP DROPOFF DEPOT LOAD UNLOAD WEIGH CUSTOMS SCAN OTHER | |
status | can be absent | NOTVISITED ONSITE INPROGRESS COMPLETE | |
isScheduled | can be absent | boolean | |
isMainWaypoint | can be absent | boolean | |
plannedDate | can be absent | string (date) | |
appointmentDate | can be absent | string (date) | Example: 2026-08-03 |
appointmentTime | can be absent | string | Belgian local time. Absent when a date was agreed but no time. Example: 08:30:00 |
portAppointmentTimeSlot | can be absent | TimeSlot | |
planInfoUpdatedAt | can be absent | string (date-time) | |
closing | can be absent | string (date-time) | |
reference | can be absent | string | |
tarTasReference | can be absent | string | The pre-announcement reference. |
paNumber | can be absent | string | |
location | can be absent | Location | Your 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. |
eta | can be absent | string (date-time) | |
driverHasArrivedTimestamp | can be absent | string (date-time) | The corrected time when a planner corrected it afterwards. |
driverHasExitedTimestamp | can be absent | string (date-time) | |
waypointInProgressTimestamp | can be absent | string (date-time) | |
waypointCompleteTimestamp | can be absent | string (date-time) | |
totalWaitingHours | can be absent | number |
TimeSlot
Both ends as full timestamps. A slot that runs past midnight ends on the next day.
| Field | Always | Type | Notes |
|---|---|---|---|
start | can be absent | string (date-time) | Example: 2026-09-02T03:00:00.000+02:00 |
end | can be absent | string (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.
| Field | Always | Type | Notes |
|---|---|---|---|
id | can be absent | string | |
name | can be absent | string | |
shortName | can be absent | string | |
addressLine | can be absent | string | |
postalCode | can be absent | string | |
city | can be absent | string | |
locality | can be absent | string | |
latitude | can be absent | number | |
longitude | can be absent | number |
UnNumber
| Field | Always | Type | Notes |
|---|---|---|---|
unnumber | can be absent | string | Example: UN1234 |
description | can be absent | string |
Document
Beyond the fields marked always, type and description can be absent.
| Field | Always | Type | Notes |
|---|---|---|---|
id | always | string | Use it for GET /documents/presignedUrl/{id}. |
transportId | always | string | The transport this document hangs on. A document is only ever returned through it. |
name | always | string | Example: CMR.pdf |
type | can be absent | string | Example: CMR |
description | can be absent | string |
PresignedUrl
| Field | Always | Type | Notes |
|---|---|---|---|
url | can be absent | string (uri) | |
expiresAt | can be absent | string (date-time) | |
name | can be absent | string |