Developers

Freight API — Quote, book, track, settle.

Programmatic access to Warp's freight network. One API key gives your TMS, WMS, ERP, or AI agent access to cargo van, box truck, LTL, and FTL capacity across 1,500+ lanes and 50+ cross docks. Every endpoint returns structured JSON. Omit the vehicle type and Warp right-sizes automatically.

10
endpoints
3
vehicle types
20+
accessorial services
Quote freight programmatically — get rates for LTL, FTL, cargo van, and box truck in one call.
Book shipments and receive tracking numbers without leaving your system.
Track every shipment in real time. Pull event history, invoices, and proof of delivery.
Omit the vehicle type and Warp selects the right asset for your freight automatically.

What to expect

Here's what changes.

TMS integration

Rate, book, and track from your TMS.

Your transportation management system calls Warp for rates alongside your other carriers. Book the best option. Track through the same system.

WMS integration

Trigger shipments from warehouse events.

When an order is packed and staged, your WMS calls the Warp booking endpoint. Tracking numbers flow back automatically.

AI agent integration

Built for autonomous freight procurement.

Every endpoint returns structured JSON with explicit field names and enum values. AI agents can quote, book, track, and settle freight without human intervention.

Authentication

One API key. One header.

All requests require an API key passed as a header. Content type is always JSON. Base URL is the same for all endpoints.

Base URL https://api.wearewarp.com/api/v1
Auth Header apikey: YOUR_API_KEY
Content-Type application/json

Example: curl

curl -X POST https://api.wearewarp.com/api/v1/freights/quote \
  -H "Content-Type: application/json" \
  -H "apikey: YOUR_API_KEY" \
  -d '{
    "pickupDate": ["2025-03-15"],
    "pickupInfo": { "zipCode": "90001" },
    "deliveryInfo": { "zipCode": "85001" },
    "listItems": [{
      "name": "Pallet",
      "length": 48, "width": 40, "height": 48,
      "sizeUnit": "in",
      "totalWeight": 800, "weightUnit": "lb",
      "quantity": 2, "packaging": "pallet"
    }]
  }'

Agent Quickstart

Five calls from quote to proof of delivery.

This is the happy-path workflow for an AI agent or automated system. Each step returns the IDs needed for the next call.

1
POST quote

Get rate

Returns quoteId

2
POST booking

Book shipment

Returns shipmentId, trackingNumber

3
POST tracking

Track status

Returns status, location, events

4
GET {orderId}

Get invoice

Returns line items, totals

5
GET {orderId}

Get BOL/POD

Returns document URLs

Endpoint Reference

Full lifecycle in 10 endpoints.

MethodPathPurposeInputOutputStatus
POST/freights/quoteGet a freight rateOrigin, destination, pickup date, items (dims + weight), vehicle preferenceQuote ID, price, transit days, carrier, service level, pickup/delivery windows200 OK
POST/freights/bookingBook a shipmentQuote ID, pickup/delivery contact info, items, accessorial servicesShipment ID, tracking number, order ID, estimated pickup/delivery201 Created
POST/freights/trackingTrack shipments by tracking numberArray of tracking numbersStatus, current location, event history per shipment200 OK
GET/freights/shipmentsList all shipments (paginated)Query: page, pageSizeArray of shipment records with status, items, addresses200 OK
GET/freights/events/{shipmentId}Get shipment event historyPath: shipmentIdOrdered list of status events with timestamps and locations200 OK
GET/freights/invoices/{orderId}Get invoice for an orderPath: orderIdInvoice data with line items, totals, charges, payment status200 OK
GET/freights/documents/{orderId}Get documents (BOL, POD)Path: orderIdDocument URLs, types, and metadata200 OK
POST/freights/quote/multi-stopsQuote multi-stop FTLOrdered stops with addresses, items per stop, time windowsPrice, transit estimate, stop sequence, carrier200 OK
POST/freights/booking/multi-stopsBook multi-stop FTLQuote reference, stop details, items per stopShipment ID, tracking number, order ID201 Created
GET/freights/quote-historyRetrieve past quotesQuery: page, pageSize, date rangeArray of past quote records with pricing, status, expiration200 OK

