Rate Errors
Rate or carrier availability can depend on Shipment details, Account, sub-account, and environment configuration, and provider availability — not on the Order's status (see Get Shipping Rates).
Verified status codes
| Situation | Status |
|---|---|
| Shipment does not exist for your account | 404 |
| Invalid request | 400 |
| Missing or no-longer-usable bearer token | 401 |
| Shipment exists but lacks the address or parcel data rating needs | 422 |
| Every carrier attempt failed because the carrier is temporarily unavailable | 503 |
Whole-request versus per-carrier failure
A 200 response can still carry partial failure information: carrierResponses
reports one entry per carrier Mailhub attempted, each with its own
success/errorCode/errorMessage — one carrier can fail while another
still returns usable Rates in the same response. See
Get Shipping Rates for the
verified response shape.
Recover safely
Inspect the Shipment identifier, address, and parcel data before trying
again — not the Order's status, which has no effect here. Correct client
data where needed. A temporary provider problem visible in carrierResponses
can be handled with an application-owned bounded reissue policy; the API does
not define retry behavior. A 503 says the same thing about the request as a
whole: nothing in the request is wrong, so correcting it changes nothing —
only retrying later can. No rate-quote
time-to-live is part of the current public contract — request fresh Rates
rather than assuming a specific expiry window.