Provider List API

Retrieve available shipping providers based on shipment details

POST/api/shipments/provider-listSmall Parcel & LTL

Description

This endpoint analyzes your shipment requirements and returns a filtered list of shipping providers that can handle your specific shipment type, route, and package specifications.

The response includes provider details, capabilities, and a unique key for subsequent rate fetching operations.

Authentication

headers: {
  "Authorization": "Bearer {YOUR_API_KEY}",
  "Content-Type": "application/json"
}

Request Parameters

Core Parameters

ParameterTypeRequiredDescription
shipment_fromobjectYesOrigin address details
shipment_toobjectYesDestination address and recipient details
from_detailsobjectYesShipper contact information and pickup preferences
to_detailsobjectYesConsignee contact information
packagesarrayYesArray of package specifications
pickup_datestringYesPickup date in YYYY-MM-DD format
optionsarrayNoAdditional shipping service options
typestringNoShipment type ("ltl" for LTL shipments, omit for Small Parcel)

Shipment From Object

ParameterTypeRequiredDescription
address_line1stringYesPrimary address line
address_line2stringNoSecondary address line
citystringYesCity name
stateCodestringYesState/province code (e.g., 'OH', 'FL')
postalCodestringYesPostal/ZIP code
countryCodestringYesISO country code (e.g., 'US')

Shipment To Object

ParameterTypeRequiredDescription
destinationstringYesComplete destination address string
companystringNoRecipient company name
namestringYesRecipient contact name
emailstringYesRecipient email address
phonestringNoRecipient phone number
address_line1stringYesPrimary address line
address_line2stringNoSecondary address line
citystringYesCity name
statestringYesFull state/province name
countrystringYesFull country name
postalCodestringYesPostal/ZIP code
countryCodestringYesISO country code
stateCodestringYesState/province code
weightnumberYesTotal shipment weight
weight_unitstringYesWeight unit ("pound", "kg")
descriptionstringYesShipment description

Shipper Details (from_details)

ParameterTypeRequiredDescription
pickup_window.start_atstringYesPickup window start time (HH:MM:SS format)
pickup_window.end_atstringYesPickup window end time (HH:MM:SS format)
pickup_window.closing_atstringYesFacility closing time (HH:MM:SS format)
company_namestringYesShipper company name
contact_namestringYesShipper contact person name
contact_nostringYesShipper contact phone number
contact_emailstringYesShipper contact email address
is_residentialbooleanYesWhether the pickup location is residential

Consignee Details (to_details)

ParameterTypeRequiredDescription
destination_window.start_atstringYesPickup window start time (HH:MM:SS format)
destination_window.end_atstringYesPickup window end time (HH:MM:SS format)
destination_window.closing_atstringYesFacility closing time (HH:MM:SS format)
company_namestringYesConsignee company name
contact_namestringYesConsignee contact person name
contact_nostringYesConsignee contact phone number
contact_emailstringYesConsignee contact email address
is_residentialbooleanYesWhether the delivery location is residential

Package Object

ParameterTypeRequiredDescription
weightnumberYesPackage weight
quantitynumberYesNumber of packages
widthstring/numberYesPackage width
lengthstring/numberYesPackage length
heightstring/numberYesPackage height
weight_unitstringYesWeight unit ("pound", "kg")
dimension_unitstringYesDimension unit ("inch", "cm")
descriptionstringYesPackage description
classstringYesFreight class (e.g., "175", "250")
typestringYesPackage type ("Box", "Pallet", etc.)
stackablebooleanYesWhether package can be stacked
hazardous_materialsbooleanYesWhether contains hazardous materials
hazardous_materials_un_nastringNoUN/NA identification number for hazardous materials (e.g., 'UN1203', 'NA1993')
hazardous_materials_shipping_namestringNoOfficial shipping name of the hazardous material (e.g., 'Gasoline', 'Combustible liquid, n.o.s.')
hazardous_materials_hazard_classstringNoHazard class classification (e.g., '3', '8', '9' for flammable liquids, corrosive, misc dangerous goods)
hazardous_materials_packaging_groupstringNoPackaging group level indicating danger level ('I', 'II', 'III' - I being most dangerous)
hazardous_materials_emergncy_namestringNoEmergency contact person's name responsible for hazardous materials handling and incident response
hazardous_materials_emergncy_phonestringNo24/7 emergency contact phone number for hazardous materials incidents, spills, or transportation emergencies

Options Array (LTL Services)

