Nerd Alert
Our super simple, developer-friendly API lets you connect your systems to ours. Build the integration of your dreams.
Available to companies on our Premium tier. Already using another system? Check out our prebuilt integrations.
Quote Endpoint
Get instant rates from multiple carriers programmatically. Pass your shipment details (origin, destination, dimensions, weight) and receive a list of quotes with pricing, transit times, and carrier info. Compare options in milliseconds, not minutes.
import freightsimple
client = freightsimple.Client("fs_live_...")
quotes = client.quotes.create(
pickup={"city": "Toronto", "state": "ON", "country": "CA"},
delivery={"city": "Chicago", "state": "IL", "country": "US"},
pieces=[{"weight": 500, "length": 48, "width": 40, "height": 48}],
)
for quote in quotes:
print(f"{quote.carrier} — {quote.price} — {quote.transit_days}d") Booking API
Create shipments and schedule pickups with a single API call. Pass the quote ID and shipment details, and we handle the rest: carrier notification, pickup scheduling, and BOL generation. No phone calls, no emails, just code.
const fs = new FreightSimple("fs_live_...");
const shipment = await fs.bookings.create({
quoteId: "qt_8f3k2m9x",
pickupDate: "2026-03-10",
pickup: { company: "Acme Mfg", contact: "Jane Smith", ... },
delivery: { company: "Midwest Dist", contact: "John Doe", ... },
reference: "PO-2026-0042",
});
console.log(shipment.id); // "shp_4n7b2x1q"
console.log(shipment.bolUrl); // PDF link ready to print Tracking Webhooks
Receive real-time tracking updates pushed directly to your systems. Get notified the moment shipment status changes: pickup, in transit, out for delivery, delivered. No polling required.
{
"event": "shipment.status_updated",
"shipmentId": "shp_4n7b2x1q",
"status": "in_transit",
"carrier": "FedEx Freight",
"location": "Detroit, MI",
"estimatedDelivery": "2026-03-13",
"timestamp": "2026-03-11T14:32:00Z"
} Document Retrieval
Fetch BOLs, shipping labels, and proof of delivery documents programmatically. Integrate shipping documents directly into your document management system or customer portal. Everything accessible via simple API calls.
client = FreightSimple::Client.new("fs_live_...")
docs = client.shipments.documents("shp_4n7b2x1q")
docs.each do |doc|
puts "#{doc.type}: #{doc.url}"
# => "bill_of_lading: https://docs.freightsimple.com/..."
# => "shipping_label: https://docs.freightsimple.com/..."
# => "proof_of_delivery: https://docs.freightsimple.com/..."
end Sandbox Environment
Test your integration without affecting real shipments or spending real money. Full API functionality in a safe testing environment. Break things, experiment, and iterate, then go live with confidence.
# Testing — safe to experiment
FREIGHTSIMPLE_URL=https://sandbox.freightsimple.com/v1
FREIGHTSIMPLE_KEY=fs_test_xyz789
# Production — swap when ready
# FREIGHTSIMPLE_URL=https://api.freightsimple.com/v1
# FREIGHTSIMPLE_KEY=fs_live_abc123
# Same endpoints, same responses, same code.
# No real shipments, no real charges. Three steps to your first API call
Get API Credentials
Contact us to request API access. We'll set you up with sandbox and production keys.
Test in Sandbox
Build and test your integration. Try quotes, bookings, and tracking without real shipments.
Go Live
Switch to production credentials and start shipping with your custom integration.
We'll hold your hand the whole way 🤝
Building an integration can be daunting. Our team will work alongside you from planning to launch, answering questions, reviewing code, and making sure everything works perfectly.