The API changelog.
Every change to the /api/v1 surface, dated and human-written. This page cannot silently rot: the build fails whenever the OpenAPI spec changes without a recorded snapshot and a matching entry here, so what you read is what shipped.
Hand-written entries · machine-enforced honesty · RFC 8594 deprecations
Live all-inclusive rates
2026-07-23fixedCargo van now priced as a dedicated van (POST /van/quote, and the van row of POST /quote)
Cargo van is now quoted and booked as a dedicated vehicle (the rating engine's shipmentType FTL), so a van quote returns its true dedicated-van rate instead of a shared-LTL rate. A short-lived workaround had routed van through the LTL rail because the rating engine previously returned no rate for a dedicated van; that is reverted now that van/FTL capacity is rated (e.g. a 2-pallet LA-metro van now returns ~$467 rather than a ~$150-250 LTL rate). The same FTL mapping is used at booking time so a van quote and its booking never disagree on shipmentType (which the engine rejects). No request/response schema change; box truck, FTL, and LTL are unaffected. Van prices on affected lanes will be higher than the prior LTL-based number - that is the correction to true van pricing, not a surcharge.
2026-07-22addedQuote responses now include warp_reference (the traceable quote id)
Every quote response - POST /api/v1/{van,box-truck,ftl,ltl}/quote and each row of POST /quote - now carries warp_reference, the underlying pricing-engine quote id (e.g. PRICING_...). This is the reference to put on tenders, BOLs, and carrier paperwork so a shipment can be looked up by Warp operations; the wq_ quote_id remains your booking token (pass it to POST /book) and is not recognized outside the API. Purely additive and backward-compatible: quote_id is unchanged, booking is unchanged, and warp_reference is simply an extra field - present on quotes made with an API key, absent on keyless quotes (which cannot book anyway). Spec 1.9.2 to 1.9.3.
2026-07-21fixedCargo van quotes now return rates (POST /van/quote, and the van row of POST /quote)
Cargo van was being sent to the rating engine as shipmentType FTL, which has no dedicated cargo-van capacity, so every cargo-van quote came back 'A rate has not yet been determined for this route'. Cargo van now quotes as shipmentType LTL — the way the rating engine actually prices a van — so van lanes return real rates (e.g. LA to San Diego ~$317, LA to NYC ~$872). The same LTL mapping is applied at booking time so a van quote and its booking never disagree on shipmentType (which the rating engine rejects). No request/response schema change; box truck, FTL, and LTL are unaffected.
2026-07-21addedmarket-options: retryable/cached flags + cached-spread fallback on carrier-sweep timeout
POST /api/v1/ltl/market-options now returns retryable (boolean), cached (boolean), and as_of (when cached). The carrier aggregator polls 30+ carriers live and intermittently times out at ~30s on some lanes, returning an empty 200 that was indistinguishable from genuine no-coverage. Now: when a live sweep times out, the endpoint serves the last-good spread cached for that lane (marked cached:true + as_of, options display-only/bookable:false — re-run for live bookable quotes) instead of an empty list; and every response carries retryable so callers branch on a boolean instead of matching the note text (retryable:true = transient/timeout, retry; false = the sweep completed, an empty list means real no-coverage). Purely additive: successful spreads are unchanged aside from cached:false/retryable:false. The fast Warp rate at /ltl/quote is a separate endpoint and unaffected. Spec 1.9.1 to 1.9.2.
2026-07-18fixedSpec truth pass - docs now match the code everywhere we checked
Corrections from a full docs audit, all documentation-only (zero API behavior change): POST /quote's request schema now uses the field names the API actually reads (destination_zip, weight_lbs_per_pallet, top-level length_in/width_in/height_in - the previously documented dest_zip/weight_per_pallet_lbs/dimensions were never accepted); /book documents its real 402 (checkout_url), 409 BOOKING_IN_PROGRESS, and 503 responses plus promo_code and the idempotent-replay fields; /ltl/market-options documents pickup_services/delivery_services (accessorials/load_template_id/hazmat/freight_class/commodity are not read there), its real ~20s latency (allow 45s), and that aggregator failure degrades to 200 with an empty list rather than 5xx; /track's status enum is booked/cancelled with live movement documented under upstream_tracking.statusInfo.status; /documents documents its type/podType filters; /ltl/quote no longer over-requires commodity (optional, firms the price); van/box-truck docs state that out-of-range pallets/weights are clamped, not rejected; /quote-history is typed as the array it returns; and the error catalog now lists every code the API emits (QUOTE_NOT_FOUND, INVALID_PROMO, WALLET_TOPUP_FAILED, CANCEL_NOT_SELF_SERVE 410, and friends) with the wallet-vs-direct-charge refund behavior stated precisely. Spec 1.9.0 to 1.9.1.
2026-07-18addedOpt-in cargo insurance on quote and book
Quote endpoints (POST /api/v1/{ltl,ftl,van,box-truck}/quote) now accept an optional insuranceInfo { commodity, insuredValue }. When present, the quote response carries an insurance block { insuranceQuoteId, premium, processingFee, total, currency_code }. Pass that insuranceQuoteId to POST /api/v1/book to bind the policy with the shipment: the premium total is funded alongside the freight, and the booking response echoes insuranceStatus ("booked" or "failed"). If insuranceStatus is "failed" the freight still booked and the funded premium remains recoverable — no auto-refund. insuranceQuoteId must match the id issued for that quote_id, else 400 INSURANCE_QUOTE_MISMATCH. Fully opt-in and backward-compatible: callers that send no insuranceInfo/insuranceQuoteId are unaffected. Spec 1.8.1 to 1.9.0.
2026-07-18fixed/van/quote response docs: 429 entry restored to its own status
The /van/quote operation's 429 (RATE_LIMITED) response entry had been nested inside the 400 response object, so the rendered spec showed no 429 for /van/quote and was invalid OpenAPI for that operation (breaking strict validators/codegen). The 429 is now a proper sibling response, and the no-rate note added earlier today ('A rate has not yet been determined...' relayed as 400) now sits on the 400 description where it belongs. Documentation-only; no API behavior change.
2026-07-17changedNo-rate lanes now return 400 (matching upstream), not 502
When the rating engine has no rate for a lane + vehicle combination, the quote endpoints (/box-truck/quote, /van/quote, /ftl/quote, /ltl/quote) used to relay that answer with a generic 502 UPSTREAM_ERROR status, which monitoring and retry logic read as a server outage. It is a routine business answer - nationwide integrations hit it on lanes Warp does not currently price - so it is now relayed with the rating engine's own 400 status instead. The response BODY is byte-identical to before (same error message, same code UPSTREAM_ERROR), so JSON parsing and response.ok checks are unaffected; only the status number changes, and only for the 'A rate has not yet been determined for this route' answer. Real upstream failures (rating service down or unreachable) still return 502. Tip: POST /quote returns every mode's availability for a lane in one call, with unpriced modes as available:false rows instead of errors.
2026-07-15addedPer-stop company, street2, and appointment on POST /book
patch.pickup / patch.delivery now accept company (facility name - the BOL shipper/consignee line, defaulting to the contact name so it is never blank), street2 (suite/unit/dock line), and appointment {from,to} (structured appointment window, local to the stop, forwarded as a scheduled appointment rather than just an accessorial flag). Also fixed in this release: DEFAULT pickup/delivery windows are now computed in each stop's local timezone (8am-8pm local) - previously they were raw UTC, which rendered as 04:00-8pm on Eastern BOLs. All additive; existing requests unchanged.
2026-07-15changedCross-linked POST /quote and POST /ltl/market-options
Both quote-comparison surfaces now point at each other: /quote compares modes (one firm Warp rate each for cargo van, box truck, LTL, FTL), /ltl/market-options compares carriers within LTL. No behavior change.
2026-07-15addedPOST /quote - all modes in one call
New endpoint that quotes cargo van, box truck, LTL, and FTL in parallel from one payload and returns one row per mode, cheapest bookable first. Each priced row carries a quote_id that books through POST /book exactly like a single-mode quote; modes that cannot take the load return available:false with that mode's reason. Purely additive - the four per-mode endpoints are unchanged, and this endpoint prices through them, so it can never disagree with them. Not to be confused with LTL market options: /quote compares modes (one firm Warp rate each), market options compares carriers within LTL.
2026-07-07fixedBookingResponse now documents order_id, order_number, and tracking_dashboard
The booking response schema (POST /api/v1/book and /api/v1/freight/book) now documents three fields the API has always returned but the spec omitted: order_id and order_number (the order the shipment belongs to — pass order_id to GET /api/v1/documents), and tracking_dashboard (the customer tracking URL, always present on a successful booking, so no separate async buildout is needed). shipment_id and order_id are distinct identifiers on a real booking — shipment_id is what you pass to GET /api/v1/track as booking_id, order_id is what you pass to GET /api/v1/documents — and are identical in the sandbox mock. No behavior change; this corrects spec drift only. Spec 1.8.0 to 1.8.1.
2026-07-07addedWhite-glove service options: new accessorial slugs + per-quote option pricing
All quote and book endpoints now accept the self-serve service-option slugs from the Warp catalog: two-man-delivery, tiered inside pickup/delivery (living space/garage, back/side of the house, upstairs/mezzanine with trash removal), driver-assist, construction-site, and convention/trade-show. Requested options attach to the quote and are carried into the booking. Note: rates for premium add-ons are account-configured and not yet rated into price_usd by the API — confirm add-on pricing with your Warp contact. New GET /api/v1/quote/{quote_id}/service-options ships as a preview for per-option rates and currently returns 409 for most quotes until platform-side rating is enabled. Spec 1.7.0 to 1.8.0 (wording corrected same day: an earlier revision of this entry claimed options were priced into price_usd).
2026-06-23addedRead your prepaid wallet balance with GET /api/v1/balance
New GET /api/v1/balance returns your account's prepaid wallet balance in USD — your booking runway. Check it before booking to know whether the next POST /book settles from balance (charging nothing) or charges your saved card for the shortfall only. Read-only and scoped to your own account; returns 409 WARP_SESSION_REQUIRED until you sign in once at wearewarp.com/agents/account. Spec 1.6.1 to 1.7.0.
2026-06-23fixedClarified that LTL dims are always required (no dims-less 'indicative' quote)
The /ltl/quote docs implied an 'indicative' quote could be obtained by omitting fields, which led agents to drop length_in/width_in/height_in and hit 400 MISSING_DIMS. Dims (or a load_template_id / items[] manifest) are ALWAYS required; quote_tier 'indicative' only reflects a missing OPTIONAL field such as commodity. Wording corrected on the endpoint description and the quote_tier field. Spec 1.6.0 to 1.6.1.
2026-06-22fixedMulti-carrier LTL options are bookable with production API keys
POST /api/v1/ltl/market-options now mints a bookable quote_id for each carrier option when called with a production (wak_live_) key, so a selected option books directly via POST /api/v1/book. Previously only sandbox and keyless callers received bookable options; production keys fell through to a display-only house-account spread where every option returned bookable:false with no quote_id and could not be booked. Sandbox and keyless behavior is unchanged (display-only, priced on the house account).
2026-06-22changedDocumented pickup/delivery time windows on POST /book; removed the non-functional stackable field
POST /api/v1/book now documents optional pickup_window and delivery_window objects (each { from, to } as 24h HH:MM) that narrow the pickup or delivery time within the date. The field was already honored by the endpoint and is now in the spec. The stackable field has been removed from the LTL, multi-stop, and load-template request bodies: Warp prices LTL on weight, dimensions, and distance (FAK), and stackable never reached the rating engine, so it was a no-op. Backward-compatible: callers that sent stackable are unaffected. Spec 1.5.0 to 1.6.0.
2026-06-18addedMixed-dimension pallets via items[] on POST /api/v1/ltl/quote
LTL quotes now accept an optional items[] manifest so one shipment can carry pallets of different sizes and weights. Each entry is its own pallet profile ({ qty, weight_lbs_per_pallet, length_in, width_in, height_in }) and is priced as its own line item; identical pallets can be grouped with qty. When items[] is present it replaces the scalar pallets/weight_lbs_per_pallet/length_in/width_in/height_in fields, and the exact manifest is echoed back in assumptions.line_items and replayed verbatim at /api/v1/book. Backward-compatible: callers that send no items[] use the unchanged scalar path. Spec 1.4.0 → 1.5.0.
2026-06-15addedPer-stop reference numbers on POST /api/v1/book
patch.pickup.refNum and patch.delivery.refNum set the reference number that renders on each stop's "Reference Number" line on the BOL — e.g. a PO on the pickup line and an SO on the delivery line. One reference per stop. The top-level reference field is unchanged and remains shipment-level; per-stop refs never persist into your saved consignee, so they aren't reused on a later rebook. Backward-compatible: callers that send no refNum are unaffected. Spec 1.3.0 → 1.4.0.
2026-06-11addedSelf-serve outbound webhooks
New /api/v1/developer/webhook (GET reads, POST { url } registers — https only, one URL per account — DELETE removes) plus POST /api/v1/developer/webhook/test to fire a test delivery. Warp delivers shipment-milestone events to your URL in real time as JSON POSTs ({ event, timestamp, data }) — no more polling /track. Deliveries are NOT signed today: put an unguessable secret in your registered URL and reject requests that lack it; HMAC signing is on the roadmap. Requires a linked Warp session — sign in once at wearewarp.com/agents/account, otherwise 409 WARP_SESSION_REQUIRED. Spec 1.2.0 → 1.3.0.
2026-06-11changedRate limits on the keyless quote endpoints
POST /api/v1/{ltl,ftl,van,box-truck}/quote and /api/v1/ltl/market-options now enforce the published tier ceilings: 60 requests per hour per IP with no key, 1,000 per hour with a sandbox key, 10,000 per hour with a live key. 429 responses carry code RATE_LIMITED, Retry-After, and X-RateLimit-Limit/Remaining/Reset headers with the upgrade path in the error body. Generous for humans and builders; a hard ceiling for hammering.
2026-06-11addedIdempotent booking on quote_id
POST /api/v1/book now replays the original confirmation (idempotent_replay: true) when the same quote_id is re-sent by the same account, instead of charging the card twice. Safe for agent tool retries and network timeouts.
2026-06-11fixedquote_validity_minutes corrected to 4320
GET /api/v1/rate-card (and the OpenAPI example) reported quote_validity_minutes: 15 while the real quote TTL has been 72 hours. The field now reports 4320 everywhere.
2026-06-11addedThe living sandbox lifecycle
Sandbox bookings (wak_test_) now advance through the full production status sequence over ~10 minutes, served by GET /api/v1/track and /api/v1/events (keyless for sandbox ids). Documents follow the production rhythm: BOL after pickupSuccessful, POD after delivered. Pass "reference": "scenario:delay" on /book for a deterministic exception path.
2026-06-10addedcheckout_url on 402 PAYMENT_REQUIRED
POST /api/v1/book without a card on file now returns a Stripe-hosted checkout_url plus a retry hint in the 402 body, so a deferred card is recoverable from the terminal.
2026-06-10changedbooking_url now lands on wearewarp.com/q/{quote_id}
Quote responses' booking_url moved from the external portal form to an on-site handoff page that loads the quoted lane and books it inline. The quote_id in the URL prefills the lane by construction.
2026-05-27changedsnake_case /api/v1 surface is canonical
The canonical self-serve surface is /api/v1/{ltl,ftl,van,box-truck}/quote + /api/v1/book + GET /api/v1/track. The legacy camelCase /api/v1/freight/* routes carry RFC 8594 Deprecation/Sunset headers (sunset 2026-08-31) and are absent from the OpenAPI spec.
Spec source of truth: /.well-known/openapi.json · build provenance: /api/v1/version · live health: /status
Warp customers
Versioning and deprecation policy
The canonical surface is /api/v1 and changes are additive by default: new fields and endpoints arrive without breaking existing integrations, and response shapes documented in the OpenAPI spec stay stable within v1.
When something must be retired, it gets RFC 8594 Deprecation and Sunset headers and a dated entry below, with the replacement documented before the sunset lands (the legacy camelCase /api/v1/freight/* surface is the running example: sunset 2026-08-31).
The machine-checkable trail: every change here corresponds to a recorded spec snapshot in the public repository.
About the Warp freight network
More about the Warp freight network
Warp is a technology-driven freight network that combines cargo van, box truck, LTL, and FTL capacity under one operating system. Shippers get instant rates, real-time tracking, and access to 50+ cross-dock facilities and 14,000+ cargo vans and box trucks — with 80%+ US LTL zip-to-zip coverage and nationwide FTL, box truck, and cargo van.
The network is supported by 24,000+ vetted FTL carriers.
Unlike traditional brokers, Warp uses AI to match the right vehicle to every load based on weight, dimensions, urgency, and cost targets. Cross-dock operations reduce transit time by eliminating unnecessary terminal transfers.
Pool distribution and zone-skipping programs help enterprise shippers lower per-unit delivery costs while maintaining tight appointment windows.
Self-serve shippers can quote, compare, and book freight online in under two minutes. Enterprise accounts get dedicated capacity planning, committed rate programs, and a named operations team. Every shipment includes scan-level visibility from pickup through final delivery.
Warp operates across the contiguous United States with regional density in the Southeast, Texas, Midwest, and Northeast corridors.
Cross-dock facilities in Atlanta, Chicago, Houston, New York, Savannah, Orlando, Charlotte, Indianapolis, Columbus, Denver, New Orleans, and Milwaukee support faster transfers and fewer touches on recurring lanes.
Freight modes and vehicle types
| Mode | Max payload | Max cube | Best for |
|---|---|---|---|
| Cargo van | 3,500 lbs | 400 cu ft | Time-sensitive, last-mile, light pallets |
| Box truck | 10,000 lbs | 1,500 cu ft | Regional distribution, no dock required |
| LTL | Per-pallet | Shared trailer | Lower per-pallet cost via cross-dock routing |
| Dry van / FTL | 42,000+ lbs | Full 53-ft trailer | High-volume lanes, recurring programs |
Cargo vans handle loads up to 3,500 pounds and 400 cubic feet, ideal for time-sensitive deliveries, last-mile retail replenishment, and lightweight palletized freight.
Box trucks carry up to 10,000 pounds and 1,500 cubic feet, fitting most regional distribution and store delivery needs without requiring a loading dock.
Dry vans and full truckloads move 42,000+ pounds for high-volume lanes and recurring programs. LTL shipments share trailer space on optimized routes through Warp cross-docks, reducing per-pallet cost by consolidating multiple shippers on the same vehicle.
Warp does not default every shipment to a 53-foot trailer. The AI engine evaluates load weight, cube, delivery window, and cost to recommend the right vehicle. Shippers see all available mode options with live pricing in one comparison screen before booking.
Cross-dock operations
Cross-docking at Warp facilities eliminates warehouse storage. Inbound freight is sorted and transferred directly to outbound vehicles, typically within hours.
This reduces dwell time, lowers damage risk, and compresses delivery windows. Warp cross-docks support pallet-in, pallet-out operations with scan-level tracking at every handoff point.
- Atlanta — Southeast retail flow
- Chicago — Midwest manufacturing and replenishment
- Houston — Texas industrial distribution
- New York — dense Northeast delivery
Facility locations are selected for corridor density: Atlanta handles Southeast retail flow, Chicago serves Midwest manufacturing and replenishment, Houston covers Texas industrial distribution, and New York supports dense Northeast delivery. Each facility operates on appointment-based scheduling to prevent congestion and maintain throughput consistency.
Enterprise freight programs
Enterprise shippers get committed rate programs, dedicated account management, and custom SLA design. Warp builds lane-by-lane rate structures that account for volume commitments, seasonal variation, and mode flexibility. Operations teams monitor shipment execution daily and intervene proactively when exceptions occur.
Self-serve freight quoting
Shippers enter origin and destination, load details, and delivery requirements to see live rates across all available modes. Quotes include estimated transit time, vehicle type, and total cost.
Booking takes one click. After booking, shippers track every shipment with real-time GPS location, milestone updates, and proof of delivery documentation.
Industries and use cases
Retail shippers use Warp for store replenishment programs that deliver to hundreds of locations per week on tight appointment windows. Apparel brands use zone skipping to bypass regional parcel sortation and reduce per-unit delivery cost.
Food and beverage companies rely on time-definite delivery for perishable goods. Manufacturing operations use Warp for inbound vendor consolidation, combining multiple supplier shipments into fewer, fuller loads through cross-dock facilities.
Distribution companies use pool distribution to serve multiple delivery points from a single origin, splitting full truckloads at cross-docks into smaller last-mile vehicles.
Urgent freight recovery covers emergency capacity needs when primary carriers fail or demand spikes unexpectedly. Middle-mile optimization reduces cost and transit time on the longest segment of multi-leg shipments.
Ready to ship?
Get instant rates or talk to our team about a custom freight program.
Hand-written entries · machine-enforced honesty · RFC 8594 deprecations
Performance figures are computed from Warp network data. See our methodology.
