Updating existing freight.
Updates are possible only to freights that have not yet been published. During the update, you can publish freight at the same time.
Without publication, only the freight fields describing the load and vehicle parameters can be updated, the fields relating to publication parameters cannot be updated.
Updating existing freights overwrites completely freight. If any value is not set and allowed as null, it will be considered as null value and overwritten.
Freight can be updated (also with the option of publishing) with a request other than the one it was created with.
If a freight has been added using automation rules (without publish), you cannot publish that freight by updating it.
The freight-id identification number in method call can be taken from response after previously creating the freight or by downloading the freight list.
PUT
/ext/freights-api/v1/freights/{freight-id}
PUT
/ext/freights-api/v1/freight-exchange/{freight-id}
PUT
/ext/freights-api/v1/private-exchange/{freight-id}
PUT
/ext/freights-api/v1/freight-corporate/{freight-id}
PUT
/ext/freights-api/v1/freight-companies/{freight-id}
PUT
/ext/freights-api/v1/freight-employees/{freight-id}
PUT
/ext/freights-api/v1/freight-auto/{freight-id}
Request Authorization
Every request MUST include a valid access token obtained during the user authorization process, provided using the Bearer token scheme in the Authorization header.
Successful Response
Error Response
Request Header (example)
PUT /ext/freights-api/v1/freight-exchange/{freight-id} HTTP/1.1
Host: api.platform.trans.eu
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access_token)
Api-key: {unique_app_api-key}Request Parameters
| Attribute | Type | Example | Mandatory | Description |
| callback_url | String | http://example.com/msg | No | The return address provided by the client to receive freight and publication event statuses. See list of available event statuses. |
| capacity | Float | 24 | Yes | Total freight capacity in tonnes. This value is being validated in comparison to the sum of all loads weight (range: 0,001 – 100000) |
| carriers | Array of Object | Description of the object in Publish to selected partners | No | A list of carrier’s company identifiers (at least one of company id’s must be valid). Updating this field is only possible with the publish=true option and /ext/freights-api/v1/freight-companies/{freight-id} request. |
| contact_employees | Array of String | [“13443–1”,“13443–2”] | No | The default contact person is always the publisher. If the field is sent, the contact persons will be only the ID’s sent in it. Updating this field is only possible with the publish=true option. |
| decision_date | Timestamp | 2025–08–03T13:00:00+0000 | No | Defines time up to which carriers can send offers. Calculated automatically for freight-exchange publication — it can be max 23:00 on the day of unloading. Required condition: decision_date > publish_date. Updating this field is only possible with the publish=true option. |
| employees | Array of String | [“13452–1”,“28443–2”] | No | List of users to whom the publication is addressed. The publication will only be effective for users on the publisher’s Messenger contact list. Updating this field is only possible with the publish=true option and /ext/freights-api/v1/freight-employees/{freight-id} request. |
| exchanges | Object | Description of the object in Publish to private exchanges or Publish to branded private exchanges | No | Container with private exchange ids. Updating this field is only possible with the publish=true option and /ext/freights-api/v1/freight-corporate/{freight-id} or /ext/freights-api/v1/private-exchange/{freight-id} request. |
| height | Int or Float | 3.2 | No | Expected/required vehicle height (range: 0.01–10) |
| is_first_buy | Boolean | False | No | Defines if price can be negotiated or only accepted by carrier. Updating this field is only possible with the publish=true option (but not with /ext/freights-api/v1/freight-exchange/{freight-id} request). |
| length | Int or Float | 5 | No | Expected/required vehicle length (range: 0.01–100) |
| loading_meters | Float | 13.6 | No | Total freight loading meters (range: 0,01 — 417) |
| loads (see details) | Array of Objects | No | Collection of freight loads. It is possible to send empty array of loads, nevertheless an array has to be set | |
| payment (see details) | Object | No | Payment conditions for publication. Updating this field is only possible with the publish=true option | |
| publish | Boolean | True | Yes | Determines if the freight is automatically published (True) or only updated (False) |
| publish_date | Timestamp | 2025–08–03T13:00:00+0000 | No | Publication (activation) date — must be greater or equal today, NULL — immediate publication. Updating this field is only possible with the publish=true option. |
| requirements (see details) | Object | Yes | Main freight requirements. | |
| send_order_proposal_ automatically | Boolean | False | No | Sends the order conditions automatically. This means that when the carrier accepts such freight, an order is created with the terms of the order, and the shipper does not have to complete them manually. Updating this field is only possible with the publish=true option. |
| shipment_external_id | String | 2023/NWX/1/3 | No | External identification number |
| spots (see details) | Array of Objects | Yes | Collection of freights’ spots – at least one loading and one unloading is required | |
| transit_time | Int or Float | 280 | No | Time expressed in minutes (positive integer) for transport. Must be less than the difference between the last unloading and the first loading. |
| volume | Int or Float | 21 | No | Expected/required vehicle volume (range: 0.01–10000) |
| width | Int or Float | 3.1 | No | Expected/required vehicle width (range: 0.01–10) |
Example Request Body
// Example request for PUT /ext/freights-api/v1/freight-exchange/3830568
{
"callback_url": "http://example.com/msg",
"capacity": 12,
"loads": [ {
"type_of_load": "europalette",
"name": "Load nr 1",
"load_id": "1123dfd121_1",
"amount":2,
"is_exchangeable": true
}],
"payment": {
"price": {
"value": 552,
"currency": "eur",
"period": {
"payment": "deferred",
"days": 21
}
}
},
"publish": true,
"publish_date": null,
"requirements": {
"is_ftl": true,
"required_truck_bodies": [
"box"
],
"required_ways_of_loading": [
"side"
],
"vehicle_size": "solo"
},
"send_order_proposal_automatically": true,
"shipment_external_id": "1123dfd121",
"spots": [
{
"spot_order": 1,
"operations": [
{
"operation_order": 1,
"type": "loading",
"timespans": {
"begin": "2026-02-23T16:30:58+01:00",
"end": "2026-02-23T17:30:58+01:00"
}
}
],
"place": {
"address": {
"country": "PL",
"postal_code": "54-128",
"locality": "Wroclaw"
}
}
},
{
"spot_order": 2,
"operations": [
{
"operation_order": 1,
"type": "unloading",
"timespans": {
"begin": "2026-02-26T17:30:58+01:00",
"end": "2026-02-26T18:30:58+01:00"
}
}
],
"place": {
"address": {
"country": "IT",
"postal_code": "20097",
"locality": "Milan"
}
}
}
]
}Response Fields
| Attribute | Type | Example | Description |
| accepted_price | Object | null | Final price for freight accepted during publication and negotiation process. The value is always null in this request. |
| capacity | Float | 22.1 | Total freight capacity in tonnes. |
| carrier | Object | null | Carrier selected during negotiation process. The value is always null in this request. |
| contact_employees | Array of Objects | List of employees assigned to freight negotiation. Default is publisher. | |
| contact_employees.last_name | String | Nowak | Surname of assigned employee |
| contact_employees.name | String | Jan | First name of assigned employee |
| contact_employees.trans_id | String | 13443–1 | TransId of assigned employee |
| distance | Int | 34000 | Distance in meters from the point of loading to the point of unloading. |
| end_reason | String | null | Publication end reason. For correct publication or freight creation only null is returned. |
| height | Float | 3.1 | Vehicle height (range: 0.01–10) |
| id | Int | 234923 | Freight identification number, assigned automatically during creation of a new freight. |
| is_first_buy | Boolean | False | Defines if price can be negotiated or only accepted by carrier. |
| length | Float | 12 | Vehicle length (range: 0.01–100) |
| loading_meters | Float | 23 | Total freight loading meters (range: 0,01 — 417) |
| loads (see details) | Array of Objects | Collection of freight loads. | |
| publication_price | Object | Publication price information | |
| publication_price.currency | String | eur | Publication price currency. See currency dictionary. |
| publication_price.value | Int | 560 | Publication price value. The value is null if was not specified. |
| publication_receivers | Array of String | [“13452–1”,“28443–2”] | List of users to whom the publication is addressed. Field appears only for update with the publish=true option and /ext/freights-api/v1/freight-employees/{freight-id} request. |
| publication_status | String | new | Status of the publication. The value is always null in this request. |
| reference_number | String | FR/2025/12/30/2NNQ | Freight reference number — a unique, automatically assigned business identifier of the freight |
| requirements (see details) | Object | Main freight requirements | |
| shipment_external_id | String | 2023/NWX/1/3 | External identification number |
| spots (see details) | Array of Objects | Collection of freights’ spots. At least one loading and one unloading will occur. | |
| status | String | new | Freight status. The value is always new in this request. See for other possible statuses. |
| surchages | Object | null | Surchages for fixed routes. Always null in this request. |
| transit_time | Int | 460 | Time expressed in minutes (positive integer) for transport, if specified. |
| volume | Float | 21 | Vehicle volume (range 0.01–10000). |
| width | Float | 3.1 | Vehicle width (range 0.01–10). |
Response Body
// Example response for for PUT /ext/freights-api/v1/freight-exchange/3830568
{
"accepted_price": null,
"capacity": 12,
"carrier": null,
"contact_employees": [
{
"last_name": "Demczyszak",
"name": "Barbara",
"trans_id": "1007374-1"
}
],
"distance": 1185000,
"end_reason": null,
"height": null,
"id": 3830568,
"is_first_buy": false,
"length": null,
"loading_meters": null,
"loads": [
{
"amount": 2,
"description": null,
"height": null,
"id": 3766404,
"is_exchangeable": true,
"is_stackable": false,
"length": null,
"load_id": "3766404",
"name": "Load nr 1",
"type_of_load": "europalette",
"volume": null,
"weight": null,
"width": null
}
],
"publication_price": {
"currency": "eur",
"value": 552
},
"publication_status": null,
"reference_number": "FR/2026/02/23/221K",
"requirements": {
"exemption_from_adr": false,
"is_ftl": true,
"monitoring": "required",
"other_requirements": [],
"required_adr_classes": [],
"required_door_types": [],
"required_tipper_trailer_additional_equipment": [],
"required_truck_bodies": [
"box"
],
"required_ways_of_loading": [
"side"
],
"shipping_remarks": null,
"temperature": {
"max": null,
"min": null
},
"transport": {
"count": null,
"schedule_type": null,
"settlement": "route",
"settlement_basis": null,
"total_weight": null,
"type": "ftl"
},
"vehicle_size": "solo"
},
"shipment_external_id": "1123dfd121",
"spots": [
{
"description": "",
"name": null,
"operations": [
{
"loads": [
{
"load_id": "3766404",
"weight": null
}
],
"operation_order": 1,
"operation_time": null,
"timespans": {
"begin": "2026-02-23T16:30:58+01:00",
"begin_local": "2026-02-23T16:30:58+01:00",
"end": "2026-02-23T17:30:58+01:00",
"end_local": "2026-02-23T17:30:58+01:00",
"timezone": "Europe/Warsaw"
},
"type": "loading"
}
],
"place": {
"address": {
"country": "pl",
"description": null,
"locality": "Wroclaw",
"number": null,
"postal_code": "54-128",
"street": null
},
"coordinates": {
"latitude": 51.142329074,
"longitude": 16.937462521
}
},
"spot_order": 1
},
{
"description": "",
"name": null,
"operations": [
{
"loads": [
{
"load_id": "3766404",
"weight": null
}
],
"operation_order": 1,
"operation_time": null,
"timespans": {
"begin": "2026-02-26T17:30:58+01:00",
"begin_local": "2026-02-26T17:30:58+01:00",
"end": "2026-02-26T18:30:58+01:00",
"end_local": "2026-02-26T18:30:58+01:00",
"timezone": "Europe/San_Marino"
},
"type": "unloading"
}
],
"place": {
"address": {
"country": "it",
"description": null,
"locality": "Milan",
"number": null,
"postal_code": "20097",
"street": null
},
"coordinates": {
"latitude": 45.397205283,
"longitude": 9.21659417
}
},
"spot_order": 2
}
],
"status": "new",
"surcharges": [],
"transit_time": null,
"volume": null,
"width": null
}Client errors (code 400)
HTTP 4xx status codes indicate client errors, meaning that the request could not be processed due to an issue on the client side. Below is a list of request-specific errors.
Example error 1
No mandatory value in capacity field
{
"detail": "Failed Validation",
"status": 422,
"title": "Unprocessable Entity",
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"validation_messages": {
"capacity": {
"value": {
"isEmpty": "Value is required and can't be empty"
}
}
}
}Example error 2
Incorrect date in spot operation
"validation_messages": {
"spot_operation": {
"validation_error": "In one of spot.operation begin or end date is lower or equal today (UTC)"
}
}Example error 3
Vehicle type not allowed for vehicle size
"validation_messages": {
"vehicle_size_id": {
"invalid": "['7_silos'] is not valid for vehicle size: '1_bus'"
}
}
}Example error 4
Incorrect freight status
{
"detail": "You cant update freight (id: 3823550) with status: 'in_progress'",
"status": 403,
"title": "Forbidden",
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"
}