Creating a new freight and publishing it to the selected recipients.
In this request you can simultaneously indicate recipients of different types: public Trans.eu Exchange, private exchanges, contractor companies and contact persons. The published freight will appear at the same time for all selected recipients.
The declared payment terms must be common to all recipients.
After successfully executing the method, you receive in response the freight details with the unique freight identification number id assigned when creating the new freight.
This method can also be used to simply create a working copy of the freight for subsequent manual publication using any method on the Platform.
See more information about freight publication.
POST
/ext/freights-api/v2/freights
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
POST /ext/freights-api/v2/freights 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) |
| 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. |
| 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 |
| 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. It has no effect on Trans.eu Freight Exchange. |
| 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 | [] | Yes | Collection of freights 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 | |
| publish | Boolean | True | Yes | Determines if the freight is automatically published (True) or only created (False) |
| publish_date | Timestamp | 2025–08–03T13:00:00+0000 | No | Publication (activation) date — must be greater or equal today, NULL — immediate publication |
| receivers (see details below) | Object | Yes | The list of exchanges and other recipients to which the freight is posting. At least one recipient must be selected. | |
| 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. |
| 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) |
Receivers Object (Request)
| Attribute | Type | Example | Description |
| public_exchange | Boolean | True | Selection of a Trans.eu Freight Exchange for publication |
| private_exchanges | Array of Strings | [“051d6149-903a-4735-bc57-feebfdd8c900”] | Selection of private exchange for publication. The values can be checked using Get private exchanges list request. |
| corporate_exchanges | Array of Strings | [“b3a7b0f1-d7f4-4de8-aa6d-61b5d9bae999”] | Selection of branded private exchanges for publication. The values can be checked using Get branded private exchanges list request. |
| companies | Array of Int | [347567, 1353410] | Selection of contractors for publication |
| employees | Array of Strings | [“347567–1”,“1235410–2”] | Selection of contact persons for publication |
At least one recipient from the list above must be selected.
Example Request Body
{
"callback_url": "http://example.com/msg",
"capacity": 12,
"decision_date": "2026-02-23T17:55:00+0100",
"height":4.3,
"length":5.8,
"loading_meters": 10.1,
"loads": [ {
"type_of_load": "container_palette",
"name": "Load nr 1",
"load_id": "1123dfd121_1",
"amount":2
}],
"payment": {
"price": {
"value": 450,
"currency": "eur",
"period": {
"payment": "deferred",
"days": 21
}
}
},
"publish": true,
"publish_date": null,
"receivers": {
"public_exchange": true,
"companies": [],
"employees": ["567347-1"],
"community_exchanges": [],
"corporate_exchanges": ["006e95ea-f307-4a67-bc28-336dfc1cd679"],
"private_exchanges": ["49b9aa2b-1987-48d9-9a77-147f97594233"],
"contracts": []
},
"requirements": {
"is_ftl": true,
"required_truck_bodies": [
"curtainsider"
],
"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-23T13:30:58+01:00",
"end": "2026-02-23T15: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-26T15:30:58+01:00",
"end": "2026-02-26T17:30:58+01:00"
}
}
],
"place": {
"address": {
"country": "DE",
"postal_code": "10178",
"locality": "Berlin"
}
}
}
],
"volume":12.6,
"width": 3.1
}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 will 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_status | String | active | Status of the publication — always null in publishing request |
| receivers (see details below) | Object | List of private and corporate exchanges to which the freight was sent. | |
| 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 | |
| sent_to (see details below) | Object | Designation of the types of recipients to whom the publication is addressed | |
| 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 waiting_for_publication in this request. See for other possible statuses. |
| surchages | Object | null | Surchages for fixed routes. The value is 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). |
Receivers Object (Response)
| Attribute | Type | Example | Description |
| private_exchanges | Array of Object | List of private exchanges to which the freight was sent. | |
| private_exchanges.id | String | “b3a7b0f1-d7f4-4de8-aa6d-61b5d9bae999” | Private exchange id |
| private_exchanges.name | String | “TransEX private exchange” | Private exchange name |
| corporate_exchanges | Array of Object | List of branded private exchanges to which the freight was sent. | |
| corporate_exchanges.id | String | “051d6149-903a-4735-bc57-feebfdd8c900” | Corporate exchange id |
| corporate_exchanges.name | String | “TransExpress South Europe” | Corporate exchange name |
| community_exchanges | Array of Object | List of community exchanges to which the freight was sent. Functionality unavailable at this time. | |
| community_exchanges.id | String | “051d6149-903a-4735-bc57-feebfdd8c900” | Community exchange id |
| community_exchanges.name | String | “Cargo LOT community” | Community exchange name |
Sent_to Object (Response)
| Attribute | Type | Example | Description |
| community_exchange | Boolean | False | Always null |
| companies | Boolean | False | Company recipient |
| contracts | Boolean | False | Always null |
| corporate_exchanges | Boolean | True | Branded private exchange recipient |
| direct | Boolean | False | Direct (person) recipient |
| private_exchange | Boolean | False | Not branded private exchange recipient |
| public_exchange | Boolean | True | Trans.eu Freight Exchange recipient |
Response Body
{
"accepted_price": null,
"capacity": 12,
"carrier": null,
"contact_employees": [
{
"last_name": "Nowak",
"name": "Jan",
"trans_id": "1007374-1"
}
],
"distance": null,
"end_reason": null,
"height": 4.3,
"id": 3830015,
"is_first_buy": null,
"length": 5.8,
"loading_meters": 10.1,
"loads": [
{
"amount": 2,
"cleaning_regime": null,
"description": null,
"height": null,
"id": 3765877,
"idtf": null,
"is_exchangeable": false,
"is_stackable": false,
"length": null,
"load_id": "3765877",
"name": "Load nr 1",
"type_of_load": "container_palette",
"volume": null,
"weight": null,
"width": null
}
],
"publication_price": null,
"publication_status": null,
"receivers": {
"community_exchanges": [],
"corporate_exchanges": [
{
"id": "006e95ea-f307-4a67-bc28-336dfc1cd679",
"name": "API test"
}
],
"private_exchanges": [
{
"id": "49b9aa2b-1987-48d9-9a77-147f97594233",
"name": "Private"
}
]
},
"reference_number": "FR/2026/02/23/2NTS",
"requirements": {
"exemption_from_adr": false,
"is_ftl": true,
"is_mini_tenders": false,
"monitoring": "required",
"other_requirements": [],
"required_adr_classes": [],
"required_door_types": [],
"required_tipper_trailer_additional_equipment": [],
"required_truck_bodies": [
"curtainsider"
],
"required_ways_of_loading": [],
"shipping_remarks": null,
"temperature": {
"max": null,
"min": null
},
"transport": {
"count": null,
"schedule_type": null,
"settlement": "route",
"settlement_basis": null,
"total_weight": null,
"type": "ftl",
"units_per_transport": null
},
"vehicle_size_id": "solo"
},
"sent_to": {
"community_exchange": false,
"companies": false,
"contracts": false,
"corporate_exchange": true,
"direct": true,
"private_exchange": true,
"public_exchange": true
},
"shipment_external_id": "1123dfd121",
"spots": [
{
"description": null,
"name": null,
"operations": [
{
"id": 8670464,
"loads": [],
"operation_order": 1,
"operation_time": null,
"timespans": {
"begin": "2026-02-23T13:30:58+01:00",
"begin_local": "2026-02-23T13:30:58+01:00",
"end": "2026-02-23T15:30:58+01:00",
"end_local": "2026-02-23T15:30:58+01:00",
"timezone": "Europe/Warsaw"
},
"type": "loading"
}
],
"place": {
"address": {
"country": "pl",
"description": null,
"detailed_location_id": null,
"foreign_id": null,
"id": 8511355,
"locality": "Wroclaw",
"location_id": null,
"number": null,
"postal_code": "54-128",
"radius": null,
"street": null
},
"coordinates": {
"latitude": 51.142329074,
"longitude": 16.937462521
},
"range_distance": null
},
"spot_order": 1
},
{
"description": null,
"name": null,
"operations": [
{
"id": 8670465,
"loads": [],
"operation_order": 1,
"operation_time": null,
"timespans": {
"begin": "2026-02-26T15:30:58+01:00",
"begin_local": "2026-02-26T15:30:58+01:00",
"end": "2026-02-26T17:30:58+01:00",
"end_local": "2026-02-26T17:30:58+01:00",
"timezone": "Europe/Berlin"
},
"type": "unloading"
}
],
"place": {
"address": {
"country": "de",
"description": null,
"detailed_location_id": null,
"foreign_id": null,
"id": 8511356,
"locality": "Berlin",
"location_id": null,
"number": null,
"postal_code": "10178",
"radius": null,
"street": null
},
"coordinates": {
"latitude": 52.519971677,
"longitude": 13.404467562
},
"range_distance": null
},
"spot_order": 2
}
],
"status": "waiting_for_publication",
"surcharges": [],
"transit_time": null,
"volume": 12.6,
"width": 3.1
}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
No receivers
// 400 Bad Request
{
"error": "At least one value in Body.receivers must be set."
}Example error 5
Incorrect truck body for bulk load
{
"detail": "Failed Validation",
"status": 422,
"title": "Unprocessable Entity",
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"validation_messages": {
"requirements": {
"transport": {
"settlement": {
"invalid": "Non bulk load truck body type provided"
},
"total_weight": {
"invalid": "Non bulk load truck body type provided"
}
}
}
}
}