FreightSimple
FreightSimple Public API

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.

get_quotes.py
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.

book.js
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.

webhook_payload.json
{
  "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.

documents.rb
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.

.env
# 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.
Getting Started

Three steps to your first API call

1

Get API Credentials

Contact us to request API access. We'll set you up with sandbox and production keys.

2

Test in Sandbox

Build and test your integration. Try quotes, bookings, and tracking without real shipments.

3

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.