Carrier’s official API

Saia LTL Freight API: integration guide

Saia exposes its LTL services to customers through a mix of older XML web services and newer endpoints published on an Azure API Management developer portal. The documented set covers rate quotes (with transit days and terminal details), pickup scheduling, and retrieval of shipment document images such as BOLs, delivery receipts and invoices. It is aimed at shippers, 3PLs and TMS vendors who already ship with Saia.

This guide covers Saia LTL Freight’s own API (api.saia.com). Credentials come from Saia LTL Freight, not from FreightAPIs, and we are not affiliated with them.

Want one API key for carrier terminals, NMFC and ports instead? Saia LTL Freight location API · FreightAPIs API docs →

Interface SOAP/XML (SOAP 1.2) · XML over HTTP POST · REST/JSONEndpoints 7Reviewed 2026-10-09Open in ChatGPT↗Open in Claude↗

At a glance

CarrierSaia LTL Freight (Saia, Inc.)
TypeLTL carrier
SCACSAIA
InterfaceSOAP/XML (SOAP 1.2), XML over HTTP POST, REST/JSON
AuthenticationSubscription key header plus Saia Secure user ID/password
CapabilitiesRate quote, Transit time, Pickup request, Documents & images (BOL, POD, invoice), Terminal details

Getting access

  • You need a Saia Secure login (the customer web account on saia.com). The pickup documentation says the account must have a valid contact name and local phone number on file before web services will work.
  • The rate quote request also requires a Saia account number, and the user ID must be authorized for that account. Access problems are routed to your local Saia sales representative.
  • For the endpoints on the developer portal (Rate Quote V1 and Customer Imaging), sign up on Saia's developer portal, open Products, subscribe to the product you need, and copy the primary or secondary subscription key from your profile page.
  • Saia runs a separate test developer portal and a production developer portal for the imaging API. Keys are issued per product subscription.
  • New user IDs can take up to 2 business days to be set up (error code U03). The documentation does not mention any fees, rate limits or a formal approval process.

Authentication

Subscription key header plus Saia Secure user ID/password.

  • Rate Quote V1: send the header Ocp-Apim-Subscription-Key with your portal subscription key and the header Api-Version (for example V1). The Saia Secure UserID and Password also go inside the XML request body, along with AccountNumber.
  • Pickup web service: credentials are passed as <UserID> and <Password> elements in the XML body. The docs note that the newer versioned URLs require an Api-Version header.
  • Customer Imaging API: every request must carry a CA-Key header holding one of your subscription keys. Its error schemas also cover a missing Authorization header and invalid username/password, so expect to send your Saia Secure credentials too (HTTP Basic).
  • There is no token exchange or expiry flow documented; keys and credentials are sent on every call.

Environments

Developer portal APIs (Rate Quote V1, Customer Imaging) — productionhttps://api.saia.com
Legacy XML web services (Pickup)https://www.saiasecure.com

Endpoints

Rate quote

Submit a <Create> document with lanes, weight/class lines and accessorials to get a quote number and full charge breakdown. Quotes are informational, not a binding contract; the final bill follows the Saia rules tariff and actual shipment characteristics.

POST/RateQuoteRate Quote V1 (SOAP 1.2 Create operation): returns a priced quote for an LTL shipment.
Key inputsUserID, Password, AccountNumberTestMode (Y/N)BillingTerms (Prepaid | Collect)Application (Outbound | Inbound | ThirdParty)OriginCity / OriginState / OriginZipcode, DestinationCity / DestinationState / DestinationZipcodeDetails > DetailItem (Weight, Class)Accessorials > AccessorialItem > Code (e.g. LiftgateService, ResidentialDelivery, InsideDelivery)Dimensions > DimensionItem or TotalCube (for cube-based rates)WeightUnits (LBS | KGS), CODAmount, FullValueCoverage, BorderLocation
Key outputsQuoteNumber, TotalInvoiceDiscountPercent, DiscountAmount, Tariff, RateType (Class | Minimum)ActualWeight, RatedWeight, DeficitWeight / DeficitRate / DeficitAmountFuelSurchargePercent, FuelSurchargeAmountRateDetails > RateDetailItem (Weight, Class, Rate, Amount)RateAccessorials > RateAccessorialItem (Code, Description, Amount)GuaranteeAmount, GuaranteeAmount2pm, GuaranteeAmount12pmEffectiveDate, ExpirationDate

Transit time

There is no separate transit-time call in the documented set. The rate quote response carries standard service days and, for direct points, an estimated delivery date.

POST/RateQuoteSame Create call; read the service-day fields from the response.
Key outputsStandardServiceDaysEstimatedDeliveryDate (YYYY-MM-DD, direct points only)DirectPoint (Y/N)

Pickup request

Schedule a driver pickup for one or more shipments from a single location. Each destination goes in its own DetailItem, and the response returns a pickup confirmation number plus the servicing terminal.

POST/webservice/pickup/xml.aspxPost a Pickup <Create> XML document over plain HTTP POST.
SOAPCreateSame pickup request through the SOAP interface (/webservice/pickup/soap.asmx, WSDL at ?wsdl).
Key inputsUserID, Password, AccountNumber, TestModeCompanyName, Street, Box, City, State, Zipcode (optional if the pickup is at the account address)ContactName, ContactPhonePickupDate (YYYY-MM-DD), ReadyTime and CloseTime (HH:MM:SS, 24-hour local)SpecialInstructionsDetails > DetailItem (DestinationZipcode, DestinationCountry, Pieces, Package, Weight, Freezable, SaiaGuaranteed)
Key outputsPickupNumberTotalPieces, TotalWeightNextBusinessDate (only with code S04)PickupTerminal

