cURL
Every example uses a fake key (epos_dev_sk_example_not_real) and fake IDs against the
Development API. Replace both with your own before running these for real - see
Quickstart.
List products
Section titled “List products”curl "https://dev-api.theprioryshop.co.uk/v1/catalog/products?pageSize=20" \ -H "Authorization: Bearer epos_dev_sk_example_not_real"Get a single product
Section titled “Get a single product”curl "https://dev-api.theprioryshop.co.uk/v1/catalog/products/clx1product000001" \ -H "Authorization: Bearer epos_dev_sk_example_not_real"List categories
Section titled “List categories”curl "https://dev-api.theprioryshop.co.uk/v1/catalog/categories" \ -H "Authorization: Bearer epos_dev_sk_example_not_real"List promotions
Section titled “List promotions”curl "https://dev-api.theprioryshop.co.uk/v1/catalog/promotions" \ -H "Authorization: Bearer epos_dev_sk_example_not_real"List inventory stock
Section titled “List inventory stock”curl "https://dev-api.theprioryshop.co.uk/v1/inventory/stock?storeId=clx1store0000001" \ -H "Authorization: Bearer epos_dev_sk_example_not_real"Handle an error
Section titled “Handle an error”response=$(curl -s -w "\n%{http_code}" "https://dev-api.theprioryshop.co.uk/v1/catalog/products" \ -H "Authorization: Bearer epos_dev_sk_example_not_real")status=$(echo "$response" | tail -n1)body=$(echo "$response" | sed '$d')
if [ "$status" -ge 400 ]; then code=$(echo "$body" | jq -r '.error.code') requestId=$(echo "$body" | jq -r '.error.requestId') echo "Request failed: $code (request ID: $requestId)" exit 1fiSee Errors for the full code list and what to do with each one.
Paginate through every product
Section titled “Paginate through every product”page=1while :; do body=$(curl -s "https://dev-api.theprioryshop.co.uk/v1/catalog/products?pageSize=100&page=$page" \ -H "Authorization: Bearer epos_dev_sk_example_not_real") echo "$body" | jq -c '.rows[]' totalPages=$(echo "$body" | jq -r '.totalPages') [ "$page" -ge "$totalPages" ] && break page=$((page + 1))doneIncremental sync with updatedSince
Section titled “Incremental sync with updatedSince”since="2026-08-27T00:00:00.000Z"curl "https://dev-api.theprioryshop.co.uk/v1/catalog/products?updatedSince=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$since")" \ -H "Authorization: Bearer epos_dev_sk_example_not_real"See Catalog Sync for the full pattern this fits into.