Skip to main content

Error handling

How Shoplazza CLI reports failures, and how to handle them in scripts and agents.

Success and error envelopes

On success, data goes to stdout as a JSON envelope:

json
{ "ok": true, "action": "products.list", "data": { } }

On failure, an error envelope goes to stderr:

json
{ "error": { "type": "api", "message": "Product not found", "hint": "Check the product ID and try again" }, "request_id": "req_abc123" }

Always read the hint — it tells you the next action. Keep the request_id for support. See Error format for the full structure.

Exit codes

Branch on the exit code rather than parsing text:

CodeTypeTypical fix
0Success
1API errorInspect the response body / request_id
2Validation errorFix flags or input JSON
3Authentication errorshoplazza auth login
4Network errorCheck connectivity, retry
5Internal errorReport a bug
shell
shoplazza products list
case $? in
0) echo "ok" ;;
3) shoplazza auth login --store-domain my-store.myshoplazza.com --domain products ;;
4) echo "network — retrying"; sleep 2; shoplazza products list ;;
*) echo "failed (code $?)" ;;
esac

See the full table in Exit codes.

Preview before writing

For any write, preview the request with --dry-run before executing:

shell
shoplazza discounts +percent-code --target order --percent 20 --code SAVE20 --dry-run

Retries

Retry only transient failures (network, 4; some 1 rate-limit responses). Do not blindly retry validation (2) or auth (3) errors — fix the cause first. In CI, cap retries and back off.

See also