Developer Docs

305 Express API

Integrate LTL rating, dispatch, and shipment tracking directly into your systems. Get real-time quotes, create shipments, and track deliveries programmatically.

Base URLhttps://api.305exp.com/api/v1
Interactive API Docs

Authentication

All API requests require an API key passed via the access-token header.

Request Headers
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.

POST/quotes/ltl/quote/query

Request Body

FieldTypeRequiredDescription
originZipCodestringYesOrigin zip code
originCountrystringYesOrigin country (e.g., "US")
destinationZipCodestringYesDestination zip code
destinationCountrystringYesDestination country (e.g., "US")
lineItemsarrayYesArray of line items (see below)
weightUnitsstringNoWeight units. Default: "lb"
dimmensionUnitsstringNoDimension units. Default: "in"
accesorialsServicearrayNoAccessorial services
cbffloatNoCubic feet
linearFeetfloatNoLinear feet

Line Item Object

FieldTypeRequiredDescription
huCountintegerYesNumber of handling units (must be > 0)
packageTypestringNoPackage type. Default: "Pallet"
packageDimensionsobjectYesObject with length, width, height (integers, > 0)
freightClassstringNoFreight class
totalWeightintegerYesTotal weight in specified units (must be > 0)
nmfcstringNoNMFC code
descriptionstringNoItem description

Available Accessorials

HAZMATAIRPORTAIRPORT - PICKUPAIRPORT - DELIVERYLIFTGATELIFTGATE - PICKUPLIFTGATE - DELIVERYRESIDENTIALRESIDENTIAL - PICKUPRESIDENTIAL - DELIVERYLIMITED ACCESSLIMITED ACCESS - PICKUPLIMITED ACCESS - DELIVERYCFSCFS - PICKUPCFS - DELIVERYSTACKABLENON STACKABLECWTGUARANTEEDBLINDDELIVERY APPOINTMENT

Example Request

POST /quotes/ltl/quote/query
{
  "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)

Response
{
  "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.

POST/quotes/dispatched

Request Body

FieldTypeRequiredDescription
apiQuoteNumberstringYesQuote ID from Rating endpoint
originLocationobjectYesOrigin location (address + contact)
destinationLocationobjectYesDestination location (address + contact)
requesterLocationobjectYesRequester/bill-to location (address + contact)
pickupWindowobjectYesPickup window (date, startTime, endTime)
deliveryWindowobjectYesDelivery window (date, startTime, endTime)
pickupNotestringNoPickup instructions
deliveryNotesstringNoDelivery instructions
emergencyContactobjectNoEmergency contact information
customerReferencesstringNoCustomer reference number

Location Object

Location Structure
{
  "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

Window Structure
{
  "date": "2026-03-20",
  "startTime": "08:00",
  "endTime": "17:00"
}

Example Request

POST /quotes/dispatched
{
  "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)

Response
{
  "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.

GET/quotes/tracking/{pro_number}

Path Parameters

ParameterTypeDescription
pro_numberstringThe PRO number assigned during dispatch

Response (200 OK)

GET /quotes/tracking/30500015
{
  "pro_number": "30500015",
  "status": {
    "status": "Created",
    "description": "Shipment has been created",
    "created_at": "2026-03-17 10:30:00",
    "timestamp": "1742222600"
  }
}

Tracking Statuses

StatusDescription
CreatedShipment has been created
On BoardShipment is on board
In TransitShipment is in transit
DeliveredShipment has been delivered

4. Tracking (Update Status)

Update the tracking status of a shipment.

POST/quotes/tracking/

Request Body

FieldTypeRequiredDescription
pro_numberstringYesThe PRO number of the shipment
to_statusstringYesThe new status (see tracking statuses)

Example

POST /quotes/tracking/
// 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.

1

Get a Rate Quote

cURL
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.

2

Create Shipment (Dispatch)

Use the apiQuoteNumber from Step 1 to create a shipment with full origin, destination, and scheduling details.

cURL
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.

3

Track Shipment

cURL
curl -X GET "https://api.305exp.com/api/v1/quotes/tracking/<PRO_NUMBER>"
4

Update Status

cURL
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

Error Response (400 Bad Request)
{
  "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.