Price a parcel
This form sends the request below to the production API from your browser, the same call an integration makes. Every quote spends a live carrier rating and counts against the public bucket (about 80 an hour per client), so price a shipment, not every variation of one.
Request
POST https://quote-api.smklog.com/quote
Content-Type: application/json
{"product": "Yamaha FG800 acoustic guitar in a hard case",
"quantity": 1,
"from_postal_code": "07102",
"to_postal_code": "30303"}
Rates
The rate table appears here after a priced answer. All four measurements together price an exact box; leave them empty and the box is estimated from the description.
Raw answer
(nothing yet)
Reading the answer
mode says what happened: parcel_label_ready carries up to five rates; not_a_parcel, multiple_boxes, parcel_restricted, review, international_unsupported_online and parcel_rates_unavailable carry none and say why. amount is the checkout total a customer pays, SMKlog fee inside; retail_amount is the carrier’s own counter price where one is published. package is the box the price was computed for, with its confidence and assumptions; a wrong assumption is corrected by the human before paying, or by sending exact measurements here.
A refusal is the same shape everywhere: {"error": "<code>", "message": "<sentence>"}, with a missing array when fields are absent. product_not_recognized means the text named no shippable thing (an address, a question); name the item itself. The full contract, with examples on every operation, is the OpenAPI document; the schemas it is built from are on the portal.