Documents & images (BOL, POD, invoice)

Fetch shipment document images for a PRO number as base64, together with basic shipment details. You can request several document types and pick the image format, including multipage PDF or TIFF.

GET/imaging/api/v1/getImagesReturn base64-encoded document images and shipment details for one PRO.
Key inputsCA-Key headerpro (11 digits)formatType (png, gif, jpg, jpeg, pdf, tiff)documentFilter (BL, D3, DR, IV, NF, O1, O2, UD, WC)format (mpdf or mtiff, optional, for multipage output)
Key outputsproNumber, documentTypesRequested, returnCodeshipmentDetails (shipperInformation, deliveryDate, BOL, PO, shipmentStatus)imageInfo[] (status, pageNumber, imageFormat, base64 image data)

Terminal details

No standalone terminal lookup is documented. Terminal ID, address, manager and phone numbers come back inside the rate quote and pickup responses.

POST/RateQuoteReturns OriginTerminal and DestinationTerminal for the quoted lane.
POST/webservice/pickup/xml.aspxReturns PickupTerminal for the location being served.
Key outputsID, Name, Manager, Address1, Address2, City, State, ZipcodeCityDispatchPhone, CustomerServicePhone, TollFreePhone, Fax

Example request

Rate Quote V1 (SOAP 1.2) — outbound quote in test modebash
curl -X POST "https://api.saia.com/RateQuote" \ -H "Content-Type: application/soap+xml; charset=utf-8" \ -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \ -H "Api-Version: V1" \ --data-binary @- <<'XML' <?xml version="1.0" encoding="utf-8"?> <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope"> <Body> <Create xmlns="http://www.saiasecure.com/WebService/ratequote/"> <request> <UserID>YOUR_USER_ID</UserID> <Password>YOUR_PASSWORD</Password> <TestMode>Y</TestMode> <BillingTerms>Prepaid</BillingTerms> <AccountNumber>YOUR_ACCOUNT_NUMBER</AccountNumber> <Application>Outbound</Application> <DestinationCity>ATLANTA</DestinationCity> <DestinationState>GA</DestinationState> <DestinationZipcode>30303</DestinationZipcode> <WeightUnits>LBS</WeightUnits> <Details> <DetailItem> <Weight>1200</Weight> <Class>70</Class> </DetailItem> </Details> <Accessorials> <AccessorialItem> <Code>LiftgateService</Code> </AccessorialItem> </Accessorials> </request> </Create> </Body> </Envelope> XML

Outbound quotes need only the destination city/state/ZIP; Inbound needs the origin; ThirdParty needs both. Check <Code> in the response before reading QuoteNumber.

Integration notes

  • Errors come back inside the response body, not only as HTTP status codes. Every XML response has Code, Element, Fault and Message; a non-empty Code means the call failed. Fault C means you must fix the request, S means Saia must fix it.
  • XML element names are case-sensitive. A wrongly cased element is treated as missing and fails validation (MRE or IXD). Read response elements by name, never by position, because Saia may add new elements anywhere.
  • TestMode is required on every XML request. Use Y while building the integration, then switch to N for live quotes and real pickups.
  • Rate quotes accept at most 5 weight/class detail items and 10 dimension items. Shipments over 15,000 lb actual weight (B02) or 20,000 lb rated weight (B04) cannot be auto-quoted, and COD is capped at $15,000 (B01).
  • Cube-based rating (Hawaii, Alaska, Puerto Rico, Mexico and other offshore markets) needs TotalCube or a Dimensions array. For Mexico destinations use the state code MX; BorderLocation picks the U.S. crossing ZIP.
  • Pickups: submit one request per location per day with all shipments grouped. ReadyTime must be more than 90 minutes before CloseTime, the date cannot be in the past or more than 30 days out, and if you get S04 you must resubmit with PickupDate set to the returned NextBusinessDate.
  • Dates are YYYY-MM-DD and times are HH:MM:SS in 24-hour local time; anything else returns IEF.
  • The imaging API validates pro as an 11-digit number and returns 400 otherwise. A multi-document request can return a mix of found, not-found and access-denied images, so check the status on each imageInfo entry.

FAQ

Does Saia have a public API?

Yes, for Saia customers. Rate quotes and document images are published on Saia's Azure API Management developer portal, and pickup scheduling is offered as an XML/SOAP web service. You need a Saia Secure login and, for rate quotes, a Saia account number.

How do I get a Saia API key?

Sign up on the Saia developer portal, go to Products, subscribe to the product you need (for example getImages for Customer Imaging), and copy the primary or secondary key from your profile. Keys are per product subscription.

Is the Saia rate quote API SOAP or REST?

Rate Quote V1 is SOAP 1.2. You POST a SOAP envelope with a Create request to /RateQuote on api.saia.com, with the Ocp-Apim-Subscription-Key and Api-Version headers.

Can I get a Saia proof of delivery by PRO number through the API?

Yes. The Customer Imaging API's getImages call takes an 11-digit PRO and a documentFilter; DR is the delivery receipt (POD), BL the bill of lading and IV the invoice. Images come back base64-encoded in JSON.

Does the Saia API return transit times?

The rate quote response includes StandardServiceDays and, when the destination is a Saia direct point, an EstimatedDeliveryDate. No separate transit-time endpoint is described in the documentation reviewed for this guide.

On FreightAPIs

Official resources

Written from Saia LTL Freight’s published API documentation and last checked 2026-10-09. FreightAPIs is not affiliated with Saia LTL Freight; endpoints and access rules can change, so confirm details in the carrier’s own documentation before going live.

Other carrier API guides