ParameterTypeRequiredDescription
cnstpstringNoConstruction Site Pickup
ltdapstringNoLimited Access Pickup
repstringNoResidential Pickup
lftpstringNoLiftgate Pickup
ipustringNoInside Pickup
lftdstringNoLiftgate Delivery
pscstringNoProtective Service Coverage
ovrstringNoOver Dimensional
ltdadstringNoLimited Access Delivery
cnstdstringNoConstruction Site Delivery
mncstringNoMarking/Counting
aptdstringNoAppointment Delivery
resstringNoResidential Delivery
hazstringNoHazardous Materials
insstringNoAdditional Insurance
excessive_lengthstringNoExcessive Length
API Configuration
Request Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{
  "shipment_from": {
    "address_line1": "285 Northeast Avenue",
    "city": "Tallmadge",
    "stateCode": "OH",
    "postalCode": "44278",
    "countryCode": "US"
  },
  "shipment_to": {
    "destination": "8800 Dorchester Road, North Charleston, South Carolina, United States - 29420",
    "company": "D4W-Solutions",
    "name": "consignee",
    "email": "[email protected]",
    "phone": "+1 330-931-5863",
    "address_line1": "8800 Dorchester Road",
    "city": "North Charleston",
    "state": "South Carolina",
    "country": "United States",
    "postalCode": "29420",
    "countryCode": "US",
    "stateCode": "SC",
    "weight": 160,
    "weight_unit": "pound",
    "description": "Product : New321"
  },
  "from_details": {
    "pickup_window": {
      "start_at": "02:00:00",
      "end_at": "04:30:00",
      "closing_at": "10:30:00"
    },
    "company_name": "shipper",
    "contact_name": "shipper",
    "contact_no": "+1 330-899-5862",
    "contact_email": "[email protected]",
    "is_residential": false
  },
  "to_details": {
    "destination_window": {
      "start_at": "02:00:00",
      "end_at": "04:30:00",
      "closing_at": "10:30:00"
    },
    "company_name": "D4W-Solutions",
    "contact_name": "Nick",
    "contact_no": "+1 330-931-5863",
    "contact_email": "[email protected]",
    "is_residential": false
  },
  "packages": [
    {
      "weight": 1,
      "quantity": 1,
      "width": "6",
      "length": "3",
      "height": "1",
      "weight_unit": "pound",
      "dimension_unit": "inch",
      "description": "Test",
      "class": "175",
      "type": "Box",
      "stackable": false,
      "hazardous_materials": true,
      "hazardous_materials_un_na": "UN1203",
      "hazardous_materials_shipping_name": "Gasoline",
      "hazardous_materials_hazard_class": "3",
      "hazardous_materials_packaging_group": "I",
      "hazardous_materials_emergncy_name": "Test",
      "hazardous_materials_emergncy_phone": "+1 330-899-5862"
    }
  ],
  "type": "small_parcel",
  "pickup_date": "",
  "options": []
}

Code Examples

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import fetch from "node-fetch";

async function getProviders() {
  try {
    const response = await fetch("https://api.shipduo.com/api/shipments/provider-list", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer ",
      },
      body: JSON.stringify({
        // Your request body here
        {
  "shipment_from": {
    "address_line1": "285 Northeast Avenue",
    "city": "Tallmadge",
    "stateCode": "OH",
    "postalCode": "44278",
    "countryCode": "US"
  },
  "shipment_to": {
    "destination": "8800 Dorchester Road, North Charleston, South Carolina, United States - 29420",
    "company": "D4W-Solutions",
    "name": "consignee",
    "email": "[email protected]",
    "phone": "+1 330-931-5863",
    "address_line1": "8800 Dorchester Road",
    "city": "North Charleston",
    "state": "South Carolina",
    "country": "United States",
    "postalCode": "29420",
    "countryCode": "US",
    "stateCode": "SC",
    "weight": 160,
    "weight_unit": "pound",
    "description": "Product : New321"
  },
  "from_details": {
    "pickup_window": {
      "start_at": "02:00:00",
      "end_at": "04:30:00",
      "closing_at": "10:30:00"
    },
    "company_name": "shipper",
    "contact_name": "shipper",
    "contact_no": "+1 330-899-5862",
    "contact_email": "[email protected]",
    "is_residential": false
  },
  "to_details": {
    "destination_window": {
      "start_at": "02:00:00",
      "end_at": "04:30:00",
      "closing_at": "10:30:00"
    },
    "company_name": "D4W-Solutions",
    "contact_name": "Nick",
    "contact_no": "+1 330-931-5863",
    "contact_email": "[email protected]",
    "is_residential": false
  },
  "packages": [
    {
      "weight": 1,
      "quantity": 1,
      "width": "6",
      "length": "3",
      "height": "1",
      "weight_unit": "pound",
      "dimension_unit": "inch",
      "description": "Test",
      "class": "175",
      "type": "Box",
      "stackable": false,
      "hazardous_materials": true,
      "hazardous_materials_un_na": "UN1203",
      "hazardous_materials_shipping_name": "Gasoline",
      "hazardous_materials_hazard_class": "3",
      "hazardous_materials_packaging_group": "I",
      "hazardous_materials_emergncy_name": "Test",
      "hazardous_materials_emergncy_phone": "+1 330-899-5862"
    }
  ],
  "type": "small_parcel",
  "pickup_date": "",
  "options": []
}
      }),
    });

    if (!response.ok) {
      const errorData = await response.json();
      console.error("API Error:", {
        status: response.status,
        error: errorData.error || "Unknown error",
        message: errorData.message || "No error message provided",
        details: errorData.details || errorData.data || "No details available"
      });
      return;
    }

    const data = await response.json();
    console.log("Success:", data);
  } catch (error) {
    console.error("Network Error:", error);
  }
}

