Add cartonization in front of EasyPost.
EasyPost rate-shops the parcel you give it - CartonPilot decides what that parcel should be. One API call picks the optimal box mix per order, then you create EasyPost shipments from those parcels and buy the best rate as usual.
How CartonPilot and EasyPost fit together
EasyPost answers “which carrier and service for this parcel?” CartonPilot answers the upstream question: “which box(es) should this order ship in?”
1. Order comes in
POST the order's items and your box lineup to CartonPilot's /api/v1/shipping-optimize - dimensions, weights, quantities, and available cartons (or a saved SKU catalog).
2. Get the optimal box mix
The response gives you the box choice per shipment with exact dimensions and actual, dimensional, and billable weight - everything an EasyPost parcel needs.
3. Rate-shop with EasyPost
Create EasyPost shipments from those parcels and buy the best rate. Labels, tracking, and address verification stay exactly where they are today.
curl -X POST https://cartonpilot.com/api/v1/shipping-optimize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"boxes": [
{ "id": "S", "dimensions": { "length": 10, "width": 8, "height": 6 }, "cost": 0.61 },
{ "id": "M", "dimensions": { "length": 15, "width": 12, "height": 10 }, "cost": 0.94 }
],
"items": [
{ "id": "MUG-01", "weight": 1.2, "quantity": 4,
"dimensions": { "length": 5, "width": 4, "height": 4 } }
],
"options": { "objective": "lowest-billable-weight", "dimDivisor": 139 }
}'
# Response (per shipment): box id + dimensions, item placements,
# and billing { actualWeight, dimWeight, billableWeight }
# then create an EasyPost shipment from shipment.box.dimensionsWhat you gain before the first rate call
Fewer parcels to rate-shop
Optimized cartonization shipped 44% fewer parcels in our published, reproducible benchmark - fewer EasyPost shipments to create and fewer labels to buy per order.
Lower billable weight going in
Pass your carrier's DIM divisor via options.dimDivisor and use the lowest-billable-weight objective, so the parcels you hand EasyPost are already the cheapest ones to rate.
Box spend visibility
Every pack plan includes the cost per carton (and box tare weight), so you see packaging spend alongside the carrier rates EasyPost returns.
See what better boxes would save before you wire anything up.
Paste an order (or a CSV) and the production engine shows parcels saved, box spend, and estimated FedEx/UPS Ground cost - right here, before your next EasyPost rate call.
Your order
| Item | L | W | H | lb | Qty | |
|---|---|---|---|---|---|---|
Audited against a standard 7-box corrugated line-up using a first-fit baseline vs. cartonpilot-ultra.
Add your items and run the audit to see how many parcels and how much box spend CartonPilot can cut.
EasyPost cartonization FAQ
Does EasyPost do cartonization?
EasyPost's shipment API takes predefined parcel dimensions - length, width, height, and weight that you supply - and returns rates and labels across carriers. Cartonization is the step before that: deciding which box (or boxes) an order should ship in. That upstream step is what CartonPilot does, so the two are complementary rather than overlapping.
Do I have to replace EasyPost?
No. CartonPilot sits upstream of EasyPost, not in place of it. Keep EasyPost for what it's great at - multi-carrier rate shopping, label purchase, tracking, and address verification. CartonPilot only handles the box-selection step, then hands the resulting parcel dimensions to your existing EasyPost integration.
What does the integration look like?
Two API calls per order. First, POST the order's items and your box lineup to CartonPilot's /api/v1/shipping-optimize; the response is an optimal box mix with dimensions and billable weight per shipment. Then create an EasyPost shipment from each returned box's dimensions and weight and buy the best rate as usual.
How much latency does the extra call add?
Very little. The solver computes a pack plan in under 1 ms (median) per order, and API responses run about 20 ms p50 / 60 ms p95 measured server-side - negligible next to a rate-shop call. It fits inline in a checkout or fulfillment flow without a caching layer.
Is there a free tier to test the integration?
Yes. The Free plan includes 1,000 items/month with no credit card, which covers full integration testing against your EasyPost sandbox. You can also run the free packing audit on this page with no signup at all.
1,000 items/month free - no credit card. Or read the API docs.
EasyPost is a trademark of EasyPost, Inc. CartonPilot is not affiliated with or endorsed by EasyPost.