Carrier’s official API
Uber Freight API: integration guide
Uber Freight publishes two separate API families on developer.uberfreight.com. The brokerage APIs give TMS platforms and shippers instant quotes and load tendering for FTL, LTL and intermodal. The TMS Shipper APIs, inherited from Transplace (now part of Uber Freight), serve managed-transportation customers with quick-quote rate searches, shipment add/update/cancel and latest shipment status.
This guide covers Uber Freight’s own API (sandbox-api.uber.com). Credentials come from Uber Freight, 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 | Uber Freight (Uber Technologies, Inc.) |
|---|---|
| Type | Truckload & LTL broker |
| Interface | REST/JSON, REST/XML (TMS Shipper APIs accept JSON or XML) |
| Authentication | OAuth 2.0 client credentials — bearer token |
| Capabilities | Instant quote (brokerage), Load tender (brokerage), Rate search (TMS Shipper APIs), Shipment add / update / cancel (TMS Shipper APIs), Shipment status, Master data & health (TMS Shipper APIs) |
Getting access
- Brokerage APIs (instant quote and tender): create a developer account on developer.uber.com and create an app of the "Other Applications" (hybrid) type, not the default app type offered on the dashboard home screen.
- Then email Uber Freight API support (ufapisupport@uberfreight.com) with your app's client ID and company name and ask for the freight.loads scope. The docs say they reply within 2 business days and then give you a test customer_id.
- TMS Shipper APIs: these are for existing Uber Freight managed-transportation (TMS) customers. Your requests carry a customer domainId and accountId that Uber Freight assigns, and OAuth client credentials are issued by Uber Freight. Ask your Uber Freight contact to set this up.
- The documentation does not mention API fees.
Authentication
OAuth 2.0 client credentials — bearer token.
- Brokerage APIs: POST to the Uber token endpoint (login.uber.com /oauth/v2/token) with client_id, client_secret, grant_type=client_credentials and scope freight.loads. Send the result as Authorization: Bearer YOUR_ACCESS_TOKEN.
- You always request brokerage tokens from the production token endpoint. The same token works against both sandbox and production quote and tender calls.
- TMS Shipper APIs use a different OAuth 2.0 client-credentials server: the /oauth2/accesstoken path on the Uber Freight API host (the spec lists the UAT token URL). Tokens from the two systems are not interchangeable.
- The "Try this API" and "Authorize" buttons on developer.uberfreight.com do not work for the brokerage endpoints, because they are hosted on api.uber.com. Test them with Postman or curl.
Environments
| Brokerage APIs — sandbox | https://sandbox-api.uber.com |
|---|---|
| Brokerage APIs — production | https://api.uber.com |
| TMS Shipper APIs — UAT | https://uatapi.uberfreight.com/tp-api/customer |
| TMS Shipper APIs — production | https://api.uberfreight.com/tp-api/customer |
Endpoints
Instant quote (brokerage)
Get a spot price for a load from its stops, items and equipment. v2 handles FTL, LTL and intermodal (IMDL) and returns an array of options with transit estimates and rate line items. v1 is FTL only and is marked for deprecation.
| POST | /v2/freight/loads/quotes | Instant quote for FTL, LTL or IMDL; returns one or more priced options. |
| POST | /v1/freight/loads/quotes | Legacy FTL instant quote (to be deprecated); returns uber_quote_uuid and a price. |
Load tender (brokerage)
Tender a load to Uber Freight, then update or cancel it using the Uber Freight load ID. Passing a quote ID guarantees the quoted price if the load has not materially changed and the quote has not expired.
| POST | /v1/freight/loads/tenders | Tender an FTL or LTL load; returns uber_load_id (also the PRO number) and uber_load_uuid. |
| PUT | /v1/freight/loads/tenders/{uf_load_id} | Update a load while it is still updatable; returns 204 on success. |
| DELETE | /v1/freight/loads/tenders/{uf_load_id} | Cancel a load while it is still cancellable; returns 204. |
Rate search (TMS Shipper APIs)
Managed-transportation customers can get quick quotes from their contract or benchmark rates. Results are informational; the actual carrier and cost are set during execution. v3 improves error messages over v2, and v4 restructures the request and adds parcel hazmat fields.
| POST | /v4/quickQuotes/search | Quick quote rate search, latest request format. |
| POST | /v3/quickQuotes/search | Quick quote rate search with coded validation errors (QQ-xxxx). |
| POST | /v2/quickQuotes/search | Original quick quote rate search. |
Shipment add / update / cancel (TMS Shipper APIs)
One endpoint handles new shipments, updates and cancellations. The action field picks the operation, and customerTransactionId ties an update or cancel to the original shipment.
| POST | /v2/shipment | Submit a shipment with action ADD, UPDATE or CANCEL. |
| POST | /v2/post-goods-issued | Submit a post goods issued (PGI) document for an existing load. |
Shipment status
Returns the latest status for one load, looked up by load ID or by a reference name and value. It is a snapshot of the most recent event, not a full event history.
| GET | /v2/shipment-status | Latest status event for a load, by loadId or referenceName + referenceValue. |
Master data & health (TMS Shipper APIs)
Load location and product master data into the TMS, and check connectivity before sending traffic.
| POST | /v2/location/import | Import customer locations. |
| POST | /v2/products/add-update | Add or update product records. |
| GET | /v2/healthCheck | Confirm connectivity to the TMS Shipper APIs. |
Example request
Pass the returned uber_quote_id into POST /v1/freight/loads/tenders before expiration_time_utc to lock the price. Money amounts in the brokerage APIs are in cents.
Integration notes
- The two API families are separate systems: different hosts, different OAuth servers and different IDs. Brokerage loads are keyed by uber_load_id; TMS Shipper API loads by loadId and your references. The brokerage spec has no status endpoint; the documented status lookup is /v2/shipment-status in the TMS Shipper APIs.
- Brokerage APIs use Unix epoch seconds (UTC) for appointments, quote expiry and tender expiry, and money in the currency's smallest unit (cents for USD). The TMS Shipper APIs use plain decimal amounts, and shipment-status times are ISO local date-times in the carrier-reported or location time zone.
- v2 quotes cannot mix LTL with FTL/IMDL in one request. Send separate requests. v1 returns uber_quote_uuid, while v2 returns uber_quote_id; use the matching field when you tender.
- Rate limits: 10 requests per second for quotes and tenders, 5 per second for LTL v2 quotes. Above that you get HTTP 429.
- Tendering the same load twice returns 400 (load_id_already_exists) after the first one got 201. PUT updates and DELETE cancels are safe to repeat and return 204. The docs say 500s can be retried; a common cause on tenders is an item without both a pickup and a drop-off stop.
- Every brokerage stop needs an appointment with start_time_utc and end_time_utc. DROP stop mode is disabled by default and has to be enabled with your account manager.
- The brokerage address format uses principal_subdivision for the state and a 5-digit postal_code. The TMS rate search uses city/state/postalCode/country in locations[].
- Shipment status returns only the newest event. If you need a history, poll and store each event yourself. Invoice, POD and freight-bill endpoints are not part of either published spec.
FAQ
Does Uber Freight have a public API?
Yes. Uber Freight documents its brokerage instant quote and tender APIs, and the TMS Shipper APIs for managed-transportation customers, on developer.uberfreight.com. You still need credentials and scopes approved by Uber Freight before calls succeed.
How do I get an Uber Freight API key?
For the brokerage APIs, create an "Other Applications" app on developer.uber.com, then email ufapisupport@uberfreight.com with the client ID and company name to request the freight.loads scope. You then use OAuth client credentials to get bearer tokens.
Can I get LTL quotes from the Uber Freight API?
Yes. The brokerage v2 quote endpoint accepts shipping_modes LTL, FTL or IMDL, but LTL must be quoted in its own request. TMS customers can also use the quickQuotes search endpoints against their contract rates.
Does the Uber Freight API support shipment tracking?
The TMS Shipper APIs have GET /v2/shipment-status, which returns the latest status event for a load by loadId or by reference. It does not return a full history, and the brokerage spec has no tracking endpoint.
Is the Uber Freight PRO number returned by the API?
Yes. A successful tender returns uber_load_id, which the docs say is also the PRO number, plus an uber_load_uuid. Use uber_load_id in the update and cancel paths.
On FreightAPIs
Official resources
- Uber Freight developer documentation: developer.uberfreight.com
Written from Uber Freight’s published API documentation and last checked 2026-10-09. FreightAPIs is not affiliated with Uber Freight; 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