Load Tracking API — Request/Response
Endpoint: POST /orders (example path — please provide us your tracking service’s URL)
Content-Type: application/json
Purpose
Webhook to receive a load for tracking.
Request Body (JSON)
The request body is a single JSON object with an Order object. Below is the schema and field descriptions.
Authentication
FMS will assign you a API Tracking ID for the tracking integration for the customer. This will authenticate us to the customer’s account. GUID format is preferred. Must be under 255 characters. The Webhook will listen for this ID in Order.Notifications.Notification.PartnerMPID as definition below explains. IP Address firewall inclusion is also a great idea when listening with the webhook.
Top-level schema
| Path | Type | Required | Description |
|---|---|---|---|
Order |
object | Yes | Root object describing the order to track. |
Order.TrackVia |
object | Yes | Contact transport/driver methods. |
Order.TrackVia.Number |
array of object | Yes | List of phone numbers for the driver. |
Order.TrackVia.Number[].Type |
string | Yes | “Mobile” is the only acceptable value. |
Order.TrackVia.Number[].Value |
string | Yes | Phone number 10-digits, no dashes. |
Order.TrackStartDateTime |
string (DateTime) | Yes | Date/time to start tracking. Example: 2024-01-22 14:45 ET. |
Order.Notifications.Notification |
object | Yes | Notification & scheduling parameters. |
Order.Notifications.Notification.PartnerMPID |
string | Yes | Your assigned ID for the tracking integration for the customer. This will authenticate us to the customer’s account. GUID format is preferred but not required. Must be under 255 characters. |
Order.Notifications.Notification.IDNumber |
string | Yes | TMS load identifier. |
Order.Notifications.Notification.TrackDurationInHours |
string | Yes | How many hours to track the load. |
Order.Notifications.Notification.TrackIntervalInMinutes |
string | Yes | How frequently to poll the truck for location. |
Order.Carrier |
object | Yes | Carrier information. |
Order.Carrier.Name |
string | Yes | Carrier name (e.g. “XYZ TRUCKING LLC”). |
Order.Carrier.CarrierID |
string | Yes | FMS identifier for the carrier. |
Order.TripSheet.Stops.Stop |
array of object | Yes | Stops in the trip. |
Order.TripSheet.Stops.Stop[].StopID |
string | Yes | FMS ID for this stop (returned later with updates). |
Order.TripSheet.Stops.Stop[].Name |
string | Yes | Stop display name. |
Order.TripSheet.Stops.Stop[].StopType |
string | Yes | Either "PickUp" or "DropOff". |
Order.TripSheet.Stops.Stop[].Address |
object | No | Address object for the stop. |
Order.TripSheet.Stops.Stop[].Address.Line1 |
string | Yes | Primary address line. |
Order.TripSheet.Stops.Stop[].Address.Line2 |
string | No | Secondary address line. |
Order.TripSheet.Stops.Stop[].Address.City |
string | Yes | City. |
Order.TripSheet.Stops.Stop[].Address.StateOrProvince |
string | Yes | State or province code (e.g. “TN”). |
Order.TripSheet.Stops.Stop[].Address.PostalCode |
string | No | Postal / ZIP code. |
Order.TripSheet.Stops.Stop[].StartDateTime |
string (RFC3339 / ISO8601) | Yes | Earliest time of the arrival window (example: 2024-01-22T09:00:00-05:00). |
Order.TripSheet.Stops.Stop[].EndDateTime |
string (RFC3339 / ISO8601) | No | Latest time of the arrival window. |
Order.Notes |
string | No | Free text for additional load information; for example delivery instructions. |
Example Request
{
"Order": {
"TrackVia": {
"Number": [
{ "Type": "Mobile", "Value": "5551112222" },
{ "Type": "Mobile", "Value": "5552223333" }
]
},
"TrackStartDateTime": "2024-01-22 14:45 ET",
"Notifications": {
"Notification": {
"PartnerMPID": "477c03ff-e0f4-4c36-9cb5-249fabe7e0d3",
"IDNumber": "2-119859-0-1",
"TrackDurationInHours": "102",
"TrackIntervalInMinutes": "15"
}
},
"Carrier": {
"Name": "XYZ TRUCKING LLC",
"CarrierID": "123-0"
},
"TripSheet": {
"Stops": {
"Stop": [
{
"StopID": "2-119859-0-1-1",
"Name": "Stop 1: ACME PLUS DC",
"StopType": "PickUp",
"Address": {
"Line1": "135 E 12TH STREET RD",
"Line2": "",
"City": "LENOIR CITY",
"StateOrProvince": "TN",
"PostalCode": "37771"
},
"StartDateTime": "2024-01-22T09:00:00-05:00",
"EndDateTime": "2024-01-22T12:00:00-05:00"
},
{
"StopID": "2-119859-0-1-2",
"Name": "Stop 2: HARBOR TERMINAL",
"StopType": "DropOff",
"Address": {
"Line1": "100 E MAIN ST",
"Line2": "",
"City": "PASCO",
"StateOrProvince": "WA",
"PostalCode": "99301"
},
"StartDateTime": "2024-01-24T09:00:00-08:00",
"EndDateTime": "2024-01-24T15:00:00-08:00"
}
]
}
},
"Notes": "LENOIR CITY, TN - PASCO, WA"
}
}
Successful Response
Return when order creation is successful.
{
"OrderResult": {
"Status": "Success",
"OrderID": "TRACKING-67890"
}
}
Failure Response
Return when order creation fails. Provide actionable error messages.
{
"OrderResult": {
"Status": "Failure",
"Errors": [
{ "Message": "Missing required field: Order.TripSheet.Stops.Stop[0].StartDateTime" },
{ "Message": "Invalid phone number format for TrackVia.Number[0].Value" }
]
}
}
Notes & Recommendations
PartnerMPIDwill be a unique value assigned to each of our mutual customers using your service. GUID format is preferred but not required. Must be 255 characters or less.OrderIDin the success response is the primary identifier for the load in your tracking service and must be used for all subsequent updates about this load.- Return HTTP status codes appropriately:
201 Createdfor success (or200 OK),400 Bad Requestfor client validation errors, and500for server errors.
Validation checklist (recommended)
- Carrier, Partner and Load identifiers are validated against known customers when provided.
- Respond with clear error messages in the
Errorsarray for easy troubleshooting.