Skip to main content

Pulse Pick 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. 28 codes are listed.

400 Bad Request

Retryable? No. Fix the request first.

CodeMessageParameters
common.invalid_date_formatInvalid date format for {name}. Use ISO format 'YYYY-MM-DDTHH:MM:SS'.name
history.invalid_cursorInvalid cursor.none
integration.api_config_not_foundCould not resolve API configuration '{config_id}'.config_id
kpi.invalid_frequencyInvalid frequency. Use 'day', 'week', 'month' or 'hour'.none
optimize.invalid_request_idInvalid request id.none
request.invalid_gzipWe couldn't decompress the request body. Make sure it's valid gzip content and try again.none
warehouse.version_not_readyWarehouse version is not ready. Please process it first.none

401 Unauthorized

Retryable? No. Check your API key.

CodeMessageParameters
auth.not_authenticatedNot authenticated.none

402 Payment Required

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

CodeMessageParameters
subscription.not_subscribedYour subscription does not cover this action.none

404 Not Found

Retryable? No. The resource does not exist.

CodeMessageParameters
optimize.postprocessing_step_not_foundPost-processing step not found with function_id '{function_id}'.function_id
optimize.preprocessing_step_not_foundPre-processing step not found with function_id '{function_id}'.function_id
optimize.request_not_foundNo optimization request found for id '{request_id}'.request_id
warehouse.no_production_versionNo production version found for warehouse '{warehouse_name}'. Mark a version as production first.warehouse_name
warehouse.not_found_by_nameNo warehouse found with name '{warehouse_name}'. Check the warehouse_name matches exactly.warehouse_name
warehouse.version_not_found_for_siteWarehouse version not found for site '{site_name}'.site_name

422 Unprocessable Content

Retryable? No. Fix the request first.

CodeMessageParameters
request.invalid_bodyThe request body is invalid.none
validation.bool_typeField '{field}' must be true or false.field
validation.duplicate_order_pick_idsProvided (order ID, pick ID) combinations are not unique.none
validation.duplicate_pick_idsProvided pick_id's are not unique.none
validation.float_typeField '{field}' must be a number.field
validation.int_typeField '{field}' must be a whole number.field
validation.invalidField '{field}' is invalid ({type}).field, type
validation.missingField '{field}' is required.field
validation.string_typeField '{field}' must be text.field
validation.too_shortField '{field}' must not be empty.field

429 Too Many Requests

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

CodeMessageParameters
algo.task_limit_exceededYou have reached the limit of {limit} concurrent {algo_task_type} tasks ({current} running). Please wait for existing tasks to finish.algo_task_type, current, limit

500 Internal Server Error

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

CodeMessageParameters
optimize.failedOptimization task failed.none

202 Accepted, still processing

Retryable? Yes. The result is not ready yet; poll again or use a webhook.

CodeMessageParameters
optimize.still_processingOptimization still in progress.none

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.
504The request took longer than the gateway allows (currently 120 seconds).Use the asynchronous flow rather than waiting on a synchronous response.
429Platform-level throttling, distinct from the account limits listed above.Back off and retry. If it recurs at normal volume, 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"}
]
}