Download OpenAPI specification:Download
Saloodo! offers to companies instant access to trusted road freight providers for on-demand shipments, with the freedom of choice of a marketplace and the security and convenience of a digital freight forwarder. We simplify your daily business by providing a single and convenient interface for tracking, documentation, and payment – giving you end-to-end control to your shipment processes within a single platform.
With saloodo! API documentation, customers are able to retrieve and push data to saloodo! platform. Any application can request data from saloodo!, if you require assistance or more information about how to connect please write an email to support@saloodo.com
A shipment request, which is done by the shipper, is the non-binding collection of information, in particular, for the purpose of submitting an offer, which is done by the carrier. The shipment request includes all necessary information about the cargo and its conditions such as:
Shippers can use this endpoint to create a shipment request on Saloodo! platform. A shipment request, contains valid data related to the cargo to be transported, the pickup, dropoff location, as well as the desired dates of loading and unloading. After a shipment request is published, one or more carriers can submit offers on this transport request.
Create shipment Request
type required | string Value: "single" The shipment type |
externalShipmentId | string External Shipment identifier |
loadingMeters | number <double> Total Loading meters for the shipment (For Sweden tradelane the maximum ldm value is 21 and for others it is 15.2) |
cubicMeters | number <double> Total Cubic meters for the shipment |
distance | number <integer> Distance between pickup and drop off locations in meters. If not passed, distance will be calculated using Google Maps API |
required | Array of objects (CargoRequest) Cargo list (For Sweden Tradelane with cargo item "Other" (from other group) the maximum weight is upto 36000 kg per unit.) |
required | object (LocationRequest) Pickup/DropOff location request |
required | object (LocationRequest) Pickup/DropOff location request |
object Additional fields related to shipment | |
desiredPrice | number <integer> The desired price for the shipment |
additionalRequirements | Array of strings Items Enum: "anti_slash_curtain" "anti_slip_mats" "code_xl" "customs_cable" "tail_lift" "tie_down_straps" "truck_which_can_be_sealed" "tail_lift_loading" "tail_lift_unloading" "pre_advise" "extra_driver" "driver_pre_notification" "only_pulling_unit" |
message | string Additional message about shipment |
{- "type": "single",
- "externalShipmentId": "51139051",
- "loadingMeters": 13.6,
- "cubicMeters": 15.6,
- "distance": 1000040,
- "cargos": [
- {
- "unitType": "pallet",
- "units": 1,
- "length": 120,
- "width": 80,
- "height": 120,
- "weight": 120,
- "fragile": false,
- "hazardous": false,
- "unNumber": "0009",
- "adrClass": "Explosive substances and articles",
- "furtherRequirement": "Additional description regarding the dangerous goods",
- "furtherCargoDescription": "Additional goods / commodity description for both non-ADR or for ADR",
- "palletExchange": false
}
], - "pickup": {
- "address": {
- "establishment": "DHL Packstation",
- "countryCode": "DE",
- "postalCode": "53111",
- "city": "Bonn",
- "street": "Dorotheenstraße",
- "streetNo": "103",
- "geo": {
- "location": {
- "lat": 50.74049,
- "lng": 7.08929
}, - "location_type": "ROOFTOP",
- "viewport": {
- "northeast": {
- "lat": 52.5052,
- "lng": 13.3535
}, - "southwest": {
- "lat": 52.5025,
- "lng": 13.3508
}
}
}
}, - "tourOrder": "1",
- "locationTypes": [
- "com_with_ramp"
], - "fromDate": "2022-01-22 08:45:32",
- "untilDate": "2022-01-23 17:45:32",
- "fixedSlot": true
}, - "dropOff": {
- "address": {
- "establishment": "DHL Packstation",
- "countryCode": "DE",
- "postalCode": "53111",
- "city": "Bonn",
- "street": "Dorotheenstraße",
- "streetNo": "103",
- "geo": {
- "location": {
- "lat": 50.74049,
- "lng": 7.08929
}, - "location_type": "ROOFTOP",
- "viewport": {
- "northeast": {
- "lat": 52.5052,
- "lng": 13.3535
}, - "southwest": {
- "lat": 52.5025,
- "lng": 13.3508
}
}
}
}, - "tourOrder": "1",
- "locationTypes": [
- "com_with_ramp"
], - "fromDate": "2022-01-22 08:45:32",
- "untilDate": "2022-01-23 17:45:32",
- "fixedSlot": true
}, - "payload": {
- "foo": "bar",
- "bar": "foo"
}, - "desiredPrice": 250,
- "additionalRequirements": [
- "anti_slash_curtain, anti_slip_mats, code_xl"
], - "message": "Important message!"
}
{- "success": true,
- "shipmentElmId": "YPR12K"
}
Get the list of shipments posted by the shipper that uses this service. According to the customer needs, filters can be applied to obtain a specific list of the shipments
page | integer Example: page=1 The page number |
pageSize | integer Example: pageSize=20 How many items per page |
orderBy | string Example: orderBy=untilDate The sort column |
order | string Enum: "ASC" "DESC" The sort order |
type required | string Value: "all" The only available type currently is |
filter required | string Enum: "open" "expired-not-booked" "booked"
|
{- "list": [
- {
- "desiredPrice": 1000040,
- "additionalRequirements": [ ],
- "desiredPriceCurrencySymbol": "EUR",
- "payload": [ ],
- "status": "AUCTION_ENDED",
- "validFromDate": "2022-02-01T00:00:00+00:00",
- "validUntilDate": "2022-02-01T14:11:41+00:00",
- "message": "Important message!",
- "externalShipmentId": "string",
- "distance": 1000040,
- "transactionCurrency": null,
- "customClearance": false,
- "elmId": "5XQBQ5R",
- "bundle": false,
- "transportType": "cargo_based",
- "tenantId": 1,
- "shipmentElmId": "5XQBQ5R",
- "shipmentDealElmId": "4CQCQ54",
- "cargos": [
- {
- "unitType": "pallet",
- "units": 1,
- "length": 120,
- "width": 80,
- "height": 120,
- "weight": 120,
- "fragile": false,
- "hazardous": false,
- "unNumber": 2094,
- "adrClass": 2,
- "adrDescription": "ADR description",
- "loadingEquipmentExchange": false,
- "furtherCargoDescription": "More details about cargo detailes",
- "palletExchange": false
}
], - "pickupLocation": {
- "establishment": "DHL Packstation",
- "countryCode": "DE",
- "postalCode": "53111",
- "city": "Bonn",
- "street": "Dorotheenstraße",
- "streetNo": "103",
- "streetNoAddition": "string",
- "timezone": "Europe/Berlin",
- "tourOrder": 1,
- "nextLocationRange": 1,
- "geo": {
- "location": {
- "lat": 50.74049,
- "lng": 7.08929
}, - "location_type": "ROOFTOP",
- "viewport": {
- "northeast": {
- "lat": 52.5052,
- "lng": 13.3535
}, - "southwest": {
- "lat": 52.5025,
- "lng": 13.3508
}
}
}, - "locationTypes": [
- "com_with_ramp"
], - "fromDate": "2022-01-01T08:45:32+01:00",
- "untilDate": "2022-01-02T17:45:32+01:00",
- "fixedSlot": true,
- "addressLine1": "Lützowplatz 17",
- "addressLine2": "null",
- "area": "10785",
- "locationName": "Hotel Berlin Berlin",
- "userInputAddress": "Hotel Berlin Berlin, Lützowpl. 17, 10785 Berlin, Germany",
- "areaPlaceId": "string",
- "cityPlaceId": "string"
}, - "dropOffLocation": {
- "establishment": "DHL Packstation",
- "countryCode": "DE",
- "postalCode": "53111",
- "city": "Bonn",
- "street": "Dorotheenstraße",
- "streetNo": "103",
- "streetNoAddition": "string",
- "timezone": "Europe/Berlin",
- "tourOrder": 1,
- "nextLocationRange": 1,
- "geo": {
- "location": {
- "lat": 50.74049,
- "lng": 7.08929
}, - "location_type": "ROOFTOP",
- "viewport": {
- "northeast": {
- "lat": 52.5052,
- "lng": 13.3535
}, - "southwest": {
- "lat": 52.5025,
- "lng": 13.3508
}
}
}, - "locationTypes": [
- "com_with_ramp"
], - "fromDate": "2022-01-01T08:45:32+01:00",
- "untilDate": "2022-01-02T17:45:32+01:00",
- "fixedSlot": true,
- "addressLine1": "Lützowplatz 17",
- "addressLine2": "null",
- "area": "10785",
- "locationName": "Hotel Berlin Berlin",
- "userInputAddress": "Hotel Berlin Berlin, Lützowpl. 17, 10785 Berlin, Germany",
- "areaPlaceId": "string",
- "cityPlaceId": "string"
}, - "loadingMeters": 13.6,
- "truckType": [
- "single"
], - "totalWeight": 0
}
], - "currentPage": 1,
- "nextPage": 2,
- "pageSize": 3,
- "totalResults": 10
}
By using the generated shipmentElmID after the shipment request is created, shippers can use this endpoint to cancel his request. Saloodo! shippers cannot cancel the shipment request when this is in the process of being booked or it is already booked.
shipmentElmId required | string Example: shipmentElmId=YPR12K The shipment Elm id |
{- "success": true,
- "shipmentElmId": "YPR12K"
}
An offer, which is submitted by the carrier, is the submission of a binding price and a description of the associated conditions relating to a particular shipment request, which is done by the shipper.
Shippers can get the list of offers associated to one shipment request by using this service.
shipmentElmId | string Example: shipmentElmId=ABCDEF The Shipment Elm Id |
filter | string Example: filter=active Filter the offers |
{- "list": [
- {
- "carrierFullName": "The company",
- "price": 102500,
- "priceWithVat": 121975,
- "priceWithRebateAndVat": 121975,
- "accountPrice": 91341,
- "accountPriceWithVat": 108684,
- "accountPriceWithRebateAndVat": 108684,
- "validFromDate": "2022-02-04T14:11:41+00:00",
- "validUntilDate": "2022-02-04T14:11:41+00:00",
- "rebatePercent": 0,
- "rebatePrice": 0,
- "vatPercent": 19,
- "vatPrice": 19475,
- "priceCurrency": "EUR",
- "priceCurrencySymbol": "€",
- "accountPriceCurrency": "GBP",
- "accountPriceCurrencySymbol": "£",
- "message": "This is a message",
- "truckTypes": [
- "curtainsider"
], - "bodyTypes": [
- "tail_lift"
], - "cancelled": false,
- "leadTime": 1,
- "type": "single",
- "elmId": "ABCDEF",
- "pickupFromDate": "2022-02-04T09:00:00+00:00",
- "pickupUntilDate": "2022-02-04T18:00:00+00:00",
- "dropoffFromDate": "2022-02-04T09:00:00+00:00",
- "dropoffUntilDate": "2022-02-04T18:00:00+00:00"
}
], - "currentPage": 1,
- "nextPage": 1,
- "pageSize": 10,
- "totalResults": 1
}
An order is concluded when the Shipper accepts the Carrier's offer together with its conditions, which is related to the former shipment request. The order is binding.
Saloodo! shippers create a transport order with this service. A transport order is created when the shipper selects and book one of the active offers posted by one of saloodo! carriers on one specific shipment request.
Create order request object
offerElmId required | string <string> Offer Identifier |
object (Booking Contact) Consignor/Consignee information | |
object (Booking Contact) Consignor/Consignee information |
{- "offerElmId": "YPR12K",
- "consignor": {
- "company": "DHL Packstation",
- "name": "John Doe",
- "phone": "+491112223344",
- "email": "john@doe.com",
- "refno": "ref80"
}, - "consignee": {
- "company": "DHL Packstation",
- "name": "John Doe",
- "phone": "+491112223344",
- "email": "john@doe.com",
- "refno": "ref80"
}
}
{- "success": true,
- "orderElmId": "Y4QXQPY"
}
Saloodo! shippers can see the details of a transport order by using this service.
orderElmId required | string Example: BGX7XK8 Order identifier |
{- "orderElmId": "BGX7XK8",
- "offerElmId": "48X7XK8",
- "inClarification": false,
- "clarificationStatus": null,
- "consignor": {
- "company": "Some Company name.",
- "name": "Same Doe",
- "email": "smaildoe@gm.com",
- "phone": "022447456389",
- "refno": "ref30"
}, - "consignee": {
- "company": "Some Company name.",
- "name": "Dame Doe",
- "email": "smailjoe@gm.com",
- "phone": "022447456309",
- "refno": "ref31"
}, - "fulfillmentStatus": "DRIVER_ASSIGNED",
- "fulfillmentSubStatus": [ ],
- "elmId": "BGX7XK8",
- "tenantId": 1
}
Documents specific to the transport order can be downloaded (Proof of delivery, Pallet exchange statements and counter statements, Shipment photos).
orderElmId required | string Example: K4XBX5N The order Elm id |
fileType required | sting Enum: "pallet-exchange" "pallet-exchange-counterstatement" "pod" "photo" the document type to download |
{- "status": 403,
- "message": "Access Denied"
}
The POD uploaded by saloodo! carrier can be approved or rejected after the transportation is completed. In order to close the transport order, the POD should be approved. If the POD is not approved/rejected within 24 hours, then the POD will be approved automatically.
orderElmId required | string Order identifier |
action required | string Enum: "approve" "reject" Pod action |
Approve or Reject Order Pod request body
message | string The message is required if the pod is being rejected. It should contain the reason for rejection. |
{- "message": "reason for rejection"
}
{- "success": true
}
If shipper wants to get notified directly on their application, saloodo! webhooks delivers data to other applications in real time. Those notifications include being notify regarding milestones/status of shipments and cancellation of shipments in case they occur.
Note: The specified events are submitted in a different format to PEV.
Update deal Request
Array of objects (Fulfillment Deal Requests) |
{- "fulfillmentDealRequests": [
- {
- "dealId": 1,
- "fulfilmentRequest": {
- "status": "DRIVER_ASSIGNED",
- "phoneNumber": "+491781112233",
- "driverName": "Peter Alexander",
- "date": "2022-02-02 17:07:33",
- "vehiclePlateNumber": "3737373"
}
}
]
}
{- "status": 400,
- "type": "validation_error",
- "title": "There was a validation error",
- "errors": { }
}