The files
Each file is cut from the examples inside the OpenAPI document by the same build that publishes the schemas, so a payload here is never older than the contract. Figures are illustrative; a real answer carries the rates the carriers return at that moment.
| Operation | Request | Responses |
|---|---|---|
| getParcelQuote (POST /quote) | get-parcel-quote-request.json (described item; exact box) | get-parcel-quote-responses.json (200 priced; 200 not a parcel; 400; 422; 429) |
| createPaymentSession (POST /agent/checkout-session) | create-payment-session-request.json (from a quote_id; from a shipment) | create-payment-session-responses.json (200; 400; 422; 429) |
| getCheckoutStatus (GET /agent/checkout-session/{{session_id}}) | — (path parameter only) | get-checkout-status-responses.json (200 label_ready; 404; 429) |
| status (GET /status) | — | status-responses.json (200) |
The first call
curl -s https://quote-api.smklog.com/quote \
-H 'Content-Type: application/json' \
-d '{"product": "Yamaha FG800 acoustic guitar in a hard case",
"quantity": 1,
"from_postal_code": "07102",
"to_postal_code": "30303"}'
Read mode first, then rates[].amount (the checkout total) and rates[].retail_amount (the carrier’s counter price, where published). The repack line walks a full two-request example with the arithmetic; the playground runs this request from the browser.