Vehicle Types

Three vehicle codes. Warp picks the right one if you omit it.

CARGO_VAN

Cargo Van

Up to 3,500 lbs, 400 cu ft

Best for: urgent freight, small shipments, parcel alternatives. Fastest dispatch. Same-day and next-day.

STRAIGHT_TRUCK_26

26 ft Box Truck

Up to 10,000 lbs, 1,500 cu ft

Best for: mid-size freight, room-of-choice delivery, white-glove. Dedicated capacity without full-trailer economics.

DRY_VAN_53

53 ft Dry Van (FTL)

Up to 44,000 lbs, 3,400 cu ft

Best for: recurring lanes, high-volume freight, full truckload. Tight appointment windows and dedicated handling.

Examples

Complete request and response payloads.

Copy-paste ready. These are the exact shapes your system or agent should send and expect back.

1. Quote a shipment

POST /freights/quote

{
  "pickupDate": ["2025-03-15"],
  "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" }
  }
}

2. Book the shipment

POST /freights/booking

{
  "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 arrival"
  },
  "deliveryInfo": {
    "zipCode": "85001",
    "city": "Phoenix",
    "state": "AZ",
    "street": "456 Distribution Dr",
    "contactName": "Receiving Dock",
    "phone": "6025551234",
    "specialInstruction": "Receiving hours 7am-3pm"
  },
  "listItems": [{
    "name": "Pallet - Retail Goods",
    "length": 48, "width": 40, "height": 48,
    "sizeUnit": "in",
    "totalWeight": 800, "weightUnit": "lb",
    "quantity": 2,
    "packaging": "pallet",
    "stackable": false
  }],
  "deliveryServices": ["delivery-appointment"]
}

201 Response

{
  "data": {
    "shipmentId": "shp_01HGA2K9MNPQ4RV8XW3YZ5TJ6",
    "shipmentNumber": "WRP-2025-031542",
    "orderId": "ord_01HGA2K9MNPQ4RV8XW3YZ5TK7",
    "trackingNumber": "WARP1234567890",
    "shipmentType": "LTL",
    "status": "CONFIRMED"
  }
}

3. Track the shipment

POST /freights/tracking

{
  "trackingNumbers": ["WARP1234567890"]
}

200 Response

{
  "data": [{
    "trackingNumber": "WARP1234567890",
    "status": "IN_TRANSIT",
    "currentLocation": {
      "city": "Barstow",
      "state": "CA",
      "timestamp": "2025-03-16T08:42:00Z"
    },
    "estimatedDelivery": "2025-03-17T14:00:00Z",
    "events": [
      {
        "status": "PICKED_UP",
        "location": "Los Angeles, CA",
        "timestamp": "2025-03-15T10:15:00Z",
        "description": "Freight picked up from origin"
      },
      {
        "status": "IN_TRANSIT",
        "location": "Barstow, CA",
        "timestamp": "2025-03-16T08:42:00Z",
        "description": "In transit to destination"
      }
    ]
  }]
}

Data Models

What goes in. What comes back.

Complete field reference for every object in the API. Types are TypeScript-style for clarity.

