Skip to main content
Errors use standard HTTP status codes with a JSON body.
400 Bad Request
Validation error
The body failed validation — e.g. missing customerIds, empty items, or an unresolvable postcode.
{ "statusCode": 400, "message": ["general.customerIds should not be empty"], "error": "Bad Request" }
401 Unauthorized
Auth failed
The x-api-key header is missing or invalid. Ensure you’re sending the full key, not the dzk_live_… prefix shown in the portal.
{ "message": "Invalid API key" }
403 Forbidden
Customer not in your org
One or more customerIds don’t belong to your organisation. The whole request is rejected — no partial results.
{ "statusCode": 403, "message": "One or more customers do not belong to this organisation", "error": "Forbidden" }
404 Not Found
Unknown quote id
GET /v1/org/quote/getQuote/{quoteId} — no quote with that id.
{ "statusCode": 404, "message": "Quote not found", "error": "Not Found" }
429 Too Many Requests
Rate limited
You exceeded your per-minute limit. Honour the Retry-After header.
{ "message": "Rate limit exceeded", "limit": 60, "retryAfterSeconds": 23 }
See Rate limits.
An empty quotes array is not an error — it means nothing matched (e.g. filters excluded everything, or no rate applies to the lane). Check noQuoteMessage.