Carrier’s official API
MVE (Mountain Valley Express) API: integration guide
MVE is the LTL carrier that traded as GLS Freight (GLS US Freight) and, before that, as Mountain Valley Express. Its current customer API runs on the FACTS freight system from Carrier Logistics Inc. (CLI) and covers rate quotes, bill of lading and pickup entry, tracking by PRO number with links to BOL and delivery-receipt images, and shipment email alerts. It is meant for shippers, 3PLs and TMS vendors who already have an MVE customer account. This is a different business from the GLS US parcel network.
This guide covers MVE (Mountain Valley Express)’s own API. Credentials come from MVE (Mountain Valley Express), 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 | MVE (Mountain Valley Express) |
|---|---|
| Type | LTL carrier |
| Interface | XML over HTTP (query-string GET or form POST), SOAP/XML (legacy GLS-era quote service) |
| Authentication | FACTS web login (user ID and password) sent with every request |
| Capabilities | Rate quote, Bill of lading & pickup request, Tracking, Documents (BOL & POD images), Shipment email alerts, Accessorial code list, Legacy SOAP quote (GLS US Freight era) |
Getting access
- The API is not published on a public developer portal. MVE gives its documentation to customers on request, so start with your MVE sales or customer service contact.
- You need an MVE customer web login. The API calls authenticate with the same user ID and password you use on the carrier's FACTS web interface.
- The carrier also gives you the gateway URL for your account. It is account-specific, so do not hard-code one copied from someone else's example.
- The documentation does not mention fees, rate limits, a sandbox or a formal approval process.
Authentication
FACTS web login (user ID and password) sent with every request.
- Pass the credentials as the xmluser and xmlpass parameters. The BOL function also accepts the aliases UserName and Password.
- There is no token exchange, session or expiry. Every call carries the credentials.
- With GET the credentials sit in the URL, where proxies and server logs can capture them. The BOL documentation strongly recommends POST, sending the whole request as an XML document in a form field named xmlreq.
- A bad login does not return an HTTP error code. The XML comes back with success = No and an errormessage such as "Invalid Username/Password".
- The legacy GLS-era SOAP quote service used a separate SECURITYINFO block (USERNAME, PASSWORD) plus an IAM role code issued by the carrier.
Endpoints
Rate quote
Send origin and destination ZIPs plus up to several freight lines (pieces, pallets, weight, class) and get an itemized quote: line charge, discount, fuel surcharge, accessorials and a total. The response also gives transit time in business days.
| GET | ratequote.xml | Returns a priced LTL quote as XML (send xmlv=yes). |
Bill of lading & pickup request
One call creates the BOL and books the pickup. Set nopickup to Yes for a BOL only. The success response returns the PRO and tracking numbers plus links to a printable BOL PDF and shipping labels.
| POST | tbolentry4.xml | Creates a bill of lading and, unless nopickup=Yes, a pickup request. |
Tracking
Look up a shipment by PRO number. The XML includes origin and destination terminals, piece and weight counts, delivery status, receiver name, a status line and a list of history events.
| GET | protracexml.htm | Returns tracking detail for one PRO number (parameter pronum). |
Documents (BOL & POD images)
There is no separate document call. Each tracking response carries an images block. Each image has a type code (B = bill of lading, P = proof of delivery) and a URL to the stored file.
| GET | protracexml.htm | Same tracking call; read the images block for BOL and POD links. |
Shipment email alerts
Subscribe one or more email addresses to status alerts for a list of PRO numbers. The carrier then sends the emails; the API does not push data to you.
| GET | xmlproalert.xml | Registers email alerts for the given PROs and alert types. |
Accessorial code list
Fetch the live list of accessorial keywords for your account instead of hard-coding them. Examples from the documentation include APPT, LIFD, LIFP, INSD, RESI, RESP, LTDD, HAZM and the XL07–XL28 extreme-length codes.
| GET | keywordlist.xml | Returns the accessorial codes that rate quotes and BOLs accept. |
Legacy SOAP quote (GLS US Freight era)
Before the move to the FACTS gateway, GLS US Freight offered a SOAP GetQuote service. It returned a rating breakdown plus origin and destination terminal and service-day details. Confirm with the carrier whether it still works before building on it.
| SOAP | getquote | Legacy GLS-era quote with charges, terminals, service days and estimated delivery dates. |
Example request
The response is a <ratequote> document. Read quotetotal for the total and busdays for transit days. --data-urlencode encodes the brackets and slashes for you.
Integration notes
- Check the success element, not the HTTP status. Failed BOL requests come back as XML with success = No and one or more errormessage entries.
- Rate quote lines use bracket indexes (wweight[1], vclass[1]). The BOL call uses plain numeric suffixes (weight1, class1). Keep the two naming styles straight when you reuse code between calls.
- The BOL call accepts up to 8 freight lines. If you send one dimension for a line, you must send all three (length, width, height in inches).
- Dates are MM/DD/YYYY and pickup times are 24-hour HHMM (for example closetime=1630). URL-encode the slashes when you use GET.
- Accessorials on a BOL can be sent four ways: accessoriallist, a code element set to yes, an accessorials list, or an ExtraSvc block. Pick one and pull valid codes from keywordlist.xml.
- The BOL text says to post to tbolnav4.xml, but every example uses tbolentry4.xml. Use tbolentry4.xml.
- Freight class comes back as a three-digit code (class 92.5 is returned as 092), and the rated class can differ from the class you sent. Store the class the carrier returns.
- A POD image only appears after delivery. Check prodelivered = Yes before looking for an image with imagetypecode P, and do not assume the images come in a fixed order.
FAQ
Does MVE (formerly GLS Freight) have an API?
Yes. MVE offers XML APIs for rate quotes, BOL and pickup entry, PRO tracking with BOL/POD image links, and shipment email alerts. The documentation is given to customers on request rather than published on a public portal.
How do I get MVE API credentials?
Ask your MVE sales or customer service contact. The API uses your MVE customer web login (user ID and password) and an account-specific gateway URL that the carrier gives you.
Can I get a proof of delivery from the MVE API?
Yes, through the tracking call. Once the shipment is delivered, the response's images block includes an entry with imagetypecode P and a URL to the delivery receipt.
Is the MVE freight API the same as the GLS US parcel API?
No. MVE is the LTL freight carrier that used to trade as GLS Freight. Its API runs on a separate freight system and does not cover GLS parcel shipments or drop-off locations.
Does the MVE API return transit times?
Yes. The rate quote response includes busdays, the transit time in business days. The legacy GLS-era SOAP quote also returned service days and estimated delivery dates.
On FreightAPIs
Official resources
Written from MVE (Mountain Valley Express)’s published API documentation and last checked 2026-10-09. FreightAPIs is not affiliated with MVE (Mountain Valley Express); 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