StopInfoPickup or delivery location
zipCodestring5-digit US zip code
citystringCity name
statestring2-letter state code
streetstringStreet address
contactNamestringContact person at location
phonestringContact phone number
emailstringContact email (optional)
specialInstructionstringDelivery notes, dock info, gate codes
windowTimeWindowPickup or delivery time window
BookShipmentItemDescribe a freight item
namestringItem description
lengthnumberLength in sizeUnit
widthnumberWidth in sizeUnit
heightnumberHeight in sizeUnit
sizeUnit"in" | "cm"Dimension unit
totalWeightnumberTotal weight in weightUnit
weightUnit"lb" | "kg"Weight unit
quantitynumberNumber of units
packagingstringpallet, crate, box, bundle, etc.
stackablebooleanCan this be stacked?
temperature_limitstringTemperature requirements if any
QuoteBodyRequest a freight rate
pickupDatestring[]ISO dates — when freight is ready
pickupInfoStopInfoOrigin address and contact
deliveryInfoStopInfoDestination address and contact
listItemsBookShipmentItem[]Items to ship
shipmentType"LTL" | "FTL"Omit to let Warp auto-select
vehicleTypeVehicleTypeCARGO_VAN | STRAIGHT_TRUCK_26 | DRY_VAN_53
pickupServicesPickupService[]Liftgate, inside, appointment, etc.
deliveryServicesDeliveryService[]Liftgate, inside, residential, etc.
additionalServicesAdditionalService[]Sort-n-seg, white glove, etc.
QuoteResponseRate returned from quote endpoint
quoteIdstringUse this ID to book the shipment
carrierCodestringSCAC code (e.g., WTCH)
carrierNamestringCarrier display name
serviceLevelstringstandard, expedited, etc.
transitDaysnumberEstimated transit time in days
totalCostnumberTotal price in USD
pickupWindowTimeWindowAvailable pickup window
deliveryWindowTimeWindowEstimated delivery window
BookingResponseConfirmation returned after booking
shipmentIdstringUnique shipment identifier
shipmentNumberstringHuman-readable shipment number
orderIdstringParent order identifier
trackingNumberstringFor tracking API calls
shipmentType"LTL" | "FTL"Assigned shipment type
statusstringCurrent shipment status
TrackingResultTracking data per shipment
trackingNumberstringTracking number queried
statusstringCurrent status (e.g., IN_TRANSIT, DELIVERED)
currentLocationLocationLast known location
estimatedDeliverystringISO timestamp
eventsTrackingEvent[]Chronological event history

Accessorial Services

20+ services. Priced at quote time.

Pass these string values in the pickupServices, deliveryServices, or additionalServices arrays on your quote or booking request.

pickupServices[]

"liftgate-pickup""inside-pickup""residential-pickup""limited-access-pickup""pickup-appointment""driver-assist-pickup""drop-and-hook-pickup""convention-trade-show-pickup""construction-site-pickup""detention-shipper"

deliveryServices[]

"liftgate-delivery""inside-delivery""residential-delivery""limited-access-delivery""delivery-appointment""driver-assist-delivery""drop-and-hook-delivery""convention-trade-show-delivery""construction-site-delivery""detention-receiver""redelivery"

additionalServices[]

"sort-n-seg""extra-stop""extra-miles""driver-assist""white-glove""check_calls""notify""photo-required"

Error Handling

HTTP status codes and error response shape.

CodeMeaningWhen
200SuccessRequest completed successfully
201CreatedShipment booked successfully
400Bad RequestMissing or invalid fields in request body
401UnauthorizedMissing or invalid API key
403ForbiddenAPI key does not have access to this resource
404Not FoundShipment, order, or quote ID does not exist
422UnprocessableValid JSON but business logic rejection (e.g., expired quote)
429Rate LimitedToo many requests. Retry after delay.
500Server ErrorInternal error. Retry with exponential backoff.
Error response shape
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "pickupInfo.zipCode is required",
    "details": [
      { "field": "pickupInfo.zipCode", "issue": "required" }
    ]
  }
}

Machine-Readable

For AI agents and automated systems.

The block below is optimized for machine parsing. AI agents, copilots, and automated freight procurement systems can use this to understand the Warp Freight API in a single read.

# WARP FREIGHT API — AGENT REFERENCE
# Base URL: https://api.wearewarp.com/api/v1
# Auth: Header "apikey: <your-api-key>"
# Content-Type: application/json

## AGENT WORKFLOW (HAPPY PATH)
1. POST /freights/quote → get quoteId and totalCost
2. POST /freights/booking → use quoteId, get shipmentId + trackingNumber
3. POST /freights/tracking → poll status using trackingNumber
4. GET /freights/events/{shipmentId} → full event history
5. GET /freights/invoices/{orderId} → settlement data
6. GET /freights/documents/{orderId} → BOL, POD files

