Part 2: price your own carton at two sizes
The table above is a direction, not your price. Your lane, your item, your two candidate boxes. Two requests answer it, and this is the whole request.
POST https://quote-api.smklog.com/quote
Content-Type: application/json
User-Agent: your-tool-name/1.0
{"product": "packed carton of ceramic dinner plates",
"quantity": 1,
"from_postal_code": "07102",
"to_postal_code": "98101",
"to_country_code": "US",
"length_cm": 60.96,
"width_cm": 45.72,
"height_cm": 45.72,
"weight_kg": 5.443,
"package_source": "manual"}
Send all four of length_cm, width_cm, height_cm and weight_kg. Those four are what decides it, and they count only as a complete set: leave one out and all four are ignored, the carton gets worked out from your words instead, and the request starts spending from a much smaller budget. With the set present, the packed-box estimate is skipped outright and neither call touches that budget at all. package_source set to manual is documented alongside them and is worth sending for clarity, but the four fields alone do the work.
Then send the same body again with the second carton's dimensions. Two notes before you read the answers. Rates do not come back cheapest first — the default order weighs speed against price — so sort on the amount yourself before you call anything cheapest. And print service_label, never the raw service field, which is an internal code no carrier sells anything under.
One 12 lb item priced in two cartons, 07102 to 98101, exact dimensions on both calls, quoted 2026-09-02.
| Carton | Cheapest back | Carrier cost inside it | Service | Transit |
| 24 × 18 × 18 in | $77.22 | $65.44 | UPS Ground | 8 business days |
| 16 × 16 × 16 in | $50.11 | $42.46 | FedEx Ground Economy | 11 business days |
| 16 × 16 × 16 in | $51.59 | $43.72 | UPS Ground, the same service as row one | 8 business days |
Cheapest to cheapest is $27.11. Same carrier and same service both times is $25.63. Publish both, in that order, or somebody will correctly point out that the larger figure came partly from changing carriers rather than from changing the box.
Both of those are checkout prices with our fee inside them, and that fee is a share of the carrier cost, so it shrinks as the box does. Underneath, the carrier cost went $65.44 to $42.46: $22.98 of the $27.11 is the carrier charging less, and the rest is our own fee getting smaller. On the same-service pair the carrier cost went $65.44 to $43.72, so that one nets $21.72. If you are planning against your own carrier account, those are your figures, and both are smaller than the checkout numbers above them. Note also that the same box on this same lane was $73.30 in the 2026-08-11 index and $77.22 here three weeks later; nothing is wrong with either number, and that drift is exactly what a monthly recapture is for.
One difference worth naming before you compare this against Part 1. Here a single 12 lb load rides through both cartons, which is what a repack actually is. In the index basket each carton is loaded to its own weight, so the 16 × 16 × 16 row there carries 20 lb rather than 12. Same two boxes, two different questions, and the cross-row check above is exactly what makes those index rows safe to subtract anyway.
Where the repack is the wrong lever
Now hold the repack up against the carrier choice, using the open file rather than a live call so you can check this one yourself. On that same 24 × 18 × 18 carton, on this same Newark-to-Seattle lane, the 2026-08-11 capture has the cheapest service at $73.30 and the dearest at $125.51: a $52.21 spread on one box, one lane, one day. That is wider than the $25.63 the repack saved and wider than the $22.98 it took off the carrier cost. On a long carton the carrier you pick moves more money than any amount of tape, and it moves more money than what we charge. Choose the service first. Shrink the box second.
The script
The whole recipe runs as one file, repack.py, Python standard library only, nothing to install. Part 1 reads the open data file and prints the table above. Part 3 runs the check and prints both a pair it accepts and a pair it refuses. Part 2 sends the two requests, and --dry-run prints both bodies without sending anything.
Get it: repack.py — one file, no dependencies, CC BY 4.0 like the data. Save it wherever you run things and the three commands below work exactly as printed.
python3 repack.py
python3 repack.py --box 24x18x18 --into 16x16x16 --weight 12 --to 98101
python3 repack.py --box 24x18x18 --into 16x16x16 --weight 12 --to 98101 --dry-run
Every number it prints is derived in front of you, and the refused pair is printed on purpose: a tool that only ever agrees with you is not a check.