Developer tutorial
Ship Your First Load in 5 Minutes
A step by step guide to quoting, booking, and tracking freight with Warp's REST API. Works with curl, Python, Node.js, or any AI coding tool like Claude Code.
5 minutes to first shipment · REST API · JSON · Standard HTTP
Prerequisites
- -A Warp account (sign up at customer.wearewarp.com)
- -An API key (generated in the Warp dashboard under Settings → API Keys)
- -Any HTTP client: curl, Postman, Python requests, Node.js fetch, or an AI coding tool
Step 1: Authenticate
All requests use a single API key passed as an apikey header. No OAuth flows, no token refresh, no Bearer prefix. Every endpoint lives under one base URL.
https://api.wearewarp.com/api/v1apikey: YOUR_API_KEYapplication/jsonTest your key
curl -X GET https://api.wearewarp.com/api/v1/freights/shipments \ -H "Content-Type: application/json" \ -H "apikey: YOUR_API_KEY"
If you get a 200 response with a list of shipments (or an empty array), your key works. A 401 means the key is missing or invalid.
Step 2: Get a freight quote
Send your origin, destination, pickup date, and item details. Warp returns a rate, transit time, and a quoteId you will use to book.
POST /freights/quote
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-07"],
"pickupInfo": {
"zipCode": "90001",
"city": "Los Angeles",
"state": "CA",
"street": "123 Warehouse Blvd",
"contactName": "Dispatch Team",
"phone": "3105551234"
},
"deliveryInfo": {
"zipCode": "85001",
"city": "Phoenix",
"state": "AZ",
"street": "456 Distribution Dr",
"contactName": "Receiving Dock",
"phone": "6025551234"
},
"listItems": [{
"name": "Pallet - Retail Goods",
"length": 48, "width": 40, "height": 48,
"sizeUnit": "in",
"totalWeight": 800, "weightUnit": "lb",
"quantity": 2,
"packaging": "pallet",
"stackable": false
}],
"shipmentType": "LTL"
}'200 Response
{
"data": {
"quoteId": "01HG9W6CMAWHNWTVXDKW9QYFS9",
"carrierCode": "WTCH",
"carrierName": "Warp Technology",
"serviceLevel": "standard",
"transitDays": 2,
"totalCost": 485.00,
"pickupWindow": { "from": "08:00", "to": "17:00" },
"deliveryWindow": { "from": "08:00", "to": "17:00" }
}
}The rate is all inclusive. No fuel surcharges, no accessorial fees, no terminal handling charges. The quoteId is what you use to book.
Step 3: Book the shipment
Pass the quoteId from the previous step along with your pickup and delivery details. You can add special instructions for each stop.
POST /freights/booking
curl -X POST https://api.wearewarp.com/api/v1/freights/booking \
-H "Content-Type: application/json" \
-H "apikey: YOUR_API_KEY" \
-d '{
"quoteId": "01HG9W6CMAWHNWTVXDKW9QYFS9",
"pickupInfo": {
"zipCode": "90001",
"city": "Los Angeles",
"state": "CA",
"street": "123 Warehouse Blvd",
"contactName": "Dispatch Team",
"phone": "3105551234",
"specialInstruction": "Dock 4, call 30 min before"
},
"deliveryInfo": {
"zipCode": "85001",
"city": "Phoenix",
"state": "AZ",
"street": "456 Distribution Dr",
"contactName": "Receiving Dock",
"phone": "6025551234",
"specialInstruction": "Receiving 7am-3pm"
},
"listItems": [{
"name": "Pallet - Retail Goods",
"length": 48, "width": 40, "height": 48,
"sizeUnit": "in",
"totalWeight": 800, "weightUnit": "lb",
"quantity": 2,
"packaging": "pallet"
}]
}'201 Response
{
"data": {
"shipmentId": "shp_01HGA2K9MNPQ4RV8XW3YZ5TJ6",
"shipmentNumber": "WRP-2026-041542",
"orderId": "ord_01HGA2K9MNPQ4RV8XW3YZ5TK7",
"trackingNumber": "WARP1234567890",
"shipmentType": "LTL",
"status": "CONFIRMED"
}
}The response gives you everything you need: a shipmentId for internal tracking, a trackingNumber for the tracking endpoint, and an orderId for invoices and documents.
Step 4: Track the shipment
Pass one or more tracking numbers to get the current status, location, and full event history for each shipment.
POST /freights/tracking
curl -X POST https://api.wearewarp.com/api/v1/freights/tracking \
-H "Content-Type: application/json" \
-H "apikey: YOUR_API_KEY" \
-d '{ "trackingNumbers": ["WARP1234567890"] }'200 Response
{
"data": [{
"trackingNumber": "WARP1234567890",
"status": "IN_TRANSIT",
"currentLocation": {
"city": "Barstow",
"state": "CA",
"timestamp": "2026-04-08T08:42:00Z"
},
"estimatedDelivery": "2026-04-09T14:00:00Z",
"events": [
{
"status": "PICKED_UP",
"location": "Los Angeles, CA",
"timestamp": "2026-04-07T10:15:00Z",
"description": "Freight picked up from origin"
},
{
"status": "SCANNED_IN",
"location": "Los Angeles, CA",
"timestamp": "2026-04-07T11:30:00Z",
"description": "Scanned at Warp cross dock"
},
{
"status": "IN_TRANSIT",
"location": "Barstow, CA",
"timestamp": "2026-04-08T08:42:00Z",
"description": "In transit to destination"
}
]
}]
}Events include PICKED_UP, SCANNED_IN, IN_TRANSIT, arrivedAtWarehouse, departedFromWarehouse, and DELIVERED, each with timestamps and location data. You can also register webhooks in your dashboard to receive push notifications instead of polling.
Step 5: Get invoices and documents
Once a shipment is complete, pull the invoice and supporting documents using the orderId from your booking confirmation.
GET /api/v1/freights/invoices/{orderId}GET /api/v1/freights/documents/{orderId}The invoices endpoint returns line items, totals, charges, and payment status. The documents endpoint returns URLs for the bill of lading (BOL), proof of delivery (POD), and any other shipment documents.
Ready to integrate?
Use with AI coding tools
Claude Code, Cursor, and other AI coding tools can read Warp's API documentation and generate integration code automatically. Point them at developer.wearewarp.com/docs/freight/ and describe what you need. The AI handles the rest.
The Warp CLI (developer.wearewarp.com/docs/cli) provides the same functionality as shell commands. AI agents running in terminal environments can execute warp quote, warp book, and warp track directly.
Available vehicle types and services
CARGO_VANCargo Van
Cartons, cases, parcels, or up to 3 pallets. Same day dispatch.
STRAIGHT_TRUCK_2626ft Box Truck
1 to 12 pallets. All liftgate equipped. Temperature controlled available.
DRY_VAN_5353ft Dry Van (FTL)
Up to 44,000 lbs. Recurring lanes and dedicated capacity.
Frequently asked questions
How long does integration take?
Most developers get their first quote in under 5 minutes. A production integration typically takes a few hours. AI coding tools like Claude Code can generate the code in minutes.
What authentication does the API use?
API key passed in the apikey header. Generate a key in your Warp dashboard under Settings → API Keys.
Can I test without booking real freight?
Yes. The API supports test mode for development.
What modes are available?
LTL (1 to 12 pallets), truckload (dry van, reefer, flatbed), box truck (26 foot, liftgate equipped), and cargo van (cartons, cases, parcels, or up to 3 pallets).
Is there rate limiting?
Standard rate limits apply. Enterprise accounts get higher throughput.
Quote, book, and track freight with five API calls.
Every endpoint returns structured JSON. Works with any language, any HTTP client, any AI coding tool. Get your API key and ship your first load today.
5 minutes to first shipment · REST API · JSON · Standard HTTP