Carrier’s official API
Forward Air API: integration guide
Forward Air runs an expedited LTL network built around airport-coded terminals, and exposes it to customers through its LTL services API. The API covers rate quotes with transit days, booking (create, update, cancel), status tracking, document upload and download including POD, and a lookup of accessorial codes. It is for shippers, forwarders and TMS vendors that ship on a Forward Air bill-to account.
This guide covers Forward Air’s own API. Credentials come from Forward Air, not from FreightAPIs, and we are not affiliated with them.
Want one API key for carrier terminals, NMFC and ports instead? FreightAPIs API docs →
At a glance
| Carrier | Forward Air |
|---|---|
| Type | Expedited LTL carrier |
| Interface | REST/XML (quote and booking), REST/JSON (tracking, documents, reference data) |
| Authentication | Credentials in custom HTTP headers |
| Capabilities | Rate quote & transit time, Booking (create, update, cancel), Shipment tracking, Documents (POD, BOL, labels), Accessorial codes |
Getting access
- You need a Forward Air customer account. API credentials (an API user, password and customer ID) are issued through your Forward Air account manager; they are not your website login.
- Forward Air documents the API on its customer portal, and the test and production base URLs are given there and with your credentials.
- Rates come from the bill-to account you pass in requests (BillToCustomerNumber), so quotes reflect your negotiated pricing.
- The documentation we reviewed does not mention fees, rate limits or a self-service signup flow.
Authentication
Credentials in custom HTTP headers.
- There is no token exchange. Every request carries the user and password headers.
- Quote, booking and accessorial-code calls also need a customerId header.
- Tracking and document calls use a billToAccountNumber header (your 7-digit bill-to account) instead of customerId. Sending the wrong third header is a common cause of auth errors.
- Quote and booking requests are XML with Content-Type: text/xml. JSON bodies are not accepted on those two endpoints.
Endpoints
Rate quote & transit time
Post an FAQuoteRequest XML document to price a shipment between ZIP codes or Forward Air airport codes. The response gives the total, transit days and an itemized list of charges.
| POST | /ltlservices/v2/rest/waybills/quote | Return QuoteTotal, TransitDaysTotal and ChargeLineItems for the shipment. |
Booking (create, update, cancel)
Post an FABookingRequest XML document to create a shipment, or to update or cancel one. The service type (door or terminal at each end) follows from the AirportPickup and AirportDelivery flags plus airport codes.
| POST | /ltlservices/v2/rest/waybills/book | Create, update or cancel a waybill and return its AirbillNumber. |
Shipment tracking
Get the full status history for a waybill, or just its latest status. Look up by the 8-digit airbill number or the full GABS key.
| GET | /ltlservices/v2/rest/waybills/{referenceNumber}/statuses | Return every status event for the waybill as a JSON array. |
| GET | /ltlservices/v2/rest/waybills/{referenceNumber}/statuses/currentStatus | Return only the latest status as a single object. |
Documents (POD, BOL, labels)
List the documents attached to a waybill, download one, fetch a POD or BOL directly by type, or upload your own shipping documents such as the shipper BOL.
| GET | /ltlservices/v2/rest/waybills/{referenceNumber}/documents | List documents with type, file name, GABS key and a download link. |
| GET | /ltlservices/v2/rest/waybills/{referenceNumber}/documents/download?docId={docId} | Download one document as binary. |
| GET | /ltlservices/v2/rest/waybills/{referenceNumber}/documents/POD | Download a document directly by type code, e.g. POD or BOL. |
| POST | /ltlservices/v2/rest/waybills/{referenceNumber}/documents?documentType={type} | Upload a document of an allowed type (e.g. SHIPBOL, HAZMAT, INBOND). |
| GET | /ltlservices/v2/rest/documenttypes | List the document types you are allowed to upload. |
Accessorial codes
Pull the current list of pickup and delivery accessorial codes to use in quote and booking requests.
| GET | /ltlservices/v2/rest/ltlinfo/accessorialcodes | Return serviceCode, serviceName, category (PICKUP or DELIVERY) and shipmentType. |
Example request
FORWARD_AIR_API_BASE is the test or production host Forward Air gives you. Errors come back as an FAError element with HTTP 400 or 500.
Integration notes
- Quote and booking are XML only, while tracking, documents and accessorial codes are JSON. Plan for two serializers.
- The third auth header changes by endpoint: customerId for quote, booking and accessorial codes; billToAccountNumber for tracking and documents.
- Booking has a required testmode attribute on the root element. Going live means switching both the base URL and testmode="N"; switching only one leaves you testing against production or vice versa.
- Pieces means handling units (pallets or loose pieces), not the item count inside them. Dimensions are in inches; WeightType is L for pounds or K for kilograms.
- TransitDaysTotal counts weekend days. If WeightAdjusted is Y, the shipment was rated on dimensional weight.
- Tracking dates use MM/DD/YY HH:mm with a separate timeZoneCode (PT, MT, CT, ET or LT for local). Parse them explicitly; they are not ISO 8601.
- Waybills can be looked up by the 8-digit AirbillNumber or by the full GABS key (station-airline-airbill-sequence, e.g. LAX-472-12345678-00). The document link returned by the list call still needs the auth headers.
- Wrap free-text values (descriptions, names, addresses, instructions) in CDATA to avoid XML parsing errors. No invoice endpoint is documented.
FAQ
Does Forward Air have an API?
Yes. Forward Air offers an LTL services API for quotes, booking, status tracking, documents and accessorial codes. Credentials come from your Forward Air account manager.
How do I get Forward Air API credentials?
Ask your Forward Air account manager. You receive an API user, password and customer ID, which are separate from your website login, and you use your bill-to account number in requests.
Does the Forward Air API use JSON or XML?
Both. Quote and booking requests must be XML (text/xml), while tracking, document and accessorial-code endpoints return JSON.
Can I get a Forward Air POD through the API?
Yes. You can list a waybill's documents and download one by docId, or fetch the POD directly with the documents/POD path for that airbill number.
Can I track Forward Air shipments by PRO number?
Yes. The statuses endpoint takes the 8-digit airbill (PRO) number or the full GABS key and returns the full event history; statuses/currentStatus returns only the latest event.
On FreightAPIs
Official resources
- Forward Air API documentation: portal.forwardair.com/docs/api/
Written from Forward Air’s published API documentation and last checked 2026-10-09. FreightAPIs is not affiliated with Forward Air; endpoints and access rules can change, so confirm details in the carrier’s own documentation before going live.
Other carrier API guides
ABF Freight · Estes Express Lines · Saia LTL Freight · TForce Freight · Old Dominion Freight Line · XPO (LTL) · AAA Cooper Transportation · AIT Worldwide Logistics