305 Express API
Integrate LTL rating, dispatch, and shipment tracking directly into your systems. Get real-time quotes, create shipments, and track deliveries programmatically.
https://api.305exp.com/api/v1Authentication
All API requests require an API key passed via the access-token header.
Content-Type: application/json
access-token: <YOUR_API_KEY>Need an API key?
Contact our sales team at info@305exp.com to get your API key and start integrating.
API Endpoints
The API provides three core operations: rate quotes, shipment dispatch, and tracking.
1. Rating (LTL Quote Query)
Get a rate quote for your cargo based on its specific characteristics.
/quotes/ltl/quote/queryRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
originZipCode | string | Yes | Origin zip code |
originCountry | string | Yes | Origin country (e.g., "US") |
destinationZipCode | string | Yes | Destination zip code |
destinationCountry | string | Yes | Destination country (e.g., "US") |
lineItems | array | Yes | Array of line items (see below) |
weightUnits | string | No | Weight units. Default: "lb" |
dimmensionUnits | string | No | Dimension units. Default: "in" |
accesorialsService | array | No | Accessorial services |
cbf | float | No | Cubic feet |
linearFeet | float | No | Linear feet |
Line Item Object
| Field | Type | Required | Description |
|---|---|---|---|
huCount | integer | Yes | Number of handling units (must be > 0) |
packageType | string | No | Package type. Default: "Pallet" |
packageDimensions | object | Yes | Object with length, width, height (integers, > 0) |
freightClass | string | No | Freight class |
totalWeight | integer | Yes | Total weight in specified units (must be > 0) |
nmfc | string | No | NMFC code |
description | string | No | Item description |
Available Accessorials
Example Request
{
"originZipCode": "33172",
"originCountry": "US",
"destinationZipCode": "33301",
"destinationCountry": "US",
"lineItems": [
{
"huCount": 5,
"packageType": "Pallet",
"packageDimensions": {
"length": 48,
"width": 40,
"height": 48
},
"freightClass": "",
"totalWeight": 2500,
"nmfc": "",
"description": "General Merchandise"
}
],
"weightUnits": "lb",
"dimmensionUnits": "in",
"accesorialsService": [],
"cbf": 0,
"linearFeet": 0
}Response (200 OK)
{
"carrierName": "305 Express",
"tariffDescription": "BL - 305 Express - API",
"transitTime": 1,
"serviceLevel": "Normal",
"priceTotal": 140.00,
"apiQuoteNumber": "bba79a27-2d2c-4c1f-9021-6e316b6768a9"
}2. Dispatch (Shipment Tender)
Create a shipment/tender using a valid quote number obtained from the Rating service.
/quotes/dispatchedRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
apiQuoteNumber | string | Yes | Quote ID from Rating endpoint |
originLocation | object | Yes | Origin location (address + contact) |
destinationLocation | object | Yes | Destination location (address + contact) |
requesterLocation | object | Yes | Requester/bill-to location (address + contact) |
pickupWindow | object | Yes | Pickup window (date, startTime, endTime) |
deliveryWindow | object | Yes | Delivery window (date, startTime, endTime) |
pickupNote | string | No | Pickup instructions |
deliveryNotes | string | No | Delivery instructions |
emergencyContact | object | No | Emergency contact information |
customerReferences | string | No | Customer reference number |
Location Object
{
"address": {
"postal_code": "33054",
"city": "OPA LOCKA",
"state": "FL",
"country": "US",
"address_line": "",
"address": "4115 NW 132ND ST UNIT Q"
},
"contact": {
"company_name": "ACME CORP",
"contact_name": "John Doe",
"phone_number": "555-1234",
"phone_number_country_code": "305",
"phone_number2": "555-1234",
"phone_number2_country_code": "305",
"email": "john@example.com",
"fax_number": "555-0000",
"fax_number_country_code": "305"
}
}Window Object
{
"date": "2026-03-20",
"startTime": "08:00",
"endTime": "17:00"
}Example Request
{
"apiQuoteNumber": "bba79a27-2d2c-4c1f-9021-6e316b6768a9",
"originLocation": {
"address": {
"postal_code": "33054",
"city": "OPA LOCKA",
"state": "FL",
"country": "US",
"address_line": "",
"address": "4115 NW 132ND ST UNIT Q"
},
"contact": {
"company_name": "MRS TASTE",
"contact_name": "DENIS",
"phone_number": "991-1633",
"phone_number_country_code": "954",
"phone_number2": "991-1633",
"phone_number2_country_code": "954",
"email": "shipper@example.com",
"fax_number": "999-9999",
"fax_number_country_code": "999"
}
},
"destinationLocation": {
"address": {
"postal_code": "33178",
"city": "MIAMI",
"state": "FL",
"country": "US",
"address_line": "",
"address": "10205 NW 108TH AVE"
},
"contact": {
"company_name": "WAREHOUSE LLC",
"contact_name": "EXPORT DEPT.",
"phone_number": "492-1330",
"phone_number_country_code": "786",
"phone_number2": "492-1330",
"phone_number2_country_code": "786",
"email": "consignee@example.com",
"fax_number": "492-1330",
"fax_number_country_code": "786"
}
},
"requesterLocation": {
"address": {
"postal_code": "33172",
"city": "MIAMI",
"state": "FL",
"country": "US",
"address_line": "",
"address": ""
},
"contact": {
"companyName": "REQUESTER CO",
"contactName": "Jane Smith",
"phoneNumber": "555-0000",
"phoneNumberCountryCode": "1",
"phoneNumber2": "",
"phoneNumber2CountryCode": "",
"email": "requester@example.com",
"faxNumber": "",
"faxNumberCountryCode": ""
}
},
"pickupWindow": {
"date": "2026-03-20",
"startTime": "08:00",
"endTime": "17:00"
},
"deliveryWindow": {
"date": "2026-03-21",
"startTime": "08:00",
"endTime": "17:00"
},
"pickupNote": "",
"deliveryNotes": "",
"emergencyContact": {
"companyName": "REQUESTER CO",
"contactName": "Jane Smith",
"phoneNumber": "555-0000",
"phoneNumberCountryCode": "1",
"email": "emergency@example.com"
},
"customerReferences": "REF-12345"
}Response (200 OK)
{
"pro_number": "30500015",
"shipment": { },
"documents": {},
"status": "Created",
"tracking": "<tracking_id>",
"created_by": "<company>",
"created_at": "2026-03-17 10:30:00",
"updated_at": "2026-03-17 10:30:00",
"truck": "titan",
"kind": "api"
}3. Tracking (Get Status)
Retrieve the current tracking status of a shipment by PRO number.
/quotes/tracking/{pro_number}Path Parameters
| Parameter | Type | Description |
|---|---|---|
pro_number | string | The PRO number assigned during dispatch |
Response (200 OK)
{
"pro_number": "30500015",
"status": {
"status": "Created",
"description": "Shipment has been created",
"created_at": "2026-03-17 10:30:00",
"timestamp": "1742222600"
}
}Tracking Statuses
| Status | Description |
|---|---|
Created | Shipment has been created |
On Board | Shipment is on board |
In Transit | Shipment is in transit |
Delivered | Shipment has been delivered |
4. Tracking (Update Status)
Update the tracking status of a shipment.
/quotes/tracking/Request Body
| Field | Type | Required | Description |
|---|---|---|---|
pro_number | string | Yes | The PRO number of the shipment |
to_status | string | Yes | The new status (see tracking statuses) |
Example
// Request
{
"pro_number": "30500015",
"to_status": "In Transit"
}
// Response (200 OK)
{
"pro_number": "30500015",
"status": "In Transit",
"last_update": "2026-03-18 14:00:00"
}End-to-End Flow
A typical integration follows this sequence: get a quote, create a shipment, then track it.
Get a Rate Quote
curl -X POST "https://api.305exp.com/api/v1/quotes/ltl/quote/query" \
-H "Content-Type: application/json" \
-H "access-token: <API_KEY>" \
-d '{
"originZipCode": "33172",
"originCountry": "US",
"destinationZipCode": "33301",
"destinationCountry": "US",
"lineItems": [{
"huCount": 2,
"packageType": "Pallet",
"packageDimensions": {"length": 48, "width": 40, "height": 48},
"totalWeight": 1000,
"description": "Test Shipment"
}],
"weightUnits": "lb",
"dimmensionUnits": "in"
}'Save the apiQuoteNumber from the response.
Create Shipment (Dispatch)
Use the apiQuoteNumber from Step 1 to create a shipment with full origin, destination, and scheduling details.
curl -X POST "https://api.305exp.com/api/v1/quotes/dispatched" \
-H "Content-Type: application/json" \
-H "access-token: <API_KEY>" \
-d '{ "apiQuoteNumber": "<QUOTE_ID>", ... }'Save the pro_number from the response.
Track Shipment
curl -X GET "https://api.305exp.com/api/v1/quotes/tracking/<PRO_NUMBER>"Update Status
curl -X POST "https://api.305exp.com/api/v1/quotes/tracking/" \
-H "Content-Type: application/json" \
-d '{ "pro_number": "<PRO_NUMBER>", "to_status": "In Transit" }'Error Handling
{
"httpStatusCode": "400",
"httpMessage": "Invalid Request",
"errorMessage": "One or more of the business rules are not available for your quote, please check the error messages and try again.",
"errors": ["<error details>"]
}Ready to integrate?
Get your API key and start building. Our team is here to help you get up and running.