Pack App API
Ship packages from your warehouse management system's pack stations or stores with Shipium's Pack App API.
Get started
To use the Pack Application (App) API, you can follow the instructions on this page. The Shipium Pack App API assumes you're using one of the authentication mechanisms detailed in our authentication documentation.
Authentication for API CallsIn the cURL example on this page, the environment variable
AUTHSTRINGis used to handle authorization. The recipe below shows how to set it correctly for both API Key and OAuth users.
Using the Pack App API, you can:
General information about the Pack App within the Shipium platform can be found in the Pack App documentation. Guidance for using the Pack App within the Shipium Console to scan orders and print labels as well as search order details is included in the Pack Application (Pack App) documentation.
Create an order with the Pack App API
The endpoint for creating an order with the Pack App API is included in the table below.
| API type | API endpoint |
|---|---|
| POST | https://api.shipium.com/api/v1/packShip/order |
Example cURL call to create an order
This example shows a request to create an order.
curl --request POST \
--url https://api.shipium.com/api/v1/packShip/order \
--header 'accept: application/json' \
--header $AUTHSTRING \
--header 'content-type: application/json' \
--data 'INSERT REQUEST BODY FROM BELOW'Example request body to create an order
The following fields should be included in your JSON request.
{
"fulfillmentType": "customer",
"orderSource": "external",
"currencyCode": "USD",
"partnerOrderId": "partner-order:12345",
"associatedIdentifiers": [
"lpn-barcode:12345"
],
"tenantId": null,
"orderedDateTime": "2025-03-15T10:10:00.111111Z",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"hazmat": false,
"hazmatInfo": null,
"productTaxCode": null,
"nmfcCode": null,
"nmfcFreightClass": null,
"productId": "partner-product:12345",
"quantity": 3,
"productDetails": null
}
],
"shipFromAddress": null,
"originId": "<ORIGIN-ID/PARTNER-PROVIDED-ORIGIN-ID FROM PARTNER CONFIG IN SHIPIUM>",
"destinationAddress": {
"name": "Wile E. Coyote",
"phoneNumber": "9995551234",
"phoneNumberCountryCode": "+1",
"emailAddress": "[email protected]",
"company": "ACME",
"street1": "123 Main St.",
"street2": "Suite 42",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential",
"addressLineComponents": null
},
"shipOption": null,
"customsInfo": null,
"totalDeclaredValue": null,
"orderFulfillmentParameters": {
"thirdPartyBillingSetId": null,
"forceThirdPartyBilling": false,
"fulfillmentContext": "<FCTX-ID/PARTNER-PROVIDED-FCTX-ID FROM PARTNER CONFIG IN SHIPIUM>",
"fulfillmentContextId": null,
"carrierServiceMethodAllowList": [
"ups-ground-service-method",
"fedex-home-delivery-service-method"
],
"holdAtLocation": {
"holdAtLocationId": "MyHALLocation",
"useHoldAtLocation": true
},
"referenceIdentifier": "Order123",
"partnerReferenceIdentifier": "PartnerRef789",
"packagingType": null,
"totalWeight": null,
"splitOrder": false,
"deliveryParameters": {
"applyToSplits": false,
"businessDaysOfTransit": null,
"deliveryNote": null,
"deliverySignatureOption": "none",
"deliveryWindow": null,
"desiredDeliveryDate": "2025-04-15T20:00:00Z",
"desiredDeliveryDateOptions": null,
"lastMileDeliveryOptions": null,
"preferredCarrierDeliveryDateTime": null,
"saturdayDelivery": false
}
}
}Example response body for an order creation
{
"fulfillmentType": "customer",
"orderSource": "external",
"currencyCode": "USD",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"associatedIdentifiers": [
"lpn-barcode:12345"
],
"tenantId": null,
"orderedDateTime": "2025-03-15T10:10:00.111111Z",
"orderItemQuantities": [
{
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"hazmat": false,
"hazmatInfo": null,
"productTaxCode": null,
"nmfcCode": null,
"nmfcFreightClass": null,
"productId": "partner-product:12345",
"quantity": 3,
"productDetails": null
}
],
"shipFromAddress": null,
"originId": "<ORIGIN-ID/PARTNER-PROVIDED-ORIGIN-ID FROM PARTNER CONFIG IN SHIPIUM>",
"destinationAddress": {
"name": "Wile E. Coyote",
"phoneNumber": "9995551234",
"phoneNumberCountryCode": "+1",
"emailAddress": "[email protected]",
"company": "ACME",
"street1": "123 Main St.",
"street2": "Suite 42",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential",
"addressLineComponents": null
},
"shipOption": null,
"customsInfo": null,
"totalDeclaredValue": null,
"orderFulfillmentParameters": {
"thirdPartyBillingSetId": null,
"forceThirdPartyBilling": false,
"fulfillmentContext": "<FCTX-ID/PARTNER-PROVIDED-FCTX-ID FROM PARTNER CONFIG IN SHIPIUM>",
"fulfillmentContextId": null,
"carrierServiceMethodAllowList": [
"ups-ground-service-method",
"fedex-home-delivery-service-method"
],
"holdAtLocation": {
"holdAtLocationId": "MyHALLocation",
"useHoldAtLocation": true
},
"referenceIdentifier": "Order123",
"partnerReferenceIdentifier": "PartnerRef789",
"packagingType": null,
"totalWeight": null,
"splitOrder": false,
"deliveryParameters": {
"applyToSplits": false,
"businessDaysOfTransit": null,
"deliveryNote": null,
"deliverySignatureOption": "none",
"deliveryWindow": null,
"desiredDeliveryDate": "2025-04-15T20:00:00Z",
"desiredDeliveryDateOptions": null,
"lastMileDeliveryOptions": null,
"preferredCarrierDeliveryDateTime": null,
"saturdayDelivery": false
}
}
}Set delivery parameters at order creation
You can specify delivery preferences when creating an order using the deliveryParameters object within orderFulfillmentParameters. These settings are stored on the order and automatically applied when generating a label at pack/ship time. This allows packers and shippers to focus on packing and shipping without needing to specify delivery options at runtime.
Any equivalent parameters passed at pack/ship time will override the values stored in deliveryParameters.
Request and response fields for creating an order
The following tables provide required, conditional, and optional fields for calling the Pack App API to create an order. Optional fields such as those in customsInfo would only be required for international shipments. You can find additional support in the Pack App API Reference.
Required fields
Field | Details |
|---|---|
| Type: String (enumeration) |
| Type: String (enumeration) |
| Type: String (enumeration) |
| Type: String (date-time) |
| Type: Array of order item quantities |
| Type: String |
| Type: String |
| Type: Integer (int32) |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
Conditional fields
Field | Details |
|---|---|
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: Number (float) |
| Type: String (enumeration) |
| Type: String (enumeration) |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: String (enumeration) |
| Type: String |
| Type: String (enumeration) |
| Type: Number (float) |
| Type: Number (float) |
| Type: Number (float) |
| Type: Array |
Optional fields
Use with cautionUsing
carrierServiceMethodAllowListsignificantly limits shipping options during carrier selection. This may result in higher shipping costs or a "no eligible carriers" error if none of the specified methods meet the shipment requirements. Use this feature only when you need to enforce specific shipping methods. You can find more information in the Specify Carrier Service and Method documentation.
Field | Details |
|---|---|
| Type: String |
| Type: Array of strings |
| Type: String |
| Type: Boolean |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: Float |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String (local-date) |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: Float |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: Float |
| Type: Integer (int32) |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: Integer |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: Integer |
| Type: String (local-date) |
| Type: String (enumeration) |
| Type: String |
| Type: String (enumeration) |
| Type: Float |
| Type: String |
| Type: Boolean |
| Type: String |
| Type: Boolean |
| Type: Boolean |
| Type: String |
| Type: Array of strings |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: String |
| Type: String (enumeration) |
| Type: Number (float) |
| Type: String (enumeration) |
| Type: Number (float) |
| Type: Boolean |
| Type: Boolean |
| Type: Integer (int32) Description: Number of business days for transit |
| Type: String |
| Type: String |
| Type: Object |
| Type: String (date-time) |
| Type: Object |
| Type: Object |
| Type: String |
| Type: Boolean |
Response attributes
The response attributes for creating an order are defined in the following table. Response attributes with associated request field descriptions in the table above are not included here.
| Response attribute | Description |
|---|---|
fulfillmentType | Fulfillment methodology of the shipment |
orderSource | The source of this order whether it is from the Shipium system or externally created |
tenantId | Either the Shipium tenant ID or the tenant ID your organization configured in the Shipium system; when present, this is used to indicate the tenant associated with the shipment. |
shipiumOrderId | Identification use to represent the group of delivery estimates purchased |
partnerOrderId | The unique identifier representing this order |
orderedDateTime | The timestamp for when the customer ordered the product; the timestamp is an ISO 8601 timestamp. |
orderItemQuantities | A list of order items comprising the shipment |
orderItemQuantities.deliveryEstimateId | The delivery estimate ID associated with the product |
associatedIdentifiers | Associated identifiers that are indexed to identify this order; for example, this can be an LPN that is bound to the order. |
shipOption | A high-level shipping option shown to or selected by a customer |
originId | The origin to which the order is assigned |
shipFromAddress | The address of the location where the package is being shipped |
destinationAddress | The address of the location where the package is being delivered |
customsInfo | Customs information about the package for international shipping |
totalDeclaredValue | The total monetary amount of the declared value for the package |
orderFulfillmentParameters | These represent hints that correspond to Shipment Parameters that can be specified ahead of shipment creation on the order. These can be overridden at the time of shipment creation. |
deliveryParameters | Delivery settings stored on the order that are automatically applied at pack/ship label generation; these can be overridden by equivalent runtime parameters passed at the time of shipment creation. |
orderStatus | State of the order |
Submit an order
The endpoint for submitting an order for fulfillment with the Pack App API is included in the table below.
| API type | API endpoint |
|---|---|
| POST | /api/v1/packShip/order/{orderId}/submit |
Required path element. orderId (Replace with either Shipium's order identifier or your own, if provided when the order was created.)
Example cURL call to submit an order
This example shows a request to submit an order for standard fulfillment.
curl --request POST \
--url https://api.shipium.com/api/v1/packShip/order/4dc43fff-c3af-4d7b-8a18-e01f2b4cb312/submit \
--header 'accept: application/json' \
--header $AUTHSTRING \
--header 'content-type: application/json' \
--data 'INSERT REQUEST BODY FROM BELOW'Example request body to submit an order for a standard complete shipment
{
"generateLabel": true,
"packagingType": {
"packagingMaterial": "box",
"linearDimensions": {
"linearUnit": "in",
"length": 12.0,
"width": 10.0,
"height": 8.0
},
"packagingWeight": {
"weightUnit": "lb",
"weight": 0.5
}
},
"totalWeight": {
"weightUnit": "lb",
"weight": 3.2
},
"labelParameters": {
"labelFormats": ["pdf", "png"],
"includeLabelImagesInResponse": true,
"testMode": false,
"eligibleForManifest": true
},
"shipmentParameters": {
"currencyCode": "USD",
"shippedDateTime": "2025-01-15T10:00:00Z",
"desiredDeliveryDate": "2025-01-17T17:00:00Z"
},
"carrierSelectionOptions": {
"carrierServiceMethodAllowList": ["ups-ground-service-method", "fedex-ground-service-method"]
}
}Example response body for standard complete shipment order submit
{
"fulfillmentType": "customer",
"orderSource": "external",
"tenantId": "tenant-123",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderedDateTime": "2025-01-15T08:00:00.000Z",
"orderItemQuantities": [
{
"productId": "SKU-12345",
"quantity": 3
}
],
"associatedIdentifiers": [],
"destinationAddress": {
"name": "Wile E. Coyote",
"street1": "123 Main St.",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential"
},
"orderStatus": "complete",
"orderFulfillmentInfo": {
"shipments": [
{
"shipiumShipmentId": "ship-001-abc123",
"partnerShipmentId": null,
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"type": "complete",
"carrierTrackingId": "1Z999AA1234567890",
"carrier": "ups",
"carrierServiceMethodId": "ups-ground-service-method",
"orderItemQuantities": [
{
"productId": "SKU-12345",
"quantity": 3
}
]
}
],
"unfulfilledItems": []
}
}Example request body to submit a split order (runtime split)
{
"generateLabel": true,
"splitOrder": true,
"splitParameters": {
"reasonCode": "item_size",
"orderItemQuantities": [
{
"productId": "SKU-12345",
"quantity": 2
}
]
},
"packagingType": {
"packagingMaterial": "box",
"linearDimensions": {
"linearUnit": "in",
"length": 10.0,
"width": 8.0,
"height": 6.0
}
},
"totalWeight": {
"weightUnit": "lb",
"weight": 2.0
},
"labelParameters": {
"labelFormats": ["pdf"],
"includeLabelImagesInResponse": true,
"testMode": false
},
"shipmentParameters": {
"currencyCode": "USD"
}
}Example response body for runtime split order submit (first split)
{
"fulfillmentType": "customer",
"orderSource": "external",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderedDateTime": "2025-01-15T08:00:00.000Z",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 5
}
],
"destinationAddress": {
"name": "Wile E. Coyote",
"street1": "123 Main St.",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential"
},
"orderStatus": "partial_ship",
"orderFulfillmentInfo": {
"shipments": [
{
"shipiumShipmentId": "ship-002-def456",
"partnerShipmentId": null,
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"parametersReferenceId": "runtime-split-001",
"type": "split",
"carrierTrackingId": "1Z999AA1234567891",
"carrier": "UPS",
"carrierServiceMethodId": "ups-ground-service-method",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
}
],
"unfulfilledItems": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 3
}
]
}
}Example request body to submit a split order (pre-defined split reference)
{
"generateLabel": true,
"splitOrder": true,
"splitReferenceId": "split-001",
"packagingType": {
"packagingMaterial": "envelope",
"linearDimensions": {
"linearUnit": "in",
"length": 9.0,
"width": 6.0,
"height": 1.0
}
},
"totalWeight": {
"weightUnit": "lb",
"weight": 0.5
},
"labelParameters": {
"labelFormats": ["pdf", "zpl"],
"includeLabelImagesInResponse": false,
"testMode": false
},
"shipmentParameters": {
"currencyCode": "USD",
"saturdayDelivery": false
}
}Example response body for pre-defined split order submit (using reference ID)
{
"fulfillmentType": "customer",
"orderSource": "external",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderedDateTime": "2025-01-15T08:00:00.000Z",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 5
}
],
"destinationAddress": {
"name": "Wile E. Coyote",
"street1": "123 Main St.",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential"
},
"orderFulfillmentParameters": {
"splitOrder": true,
"splitParameters": [
{
"splitReferenceId": "split-001",
"reasonCode": "customer_request",
"fulfilled": true,
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
}
]
},
"orderStatus": "partial_ship",
"orderFulfillmentInfo": {
"shipments": [
{
"shipiumShipmentId": "ship-003-ghi789",
"partnerShipmentId": null,
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"parametersReferenceId": "split-001",
"type": "split",
"carrierTrackingId": "1Z999AA1234567892",
"carrier": "FedEx",
"carrierServiceMethodId": "fedex-ground-service-method",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
}
],
"unfulfilledItems": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 3
}
]
}
}Request and response fields for submitting an order
The following tables provide conditional and optional fields for calling the Pack App API to submit an order. You can find additional support in the Pack App API Reference.
Conditional fields
Field | Details |
|---|---|
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: Number |
| Type: Number |
| Type: Number |
| Type: String (enumeration) |
| Type: Number |
| Type: String (enumeration) |
| Type: Number (float) |
| Type: String |
| Type: Object |
| Type: String |
| Type: Integer (int32) |
Optional fields
Field | Details |
|---|---|
| Type: Boolean |
| Type: String (enumeration) |
| Type: String |
| Type: Array of strings |
| Type: Boolean |
| Type: Boolean |
| Type: Boolean |
| Type: String (date-time) |
| Type: String (date-time) |
| Type: Boolean |
| Type: String |
| Type: String |
| Type: String |
| Type: Array of strings |
| Type: Boolean |
| Type: String (enumeration) |
| Type: String |
Response attributes
The response attributes for submitting an order are defined in the following table. Response attributes with associated request field descriptions in the table above are not included here.
| Field | Description |
|---|---|
fulfillmentType | Fulfillment methodology of the shipment (customer, at_large, returns, hundredweight, reship, unknown) |
orderSource | Source of the order (shipium, external) |
tenantId | Either the Shipium tenant ID or the partner-provided tenant ID |
shipiumOrderId | The Shipium-generated unique identifier for the order |
partnerOrderId | Your organization's own unique identifier for the order |
orderedDateTime | Timestamp when the customer ordered the product (ISO-8601 format) |
orderItemQuantities | Array of all order items with quantities |
associatedIdentifiers | Associated identifiers indexed to identify this order (e.g., LPN); can be searched but not interchangeable with orderId |
destinationAddress | Shipping destination address information. |
orderStatus | Current state of the order (open, open_split, complete, complete_multiship, cancelled, partial_ship, error) |
orderFulfillmentParameters .splitParameters.fulfilled | When true, there has been a shipment generated for this set of order split parameters and the items referenced in the split parameters of the order are accounted for as shipping / shipped. |
orderFulfillmentInfo | Information about shipments fulfilling the order and remaining items |
orderFulfillmentInfo.shipments | Array of shipments generated to fulfill order items |
orderFulfillmentInfo.unfulfilledItems | Array of items remaining to be shipped |
Split an order
Split shipments functionality is integrated into the Pack App order submission process. To split shipments, you use the standard submit endpoint with additional split parameters. You can only create one split shipment per submit call. If you need to split an order into multiple shipments (e.g., 2 boxes), you'll need to make multiple calls to the submit endpoint with the different split configurations.
The endpoint for submitting a split shipment is the same as the standard order submission:
| API type | API endpoint |
|---|---|
| POST | https://api.shipium.com/api/v1/packShip/order/{orderId}/submit |
There are two ways to split an order: runtime splits and pre-defined splits.
Runtime splits
This workflow is used when you want to define the split at the time of submission.
1. Create an order
First, you'll create an order using a standard call to POST /api/v1/packShip/order.
2. Submit the first split (runtime)
Next, you'll submit the first split by calling POST /api/v1/packShip/order/{orderId}/submit and defining the split in the splitParameters object.
Example request body for runtime split
{
"generateLabel": true,
"splitOrder": true,
"splitParameters": {
"reasonCode": "item_size",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
},
"packagingType": {
"packagingMaterial": "box",
"linearDimensions": {
"linearUnit": "in",
"length": 10.0,
"width": 8.0,
"height": 6.0
}
},
"totalWeight": {
"weightUnit": "lb",
"weight": 2.0
},
"labelParameters": {
"labelFormats": [
"pdf"
],
"includeLabelImagesInResponse": true,
"testMode": false
},
"shipmentParameters": {
"currencyCode": "USD"
}
}Example response body for runtime split
{
"fulfillmentType": "customer",
"orderSource": "external",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderedDateTime": "2025-01-15T08:00:00.000Z",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 5
}
],
"destinationAddress": {
"name": "Wile E. Coyote",
"street1": "123 Main St.",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential"
},
"orderStatus": "partial_ship",
"orderFulfillmentInfo": {
"shipments": [
{
"shipiumShipmentId": "ship-002-def456",
"partnerShipmentId": null,
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"parametersReferenceId": "runtime-split-001",
"type": "split",
"carrierTrackingId": "1Z999AA1234567891",
"carrier": "UPS",
"carrierServiceMethodId": "ups-ground-service-method",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
}
],
"unfulfilledItems": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 3
}
]
}
}Pre-defined splits
This workflow is used when you want to define the splits on the order object ahead of time and then reference them during submission.
1. Create an order with pre-defined splits
First, you'll create an order by calling POST /api/v1/packShip/order, with the splitOrder flag set to true and define the splits in the splitParameters array.
Example request body for creating an order with pre-defined splits
{
"fulfillmentType": "customer",
"orderSource": "external",
"partnerOrderId": "partner-order:12345",
"orderedDateTime": "2025-03-15T10:10:00.111111Z",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 5
}
],
"destinationAddress": {
"name": "Wile E. Coyote",
"street1": "123 Main St.",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121"
},
"orderFulfillmentParameters": {
"splitOrder": true,
"splitParameters": [
{
"splitReferenceId": "split-A",
"reasonCode": "item_size",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
},
{
"splitReferenceId": "split-B",
"reasonCode": "item_size",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 3
}
]
}
]
}
}2. Submit a pre-defined split
Next, you'll submit one of the pre-defined splits by calling POST /api/v1/packShip/order/{orderId}/submit and referencing the splitReferenceId.
Example request body for submitting a pre-defined split
{
"generateLabel": true,
"splitOrder": true,
"splitReferenceId": "split-A",
"packagingType": {
"packagingMaterial": "box",
"linearDimensions": {
"linearUnit": "in",
"length": 10.0,
"width": 8.0,
"height": 6.0
}
},
"totalWeight": {
"weightUnit": "lb",
"weight": 2.0
},
"labelParameters": {
"labelFormats": [
"pdf"
],
"includeLabelImagesInResponse": true,
"testMode": false
}
}Example response body for submitting a pre-defined split
{
"fulfillmentType": "customer",
"orderSource": "external",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderedDateTime": "2025-01-15T08:00:00.000Z",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 5
}
],
"destinationAddress": {
"name": "Wile E. Coyote",
"street1": "123 Main St.",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential"
},
"orderFulfillmentParameters": {
"splitOrder": true,
"splitParameters": [
{
"splitReferenceId": "split-A",
"reasonCode": "item_size",
"fulfilled": true,
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
},
{
"splitReferenceId": "split-B",
"reasonCode": "item_size",
"fulfilled": false,
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 3
}
]
}
]
},
"orderStatus": "partial_ship",
"orderFulfillmentInfo": {
"shipments": [
{
"shipiumShipmentId": "ship-003-ghi789",
"partnerShipmentId": null,
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"parametersReferenceId": "split-A",
"type": "split",
"carrierTrackingId": "1Z999AA1234567892",
"carrier": "FedEx",
"carrierServiceMethodId": "fedex-ground-service-method",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 2
}
]
}
],
"unfulfilledItems": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 3
}
]
}
}How to submit remaining items for split shipments
After you have created one or more split shipments, you can submit the remaining items of the order in a final shipment. To do this, you make a standard call to the POST /api/v1/packShip/order/{orderId}/submit endpoint without including the splitOrder, splitReferenceId, or splitParameters fields. This will create a final shipment containing all remaining unfulfilled items from the order.
Example request body to submit remaining items
{
"generateLabel": true,
"packagingType": {
"packagingMaterial": "box",
"linearDimensions": {
"linearUnit": "in",
"length": 12.0,
"width": 10.0,
"height": 8.0
}
},
"totalWeight": {
"weightUnit": "lb",
"weight": 1.2
},
"labelParameters": {
"labelFormats": [
"pdf"
],
"includeLabelImagesInResponse": true,
"testMode": false
},
"shipmentParameters": {
"currencyCode": "USD"
}
}Example response body for submitting remaining items
{
"fulfillmentType": "customer",
"orderSource": "external",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderedDateTime": "2025-01-15T08:00:00.000Z",
"orderItemQuantities": [
{
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"productId": "SKU-12345",
"quantity": 5
}
],
"destinationAddress": {
"name": "Wile E. Coyote",
"street1": "123 Main St.",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential"
},
"orderStatus": "complete_multiship",
"orderFulfillmentInfo": {
"shipments": [
{
"shipiumShipmentId": "ship-001-abc123",
"partnerShipmentId": null,
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"carrierTrackingId": "1Z999AA10123456784",
"carrierName": "UPS",
"carrierServiceMethodName": "UPS Ground",
"shipmentStatus": "label_created",
"labelInfo": {
"shipiumLabelId": "label-001-xyz789",
"labelFormats": ["pdf"],
"labelImages": [
{
"labelFormat": "pdf",
"labelBase64": "<BASE64_ENCODED_LABEL_DATA>"
}
]
},
"itemsShipped": [
{
"productId": "SKU-12345",
"quantity": 3
}
]
},
{
"shipiumShipmentId": "ship-002-def456",
"partnerShipmentId": null,
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"carrierTrackingId": "1Z999AA10123456785",
"carrierName": "UPS",
"carrierServiceMethodName": "UPS Ground",
"shipmentStatus": "label_created",
"labelInfo": {
"shipiumLabelId": "label-002-xyz790",
"labelFormats": ["pdf"],
"labelImages": [
{
"labelFormat": "pdf",
"labelBase64": "<BASE64_ENCODED_LABEL_DATA>"
}
]
},
"itemsShipped": [
{
"productId": "SKU-12345",
"quantity": 2
}
]
}
]
}
}Request and response fields for split shipments
The following tables provide required and conditional fields for split shipment functionality added to the standard submit request.
Required fields
Field | Details |
|---|---|
| Type: Boolean |
Conditional fields
Field | Details |
|---|---|
| Type: String |
| Type: Object |
| Type: String (enumeration) |
| Type: Array of item quantity objects |
| Type: String |
| Type: String |
| Type: Number |
Response attributes
The response includes standard shipment fields plus these split-specific attributes.
| Attribute | Description |
|---|---|
type | Will be split for split shipments |
referenceId | The split reference ID if one was used |
shipiumOrderId | The original order ID that was split |
orderItemQuantities | Items included in this specific split shipment |
Tracking split orders
When you retrieve an order (Get an Order) that has been split using GET /api/v1/packShip/order/{orderId}, the response will include:
fulfillmentInfo.shipments. An array of shipment objects that have been created for the orderfulfillmentInfo.unfulfilledItems. An array of items that are not yet fulfilled for a split order
This allows you to track the progress of each split and identify any remaining unfulfilled items.
Search an order
The search endpoint returns results in pages. Order search results will contain the following response headers with data on how to access the previous and next pages in the total body of results based on the count (page size) request parameter you pass in your API call.
Response header element. X-Page-Next represents the start of the next page of order search results. To access the next page, you'll call the Order Search API again with the value of this field in the anchor request parameter. If this response header is null or missing, it means that this is the last page of the order search results.
Response header element. X-Page-Previous represents the start of the previous page of order search results. To access the previous page, you'll call the Order Search API again with the value of this field in the anchor request parameters. If this response header is null or missing, it means that this is the first page of the order search results.
Response header element. X-Total-Count represents the total number of orders matching the request parameters sent in the order search request.
The endpoint for searching an order with the Pack App API is included in the table below.
| API type | API endpoint |
|---|---|
| POST | https://api.shipium.com/api/v1/packShip/order/search |
Example cURL call to search an order
This example shows a request to search an order.
curl --request GET \
--location "https://api.shipium.com/api/v1/packShip/order/search?associatedIdentifiers=lpn-barcode%3A12345&anchor=0&count=50" \
--header 'Accept: application/json' \
--header $AUTHSTRINGExample response body for an order search
[
{
"fulfillmentType": "customer",
"orderSource": "external",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"associatedIdentifiers": [
"lpn-barcode:12345"
],
"tenantId": null,
"orderedDateTime": "2025-03-15T10:10:00.111111Z",
"orderItemQuantities": [
{
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"hazmat": false,
"hazmatInfo": null,
"productTaxCode": null,
"nmfcCode": null,
"nmfcFreightClass": null,
"productId": "partner-product:12345",
"quantity": 3,
"productDetails": null
}
],
"shipFromAddress": null,
"originId": "<ORIGIN-ID/PARTNER-PROVIDED-ORIGIN-ID FROM PARTNER CONFIG IN SHIPIUM>",
"destinationAddress": {
"name": "Wile E. Coyote",
"phoneNumber": "9995551234",
"phoneNumberCountryCode": "+1",
"emailAddress": "[email protected]",
"company": "ACME",
"street1": "123 Main St.",
"street2": "Suite 42",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential",
"addressLineComponents": null
},
"shipOption": null,
"customsInfo": null,
"totalDeclaredValue": null,
"orderFulfillmentParameters": {
"saturdayDelivery": false,
"thirdPartyBillingSetId": null,
"forceThirdPartyBilling": false,
"fulfillmentContext": "<FCTX-ID/PARTNER-PROVIDED-FCTX-ID FROM PARTNER CONFIG IN SHIPIUM>",
"fulfillmentContextId": null,
"packagingType": null,
"totalWeight": null
}
}
]Request and response fields for searching an order
The following tables provides optional fields for calling the Pack App API to search an order. You can find additional support in the Pack App API Reference.
Optional fields
Field | Details |
|---|---|
| Type: String |
| Type: String |
| Type: String (date-time) |
| Type: String (date-time) |
| Type: String (enumeration) |
| Type: String |
| Type: Long |
Response attributes
The response attributes for searching an order are defined in the following table. Some response attributes are associated with the request fields described in the request fields table for calling the Pack App API to create an order. Those attributes are not listed here.
| Response attribute | Description |
|---|---|
fulfillmentType | Fulfillment methodology of the shipment |
orderSource | The source of this order whether it is from the Shipium system or externally created |
tenantId | Either the Shipium tenant ID or the tenant ID your organization configured in the Shipium system; when present, this is used to indicate the tenant associated with the shipment. |
shipiumOrderId | Identification use to represent the group of delivery estimates purchased |
partnerOrderId | The unique identifier representing this order |
orderedDateTime | The timestamp for when the customer ordered the product; the timestamp is an ISO 8601 timestamp. |
orderItemQuantities | A list of order items comprising the shipment |
orderItemQuantities.deliveryEstimateId | The delivery estimate ID associated with the product |
associatedIdentifiers | Associated identifiers that are indexed to identify this order; for example, this can be an LPN that is bound to the order. |
shipOption | A high-level shipping option shown to or selected by a customer |
originId | The origin to which the order is assigned |
shipFromAddress | The address of the location where the package is being shipped |
destinationAddress | The address of the location where the package is being delivered |
customsInfo | Customs information about the package for international shipping |
totalDeclaredValue | The total monetary amount of the declared value for the package |
orderFulfillmentParameters | These represent hints that correspond to Shipment Parameters that can be specified ahead of shipment creation on the order. These can be overridden at the time of shipment creation. |
orderStatus | State of the order |
Get an order
The endpoint for getting an order with the Pack App API is included in the table below.
| API type | API endpoint |
|---|---|
| POST | https://api.shipium.com/api/v1/packShip/order/{orderId} |
Required path element. orderId or partnerOrderId (Replace with either Shipium’s order identifier or your own, if provided when the order was created.)
Example cURL call to get an order
This example shows a request to get an order. You'll call the api/v1/packShip/order endpoint and append your own order number to the call, like the one shown in the example.
curl --request GET \
--location "https://api.shipium.com/api/v1/packShip/order/4dc43fff-c3af-4d7b-8a18-e01f2b4cb312" \
--header 'Accept: application/json' \
--header $AUTHSTRINGExample response body for getting an order
{
"fulfillmentType": "customer",
"orderSource": "external",
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"associatedIdentifiers": [
"lpn-barcode:12345"
],
"tenantId": null,
"orderedDateTime": "2025-03-15T10:10:00.111111Z",
"orderItemQuantities": [
{
"shipiumOrderId": "4dc43fff-c3af-4d7b-8a18-e01f2b4cb312",
"partnerOrderId": "partner-order:12345",
"orderItemReferenceIdentifier": "partner-order:12334_item:1",
"hazmat": false,
"hazmatInfo": null,
"productTaxCode": null,
"nmfcCode": null,
"nmfcFreightClass": null,
"productId": "partner-product:12345",
"quantity": 3,
"productDetails": null
}
],
"shipFromAddress": null,
"originId": "<ORIGIN-ID/PARTNER-PROVIDED-ORIGIN-ID FROM PARTNER CONFIG IN SHIPIUM>",
"destinationAddress": {
"name": "Wile E. Coyote",
"phoneNumber": "9995551234",
"phoneNumberCountryCode": "+1",
"emailAddress": "[email protected]",
"company": "ACME",
"street1": "123 Main St.",
"street2": "Suite 42",
"city": "Albuquerque",
"state": "NM",
"countryCode": "US",
"postalCode": "87121",
"addressType": "residential",
"addressLineComponents": null
},
"shipOption": null,
"customsInfo": null,
"totalDeclaredValue": null,
"orderFulfillmentParameters": {
"saturdayDelivery": false,
"thirdPartyBillingSetId": null,
"forceThirdPartyBilling": false,
"fulfillmentContext": "<FCTX-ID/PARTNER-PROVIDED-FCTX-ID FROM PARTNER CONFIG IN SHIPIUM>",
"fulfillmentContextId": null,
"packagingType": null,
"totalWeight": null
},
"fulfillmentInfo": {
"shipments": [],
"unfulfilledItems": []
}Response attributes for getting an order
The response attributes for getting an order are defined in the following table. Some response attributes are associated with the request fields described in the request fields table for calling the Pack App API to create an order. Those attributes are not listed here.
| Response attribute | Description |
|---|---|
fulfillmentType | Fulfillment methodology of the shipment |
orderSource | The source of this order whether it is from the Shipium system or externally created |
tenantId | Either the Shipium tenant ID or the tenant ID your organization configured in the Shipium system; when present, this is used to indicate the tenant associated with the shipment. |
shipiumOrderId | Identification use to represent the group of delivery estimates purchased |
partnerOrderId | The unique identifier representing this order |
orderedDateTime | The timestamp for when the customer ordered the product; the timestamp is an ISO 8601 timestamp. |
orderItemQuantities | A list of order items comprising the shipment |
orderItemQuantities.deliveryEstimateId | The delivery estimate ID associated with the product |
associatedIdentifiers | Associated identifiers that are indexed to identify this order; for example, this can be an LPN that is bound to the order. |
shipOption | A high-level shipping option shown to or selected by a customer |
originId | The origin to which the order is assigned |
shipFromAddress | The address of the location where the package is being shipped |
destinationAddress | The address of the location where the package is being delivered |
customsInfo | Customs information about the package for international shipping |
totalDeclaredValue | The total monetary amount of the declared value for the package |
orderFulfillmentParameters | These represent hints that correspond to Shipment Parameters that can be specified ahead of shipment creation on the order. These can be overridden at the time of shipment creation. |
orderStatus | State of the order |
fulfillmentInfo.shipments | An array of shipment objects that have been created for the order |
fulfillmentInfo.unfulfilledItems | An array of items that are not yet fulfilled for a split order |
Resources
Your Shipium team member is available to help along the way. However, you might find these resources helpful:
Updated 2 days ago