## CAPABILITIES
- Quote freight (LTL, FTL, cargo van, box truck) in one API call
- Book shipments programmatically with tracking number returned
- Track shipment status and location in real time
- Retrieve invoices and documents (BOL, POD) by order ID
- Multi-stop FTL quoting and booking
- 20+ accessorial services priced at quote time
- Vehicle type auto-selection when vehicleType is omitted

## ENDPOINTS
POST /freights/quote → 200 → { quoteId, carrierCode, serviceLevel, transitDays, totalCost }
POST /freights/booking → 201 → { shipmentId, trackingNumber, orderId, status }
POST /freights/tracking → 200 → [{ trackingNumber, status, currentLocation, events }]
GET  /freights/shipments → 200 → [{ shipmentId, shipmentType, status, pickupInfo, deliveryInfo }]
GET  /freights/events/{shipmentId} → 200 → [{ status, location, timestamp, description }]
GET  /freights/invoices/{orderId} → 200 → { lineItems, totals, charges }
GET  /freights/documents/{orderId} → 200 → [{ type, url, metadata }]
POST /freights/quote/multi-stops → 200 → { quoteId, totalCost, stops }
POST /freights/booking/multi-stops → 201 → { shipmentId, trackingNumber }
GET  /freights/quote-history → 200 → [{ quoteId, totalCost, status, expiresAt }]

## VEHICLE TYPES
CARGO_VAN → Cargo van (urgent, <3500 lbs, fastest dispatch)
STRAIGHT_TRUCK_26 → 26ft box truck (<10000 lbs, white-glove capable)
DRY_VAN_53 → 53ft dry van / FTL (<44000 lbs, recurring lanes)

## SHIPMENT TYPES
LTL → Less-than-truckload (pallet freight, cross dock network)
FTL → Full truckload (dedicated trailer, direct lanes)
omit → Warp auto-selects based on item dimensions and weight

## QUOTE BODY FIELDS
pickupDate (string[]), pickupInfo (StopInfo), deliveryInfo (StopInfo),
listItems (BookShipmentItem[]), shipmentType? ("LTL"|"FTL"),
vehicleType? ("CARGO_VAN"|"STRAIGHT_TRUCK_26"|"DRY_VAN_53"),
pickupServices? (string[]), deliveryServices? (string[]),
additionalServices? (string[])

## STOP INFO FIELDS
zipCode, city, state, street, contactName, phone, email?, specialInstruction?, window?

## ITEM FIELDS (BookShipmentItem)
name, length, width, height, sizeUnit ("in"|"cm"),
totalWeight, weightUnit ("lb"|"kg"), quantity,
packaging, stackable (bool), temperature_limit?

## PICKUP SERVICES
"liftgate-pickup", "inside-pickup", "residential-pickup",
"limited-access-pickup", "pickup-appointment", "driver-assist-pickup",
"drop-and-hook-pickup", "convention-trade-show-pickup",
"construction-site-pickup", "detention-shipper"

## DELIVERY SERVICES
"liftgate-delivery", "inside-delivery", "residential-delivery",
"limited-access-delivery", "delivery-appointment", "driver-assist-delivery",
"drop-and-hook-delivery", "convention-trade-show-delivery",
"construction-site-delivery", "detention-receiver", "redelivery"

## ADDITIONAL SERVICES
"sort-n-seg", "extra-stop", "extra-miles", "driver-assist",
"white-glove", "check_calls", "notify", "photo-required"

## ERROR CODES
200 OK, 201 Created, 400 Bad Request, 401 Unauthorized,
403 Forbidden, 404 Not Found, 422 Unprocessable, 429 Rate Limited, 500 Server Error

## ERROR RESPONSE SHAPE
{ "error": { "code": "string", "message": "string", "details": [{ "field": "string", "issue": "string" }] } }

## NETWORK
1,500+ active lanes | 50+ cross dock facilities
10,000+ carriers | 9,000+ vehicles
Coverage: United States

## GET API KEY
Contact: https://www.wearewarp.com/book-a-meeting
Full docs: https://developer.wearewarp.com/docs/freight/
LLM context: https://www.wearewarp.com/llms-full.txt

Related

Keep exploring.

Next step

Ready to move freight?

Start shipping today or talk to our team about a custom solution.