LTL automation
How to Automate LTL Shipping
LTL is the hardest freight mode to automate. Freight class complexity, accessorial surprises, terminal routing, and opaque pricing make programmatic LTL a nightmare. Warp eliminates these problems with all inclusive per pallet pricing, no freight class requirement for most shipments, and cross dock routing instead of terminals. This guide walks through the complete automation workflow.
1 to 12 pallets · All inclusive pricing · 50+ cross docks · 20,000+ carriers
Why LTL is hard to automate
Traditional LTL was designed for phone calls and fax machines. The pricing model depends on NMFC freight classification, which requires looking up commodity codes for every product you ship. Get the class wrong and you get reclassified with a surprise invoice adjustment weeks later. Every carrier has different accessorial fee structures, fuel surcharge tables that change weekly, and minimum charge thresholds that vary by lane. Terminal routing adds unpredictability. Your 4 pallet shipment might pass through 3 to 5 terminals between origin and destination, each one a potential delay point and damage risk. Automating this system means integrating with each carrier individually, mapping their unique rate structures, and handling the inevitable exceptions.
How Warp simplifies LTL
Warp replaces the entire traditional LTL model. Instead of routing through carrier terminals, Warp routes through its own network of 50+ cross dock facilities. Instead of freight class based pricing, Warp uses all inclusive per pallet rates. You provide dimensions and weight. Warp returns a price. That price includes pickup by a local 3rd party carrier, handling at the cross dock, line haul to the destination region, and final delivery. No fuel surcharges. No terminal handling charges. No reclassification risk.
The result is LTL that behaves like an API should. One request in, one price out. The same price you see at quoting is the price on the invoice. This is what makes LTL automatable.
The Warp LTL workflow
Every Warp LTL shipment follows this path. Each stage generates scan events and GPS data that flow through the tracking API in real time.
Pickup
Local 3rd party carrier picks up freight using the Warp driver app. Pallets scanned in with barcode or pallet ID.
Origin cross dock
Freight arrives at Warp cross dock facility. Scanned in, sorted by destination region, staged for line haul.
Line haul
Consolidated freight moves on line haul truck with ELD integration for continuous GPS visibility.
Destination cross dock
Freight arrives at destination Warp cross dock. Scanned out, sorted for final delivery routes.
Delivery
Local 3rd party carrier delivers using the Warp driver app. Proof of delivery photos and electronic signature captured.
That is 1 to 2 handoffs between pickup and delivery. Traditional LTL terminals involve 3 to 5 handoffs as freight moves through origin terminal, breakbulk, destination terminal, and sometimes intermediate sort facilities. Every additional handoff is a delay risk and a damage risk. Warp's cross dock model eliminates the intermediaries.
Automate with the API
The complete LTL automation workflow is four API calls: quote, book, track, and settle. Every call uses the same base URL, the same API key header, and returns structured JSON.
https://api.wearewarp.com/api/v1apikey: YOUR_API_KEYapplication/jsonStep 1: Quote an LTL shipment
POST to /freights/quote with your origin, destination, pickup date, and pallet details. Set shipmentType to "LTL". You do not need to provide a freight class. Warp returns an all inclusive rate with transit time.
curl: Quote 4 pallets Atlanta to Charlotte
curl -X POST https://api.wearewarp.com/api/v1/freights/quote \
-H "Content-Type: application/json" \
-H "apikey: YOUR_API_KEY" \
-d '{
"pickupDate": ["2026-04-10"],
"pickupInfo": {
"zipCode": "30301",
"city": "Atlanta",
"state": "GA",
"street": "100 Peachtree Industrial Blvd",
"contactName": "Warehouse Team",
"phone": "4045551234"
},
"deliveryInfo": {
"zipCode": "28201",
"city": "Charlotte",
"state": "NC",
"street": "500 Distribution Way",
"contactName": "Receiving",
"phone": "7045551234"
},
"listItems": [{
"name": "Pallet - Consumer Goods",
"length": 48, "width": 40, "height": 48,
"sizeUnit": "in",
"totalWeight": 750, "weightUnit": "lb",
"quantity": 4,
"packaging": "pallet",
"stackable": true
}],
"shipmentType": "LTL"
}'Step 2: Book the shipment
Take the quoteId from the response and POST to /freights/booking. Include full addresses with contact info and any special instructions. Warp returns a shipmentId and trackingNumber immediately.
Step 3: Track through the cross dock network
POST to /freights/tracking with the tracking number. The response includes granular status events as the shipment moves through each stage: pickupSuccessful, arrivedAtWarehouse (cross dock), departedFromWarehouse, arrivedAtDelivery, delivered. Register webhook URLs in your Warp dashboard to receive these events pushed to your system in real time instead of polling.
Step 4: Settle and close
GET /freights/invoices/{orderId} for the invoice with line items and totals. GET /freights/documents/{orderId} for the BOL and proof of delivery. The invoice matches the quote because Warp pricing is all inclusive. No post shipment adjustments, no reclassification surprises.
Full Python automation example
This script quotes, books, and tracks an LTL shipment in one run. Copy it, replace YOUR_API_KEY, and execute.
Python: Quote, book, and track LTL
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://api.wearewarp.com/api/v1"
HEADERS = {
"Content-Type": "application/json",
"apikey": API_KEY
}
# Step 1: Quote
quote = requests.post(f"{BASE}/freights/quote", headers=HEADERS, json={
"pickupDate": ["2026-04-10"],
"pickupInfo": {"zipCode": "30301", "city": "Atlanta", "state": "GA",
"street": "100 Peachtree Industrial Blvd",
"contactName": "Warehouse", "phone": "4045551234"},
"deliveryInfo": {"zipCode": "28201", "city": "Charlotte", "state": "NC",
"street": "500 Distribution Way",
"contactName": "Receiving", "phone": "7045551234"},
"listItems": [{
"name": "Pallet", "length": 48, "width": 40, "height": 48,
"sizeUnit": "in", "totalWeight": 750, "weightUnit": "lb",
"quantity": 4, "packaging": "pallet", "stackable": True
}],
"shipmentType": "LTL"
}).json()
quote_id = quote["data"]["quoteId"]
print(f"Quote: {quote['data']['totalCost']} USD, {quote['data']['transitDays']} days")
# Step 2: Book
booking = requests.post(f"{BASE}/freights/booking", headers=HEADERS, json={
"quoteId": quote_id,
"pickupInfo": {"zipCode": "30301", "city": "Atlanta", "state": "GA",
"street": "100 Peachtree Industrial Blvd",
"contactName": "Warehouse", "phone": "4045551234",
"specialInstruction": "Dock 2, call ahead"},
"deliveryInfo": {"zipCode": "28201", "city": "Charlotte", "state": "NC",
"street": "500 Distribution Way",
"contactName": "Receiving", "phone": "7045551234",
"specialInstruction": "Receiving 7am to 3pm"},
"listItems": [{
"name": "Pallet", "length": 48, "width": 40, "height": 48,
"sizeUnit": "in", "totalWeight": 750, "weightUnit": "lb",
"quantity": 4, "packaging": "pallet", "stackable": True
}]
}).json()
tracking_num = booking["data"]["trackingNumber"]
print(f"Booked: {booking['data']['shipmentNumber']}")
# Step 3: Track
tracking = requests.post(f"{BASE}/freights/tracking", headers=HEADERS, json={
"trackingNumbers": [tracking_num]
}).json()
for event in tracking["data"][0]["events"]:
print(f" {event['status']} at {event['location']} ({event['timestamp']})") Automate with AI coding tools
The Warp API is designed for machine consumption. Every endpoint returns structured JSON with explicit field names and enum values. AI coding tools like Claude Code can read the API documentation at developer.wearewarp.com/docs/freight/ or the machine readable context at wearewarp.com/llms-full.txt, then generate and execute the correct API calls.
Claude Code: Natural language LTL automation
# In your terminal, tell Claude Code what to ship: # # "Quote 4 pallets of consumer goods from Atlanta 30301 to Charlotte 28201, # each pallet 48x40x48 inches at 750 lbs. Ship LTL. If the rate is under # $600, book it and give me the tracking number." # # Claude Code reads the Warp API docs, generates the correct requests, # and executes the full workflow: quote, evaluate, book, return tracking.
This works because Warp's LTL pricing is deterministic. The AI agent does not need to understand freight classes, negotiate rates, or handle accessorial surprises. It sends dimensions and weight, gets a price, and books if the price meets the criteria. The same workflow that takes a human 15 minutes of phone calls and portal clicking takes an AI agent 3 seconds of API calls.
Warp LTL vs traditional LTL
The differences that matter for automation.
Pricing
All inclusive per pallet
Traditional LTL: freight class, fuel surcharge, terminal handling, accessorials. Warp: one price per pallet. The quote is the invoice.
Routing
Cross docks, not terminals
Traditional LTL: 3 to 5 terminal handoffs. Warp: 1 to 2 handoffs through Warp operated cross dock facilities. Fewer touches, less damage, faster transit.
Visibility
Granular scan events
Traditional LTL: check call at pickup and delivery. Warp: scan in at pickup, scan in at cross dock, scan out at cross dock, scan at delivery, with GPS at every stage.
Automated quality monitoring
Our AI backbone, Orbit, monitors every LTL shipment automatically. Orbit flags late pickups, late departures from cross dock facilities, missed scans, route deviations, dwell anomalies, temperature deviations, and delivery exceptions before your team has to chase them. For automated systems, this means your exception handling logic receives proactive alerts instead of discovering problems after the fact.
Frequently asked questions
Can I automate LTL shipping without knowing the freight class?
Yes. Warp uses all inclusive per pallet pricing for most LTL shipments. You provide dimensions and weight, and Warp returns a rate. No NMFC lookup, no freight class required.
How many handoffs does an LTL shipment go through with Warp?
Typically 1 to 2 handoffs. A local 3rd party carrier picks up your freight and delivers it to a Warp cross dock facility. Line haul moves it to the destination cross dock, and another local carrier delivers it. Traditional LTL terminals involve 3 to 5 handoffs.
What is the capacity range for Warp LTL shipments?
Warp LTL handles 1 to 12 pallets per shipment. For loads over 12 pallets, Warp automatically quotes full truckload options.
Does Warp charge fuel surcharges or accessorial fees on LTL?
No. Warp LTL rates are all inclusive. Pickup, cross dock handling, line haul, and delivery are included in a single per pallet price. No fuel surcharges, no terminal handling charges, no hidden fees.
Can AI agents automate LTL shipping through the Warp API?
Yes. The Warp API returns structured JSON for every endpoint. AI coding tools like Claude Code can read the API documentation, generate quote requests, book shipments, and track deliveries without human intervention.
LTL that works like an API should.
One request, one price, no surprises. Automate LTL quoting, booking, and tracking through 50+ cross dock facilities with all inclusive per pallet pricing. No freight class required.
50+ cross docks · 1,400+ LTL lanes · All inclusive pricing · 20,000+ carriers