Load Sync API: In-house TMS
Any time there is a change to the load object inside of your TMS, send the entire load object to this end-point. This is a high throughput end-point and can handle thousands of requests per second. It is highly available, fault tolerant, and scalable.
This end-point will always return a 200 status code. Since Chaine will be listening to load events from your TMS based on your load object, there is no reason to return any other error. If there is an error, Chaine will simply not process the load object and will retry the request at a later time without any impact to the API.
Finally, this end-point is idempotent. If you send the same load object multiple times, Chaine will only process it once. This is to ensure that if there is a network error, or if you send the same load object multiple times, Chaine will not create duplicate loads.
Header Parameters
API Key that a Chaine Admin or Owner creates in their workspace under developer settings
The content type of the request. Currently we accept application/json or application/xml. If these don't work for you, please reach out to your technical contact at Chaine.
Request Body
This is just a sample of the fields you can send on the load object. Our integrations are highly configurable and you can send essentially any other fields you want. If you don't have a lot of flexibility on your end, we provide a user-interface for you to create a custom mapper where you can map any object you send to us to Chaine's internal load object.
- Array [
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
Possible values: [Create
, Update
, Delete
, Upsert
]
This can be used to indicate whether this event/request is a create, update or delete.
assignedBookingReps object[]
An array of booking reps assigned to the load. If it is just one, send an array with one. If a carrier rep is assigned to an available load for booking purposes, add them here. The customer sales rep can also be added here.
The email of the user
Your internal unique user ID
The role of the user. i.e. CarrierSalesRep, CustomerSalesRep, etc...
assignedTrackingReps object[]
Any user that is responsible for tracking the load. This is used for load load tracking and collaboration. Alternatively, you can provide this in other custom fields and we would map this to our standard load object.
The email of the user
Your internal unique user ID
The role of the user. i.e. CarrierSalesRep, CustomerSalesRep, etc...
carrier object
Your internal unique carrier ID
The SCAC code of the carrier
carrierSalesRep object
The carrier sales rep assigned to the load. This is used for carrier collaboration and shown in the driver mobile app.
Your internal unique user ID
Your internal unique load ID
If this load is part of a unique office, team or POD, this will be used by Chaine to separate out the loads to the appropriate teams.
The name of the office specified by officeID. This will be used in Chaine for display purposes.
The commodity of the load. This is used for load matching.
The date the load was created.
customer object
The company name of the customer
Your internal unique customer ID
contact object
A contact at the customer. This can be used to automatically share tracking with and also for customer to customerSalesRep collaboration
Your internal unique user ID
customerSalesRep object
The customer sales rep assigned to the load. This is used for both freight matching so they can see the offers on loads and also for customer collaboration.
Your internal unique user ID
createdBy object
The user that created the load.
Your internal unique user ID
dispatchers object[]
An array of dispatchers assigned to the load. If it is just one, send an array with one.
distance object
The distance details of the load with a value and unit of measure
The value of the distance
The unit of measure for the distance
drivers object[]
An array of drivers assigned to the load. If it is just one, send an array with one.
The cell phone number of the driver used for mobile app tracking or load assignment via the Chaine mobile app
Indicates whether the load should be posted to the load board. This is used for load matching.
The equipment types that are required for the load. This is used for load matching.
Additional equipment tags that may be specified to provide more details on the equipment. I.e. RGN, Hot shot, 8 tarps etc...
financials object
The financials of the load. This is used for load matching, and to better understand the historical rate information for available loads.
The total amount the carrier invoiced the mutual customer
The total amount that was paid to the carrier. This is usually the carrierInvoiceTotal minus any fees.
The total amount that was invoiced to the shipper/customer. This is usually the customerQuoteTotal plus any fees.
The total amount that was quoted to the customer.
Indicates whether the load is hazmat. This is used load matching.
Indicates whether this is an urgent or important. This is used for load matching.
The mode of the load
Whether the POD has been received. This is used by the copilot for automated POD retrieval workflows.
referenceNumbers object
The various reference numbers on the load. This is used for carrier collaboration.
The bill of lading number. This is used for load collaboration in the Chaine mobile app.
The billing reference number. This can be used to help identify the load in the Chaine for your customers when sharing tracking.
The order number. This can be used to help identify the load in the Chaine for your customers when sharing tracking.
The pick-up numberr. This is used for load collaboration in the Chaine mobile app.
The purchase order number. This can be used to help identify the load in the Chaine for your customers when sharing tracking.
The PRO number. This can be used to help identify the load in the Chaine for your customers when sharing tracking.
The user facing non-unique load number
Possible values: [Canceled
, Carrier assigned
, Delivered
, In transit
, Needs carrier
]
The load status of the load i.e. In transit, Delivered, etc.
The special instructions for the load that is relayed to the carrier. This is used for the chaine mobile app for drivers and also for carrier collaboration features.
stops object[]
The array of all of the stops. Always provide the latest stops. If an appointment gets updated, just send the entire object with the updated stops.
appointment object
start object
A date in the format of MM-DD-YYYY or YYYY-MM-DD. We can configure to map your format during integration to a Chaine format.
A time in any format. We can configure to map your format during integration to a Chaine format.
The timezone of the appointment. This is optional.
end object
A date in the format of MM-DD-YYYY or YYYY-MM-DD. We can configure to map your format during integration to a Chaine format.
A time in any format. We can configure to map your format during integration to a Chaine format.
The timezone of the appointment. This is optional.
Indicates whether the appointment is first come first serve. This is used for load matching and carrier collaboration.
arrivalDateTime object
A date in the format of MM-DD-YYYY or YYYY-MM-DD. We can configure to map your format during integration to a Chaine format.
A time in any format. We can configure to map your format during integration to a Chaine format.
The timezone of the appointment. This is optional.
Your internal unique stop ID
departureDateTime object
A date in the format of MM-DD-YYYY or YYYY-MM-DD. We can configure to map your format during integration to a Chaine format.
A time in any format. We can configure to map your format during integration to a Chaine format.
The timezone of the appointment. This is optional.
eta object
A date in the format of MM-DD-YYYY or YYYY-MM-DD. We can configure to map your format during integration to a Chaine format.
A time in any format. We can configure to map your format during integration to a Chaine format.
The timezone of the appointment. This is optional.
Any stop specific special instructions that can be relayed to the carrier. This is used for carrier collaboration and shown in the driver mobile app.
If the stop has a specific pickup/delivery number that the carrier needs to reference to the warehouse. This is used for carrier collaboration and shown in the driver mobile app.
Often times there are reference numbers on a stop that may refer to a specific pickup number. If you have an additional reference number field, you can send it.
The sequence of the stop. Required in the stops array.
Possible values: [Pick
, Drop
]
Indicates whether the stop is a pick or drop
warehouse object
Your internal unique warehouse ID
address object
A bounding box of the address. This is used for load collaboration and Geo-fence
The city of the address
coordinates object
The coordinates of the address.
The country of the address
The country code of the address
The county of the address
The postal code of the address
The postal code suffix of the address
The state of the address
The state code of the address
The street of the address
The street number of the address
The suite number of the address
The warehouse location name. This is used for carrier collaboration and shown in the driver mobile app.
The warehouse hours. This is used for carrier collaboration and shown in the driver mobile app.
contact object
The warehouse contact. This is used for carrier collaboration and can optionally be shown in the driver mobile app.
The name of the warehouse contact
The phone number of the warehouse contact
The email of the warehouse contact
Boolean that indicates whether the load requires a team
Boolean that indicates whether the load is temperature controlled
temperatureRange object
If the load is temperature controlled, the temperature range that provides the temperature details
The way the reefer unit should be run. i.e. Continuous, Start-stop, etc...
The minimum temperature the reefer unit can be at.
The maximum temperature the reefer unit can be at.
The unit of measure for the temperature. i.e. Fahrenheit, Celsius, etc...
tmsRates object
Internal rates that may be specified by users using the TMS
The source of the rates i.e. DAT, Greenscreens, TMS
benchmarkRate object
The benchmark rate that the chaine customer is willing to pay for the load. Some customers may determine this based on historical data. This is used for load matching.
The value of the currency
The currency code i.e. USD, CAD, etc...
maxRate object
The maximum rate that the chaine customer is willing to pay for the load. This is used for load matching.
The value of the currency
The currency code i.e. USD, CAD, etc...
targetRate object
The target rate that is determined by the Chaine customer (or source) for the load. This is used for load matching.
The value of the currency
The currency code i.e. USD, CAD, etc...
If your TMS is web based and has a unique URL for the load, this is the URL to the load which Chaine uses inside of the app to provide a better user experience for mutual users.
The total number of stops
Usually the trailer number field indicates the trailer the carrier has assigned to the load. This is used for ELD tracking if the carrier is using ELD tracking.
Usually the truck number field indicates the truck the carrier has assigned to the load. This is used for ELD tracking if the carrier is using ELD tracking.
updatedBy object
The user that last updated the load
Your internal unique user ID
weight object
The weight details of the load
The value of the weight
Possible values: [lb
, kg
]
The unit of measure for the weight
- 200
- 415
A successful operation.
Schema
- any
{
"message": "Success message",
"statusCode": 200,
"name": "Success"
}
{
"message": "Success message",
"statusCode": 200,
"name": "Success"
}
This error happens when you specify a Content-Type other than application/json or application/xml.
Schema
- any
{
"message": "Unaccepted content type, please use application/json",
"statusCode": 415,
"name": "Unsupported Media Type"
}
{
"message": "Unaccepted content type, please use application/json",
"statusCode": 415,
"name": "Unsupported Media Type"
}