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 [
- ]
- 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[] nullable
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[] nullable
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 nullable
Your internal unique carrier ID
The SCAC code of the carrier
carrierSalesRep object nullable
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 that is used in your backend system.
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 external ID that is used in the external system to group loads for TMS clients; typically done in organizations that have multiple TMS instances that is commonly seen in Managed Transportation. This is saved in case we need to refer to a TMS Instance when sending events back to the external system. Some customers have separate TMS "instance" for managed transportation clients. In those cases, they have a separate TMS Group. In Chaine, they may decide to have a separate Chaine workspace ID for each TMS client, but it may be different TMS instances in their end. Thus, we need a way to separate this.
The name of the office specified by chaineCustomerWorkspaceID. This will be used in Chaine for display purposes.
The commodity of the load. This is used for load matching.
commodityLineItems object[] nullable
totalWeight object
The weight details of the load
The value of the weight
Possible values: [lb
, kg
]
The unit of measure for the weight
containers object[] nullable
The sealine issued container number
The external ID of the container in the external system
createdBy object nullable
The user that created the load.
Your internal unique user ID
The date the load was created.
customer object nullable
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 nullable
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
destination object nullable
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
destinationAppointment object nullable
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.
dispatchers object[] nullable
An array of dispatchers assigned to the load. If it is just one, send an array with one.
distance object nullable
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[] nullable
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.
equipment object[] nullable
The equipment types that are required for the load. This is used for load matching.
Any additional requirement tags such as "Tarps", "Pallet jack", etc. Previously we used equipmentTags for this, but this is a more structured way to provide additional requirements
The length of the equipment required for the load, specified in units (e.g., feet).
Possible values: [A frame
, Box truck - liftgate
, Box truck - pallet jack
, Box truck - tailgate
, Car carrier - enclosed
, Car carrier - open
, Conestoga - small
, Container - heavy
, Container - high cube
, Container - intermodal
, Container - out of gauge
, Container - standard
, Dolly
, Dry van - liftgate
, Dry van - plated
, Dry van - tailgate
, Dry van - tanker endorsement
, Dry van - vented
, Dual lane
, Dump trailer
, Explosives
, Flatbed - maxi
, Flatbed - stretch
, Hopper
, Hotshot
, Hotshot - CDL
, Landoll
, Livestock
, Perimeter frame
, RGN - aluminum slideouts
, RGN - beam
, RGN - stretch
, Reefer - tailgate
, Sliding axle
, Step deck - load leveler
, Step deck - low profile
, Step deck - stretch
, Step deck - stretch - steerable
, Straight truck
, Super B
, Tanker - aluminum
, Tanker - intermodal
, Tanker - steel
, Toter truck
]
Additional tags for the equipment that can be used to provide more requirements for the equipment.
Possible values: [Box truck
, Conestoga
, Deck
, Double drop
, Dry bulk
, Flatbed
, Lowboy
, Other
, Power only
, RGN
, Reefer
, Sprinter van
, Step deck
, Tanker
, Van
]
The equipment types that are required for the load. This is used for load matching. This is where the primary equipment should be specified.
temperatureRange object nullable
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...
Possible values: [Box truck
, Conestoga
, Deck
, Double drop
, Dry bulk
, Flatbed
, Lowboy
, Other
, Power only
, RGN
, Reefer
, Sprinter van
, Step deck
, Tanker
, Van
]
Same as equipmentTypes. This is deprecated and will be removed in the future.
financials object nullable
The financials of the load. This is used for load matching, and to better understand the historical rate information for available loads.
Any non-linehaul accessorial costs associated with the shipment. Non-linehaul costs are costs that are not directly related to the movement of the freight. For example, detention, layover, etc. These do not include fuel surcharge costs, tracking acceptance, or guaranteed delivery costs.
The total cost of the carrier not including the fuel surcharge and other accessorial costs.
The rate that the carrier was paid for the fuel surcharge.
The total amount the carrier invoiced the mutual customer
The total cost of the carrier not including the fuel surcharge and other line-haul related accessorial costs like 'tracking acceptance' or 'guaranteed delivery'. carrierFreightCost + carrierFuelCost + any linehaul related costs that may be added on the rate confirmation such as guaranteed delivery, chaine tracking acceptance, etc.
The total amount the carrier was paid for this shipment.
The rate that the customer was charged for this shipment.
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.
Additional information about the load that is used for load matching. This is used for the load board and is carrier facing.
Possible values: [FTL
, LTL
, Intermodal
]
The mode of the load
origin object nullable
The origin of the load. It is recommended to provide all the stops in the stops array.
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
originAppointment object nullable
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.
Whether the POD has been received. This is used by the copilot for automated POD retrieval workflows.
referenceNumbers object nullable
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.
sealine object nullable
Only relevant for container tracking. The sealine object is used to provide the container number and other relevant information for container tracking.
The master bill of lading number. This is the preferred method for tracking containers.
Possible values: [startTracking
, stopTracking
]
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[] nullable
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
, Both
]
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 nullable
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
If there is a Tive device ID associated with the load, this is the ID of the Tive device that is used for tracking the load.
tmsRates object nullable
Internal rates that may be specified by users using the TMS
The source of the rates i.e. DAT, Greenscreens, TMS
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...
minRate object
The minimum 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...
startRate object
The starting 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...
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.
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 nullable
The user that last updated the load
Your internal unique user ID
weight object nullable
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"
}