getProviders();

Response Examples

Small Parcel Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
  "status": true,
  "message": "Operation succeeded.",
  "data": {
    "type": "small_parcel",
    "total_providers": 2,
    "providers": [
      {
        "id": 7,
        "name": "UPS",
        "short_name": "UPS",
        "logo": "https://api.shipduo.com/asset/shipping/ups.png",
        "type": "small_parcel",
        "status": 1,
      },
      {
        "id": 8,
        "name": "USPS",
        "short_name": "USPS",
        "logo": "https://api.shipduo.com/asset/shipping/usps.png",
        "type": "small_parcel",
        "status": 1,
      }
    ],
    "fetch_rates_random_key": "af53da99-d8f1-4321-9099-74400b68f058"
  }
}

Response Format

Success Response Structure

ParameterTypeDescription
statusbooleanResponse status (true for success)
messagestringResponse message
dataobjectProvider list data

Response Data Object

ParameterTypeDescription
typestring/nullShipment type ("ltl" for LTL, null for Small Parcel)
total_providersnumberTotal number of available providers
providersarrayArray of provider objects
fetch_rates_random_keystringUnique key for subsequent rate fetching

Provider Object

ParameterTypeDescription
idnumberProvider unique identifier
namestringFull provider company name
short_namestringProvider short name/abbreviation
logostringURL to provider logo image
typestringProvider type ("small_parcel" or "ltl")
statusnumberProvider status (1 = active)
custom_own_credentialnumberCustom credentials flag
created_atstring/nullCreation timestamp
updated_atstring/nullLast update timestamp

Error Response

1
2
3
4
5
{
  "status": false,
  "message": "Error description here",
  "data": null
}

HTTP Status Codes

200OK - Successful provider list retrieval
400Bad Request - Invalid request parameters
401Unauthorized - Authentication failed
422Unprocessable Entity - Validation errors
500Internal Server Error - Server error

Common Providers

Small Parcel Providers
  • UPSUnited Parcel Service
  • USPSUnited States Postal Service
  • FedExFederal Express (when available)
  • DHLDHL Express (when available)
LTL Providers
  • SAIASAIA Motor Freight Lines Inc.
  • ABFABF Freight Systems Inc.
  • WARDWard Transport
  • OLD DominionOld Dominion Freight Lines Inc.
  • XPOXPO Logistics
  • ESTESEstes Express Lines

Important Notes

  • Shipment Type Detection: The system automatically determines available providers based on package weight, dimensions, and shipment characteristics.
  • Route Coverage: Providers are filtered based on their service coverage for the origin-destination route.
  • Fetch Rates Key: The fetch_rates_random_key in the response is required for subsequent rate fetching operations. Store this key for the next API call.
  • Provider Status: Only active providers (status = 1) are returned in the response.
  • Logo URLs: Provider logos are provided for UI display purposes and are hosted on the platform's CDN.
  • LTL Options: For LTL shipments, various service options can be specified to get providers that support specific requirements (liftgate, residential, hazmat, etc.).
  • Weight Thresholds:
    • Small Parcel: Typically for packages under 150 lbs
    • LTL: For freight over 150 lbs

Workflow

  1. Prepare complete shipment details including origin, destination, and package specifications
  2. Include any required service options for LTL shipments
  3. Call the provider list endpoint
  4. Review available providers and their capabilities
  5. Store the fetch_rates_random_key for the next step
  6. Use the provider information to fetch rates from selected carriers

Next Steps

After receiving the provider list, use the fetch_rates_random_key and selected provider IDs to call the rates API for specific pricing information.