Skip to main content

Pulse Pack error reference

Every error this API returns carries a code. Build your integration against the code and the HTTP status. Do not match on message: it is a human-readable sentence and its wording can change between releases.

{
"message": "Response not found.",
"code": "pack.response.not_found"
}

Where no code applies the response omits the key entirely rather than sending "code": null, so an integration that reads only message keeps working.

This page is generated from the error catalogue published on the deployed OpenAPI spec, so it cannot drift from what the API actually returns. 24 codes are listed.

400 Bad Request

Retryable? No. Fix the request first.

CodeMessageParameters
pack.request.invalid_gzip_bodyThe request body could not be decompressed. Check that it is valid gzip content before sending it with an 'X-Content-Encoding: gzip' header.none

402 Payment Required

Retryable? No. The subscription does not cover this action. Contact us to change your plan.

CodeMessageParameters
pack.subscription.expiredYour /pack subscription has expired. Payment required.none
pack.subscription.missingNo active /pack subscription. Payment required.none

403 Forbidden

Retryable? No. Fix the request first.

CodeMessageParameters
pack.auth.invalid_tokenInvalid JWT token.none
pack.request.foreign_resourceThe supplied {label} id belongs to another account.label

404 Not Found

Retryable? No. The resource does not exist.

CodeMessageParameters
pack.response.bin_not_foundCould not find bin {bin_uuid} on this response.bin_uuid
pack.response.none_foundNo responses found.none
pack.response.not_foundResponse not found.none
pack.response.request_not_foundCould not find the request for response {response_id}.response_id
pack.viz.bin_index_out_of_rangeBin index {bin_index} is out of range for this order.bin_index
pack.viz.order_index_out_of_rangeOrder index {order_index} is out of range for this response.order_index

422 Unprocessable Content

Retryable? No. Fix the request first.

CodeMessageParameters
pack.request.invalid_configurationThe request configuration is invalid: {reason}reason
pack.request.unknown_carrier_presetsUnknown carrier preset ids: {ids}. These carrier presets do not exist for your account.ids
pack.request.unknown_scenarioUnknown scenario '{scenario}'. Valid scenarios are: {valid}.scenario, valid
pack.request.unknown_warehouseUnknown warehouse code '{warehouse_code}'. This warehouse does not exist for your account.warehouse_code
pack.response.invalid_idThe supplied response id is not valid.none

429 Too Many Requests

Retryable? Yes, after a pause. This is a usage limit.

CodeMessageParameters
pack.limits.max_itemsThis request contains {count} items across all orders, which exceeds your limit of {limit}.count, limit
pack.limits.max_unique_binsThis request uses {count} unique bins, which exceeds your limit of {limit}.count, limit
pack.limits.pallet_packing_not_includedPallet packing is not included in your current plan.none

One of these is permanent rather than a rate limit: pack.limits.pallet_packing_not_included. Retrying it never succeeds.

500 Internal Server Error

Retryable? Yes, once, with backoff. Contact support if it persists.

CodeMessageParameters
pack.packing.async_start_failedCould not start packing. Please retry.none
pack.response.unreadableThe stored response could not be read. Please contact support if this continues.none
pack.subscription.check_failedSomething went wrong while checking your subscription. Please retry; contact support if this continues.none
pack.viz.upload_failedCould not generate the visualisation. Please retry.none

Codes that are not HTTP errors

These codes never appear as an HTTP error response. They are reported inside a successful response body, in the messages array, where a request was accepted but something went wrong while processing it. Check messages on a completed response as well as the HTTP status.

CodeMessage
pack.packing.failedPacking failed for this request.

Errors that do not come from the API

These responses are produced by the infrastructure in front of the API, before a request reaches the application or after it has already returned. They never carry a code, and their body is not in the shape described above. Do not assume code is always present.

StatusUsual causeWhat to do
413The request body exceeded the platform limit before reaching us.Send fewer items per request, or compress the body.
502The response was too large to return, or the function failed outright.Split the work across smaller requests. If it persists on a small request, contact support.

A 502 after a request that clearly succeeded usually means the result was too large to return in one response. That is the case the asynchronous flow exists for: submit the work, then fetch the result separately.

Validation errors

A malformed request body is rejected before it reaches an endpoint and returns a different shape: a detail list with one entry per problem. Each entry names the offending field in loc and the failure kind in type.

{
"detail": [
{"loc": ["body", "orders"], "msg": "Input should be a valid list", "type": "list_type"}
]
}