Skip to content
DEV preview — API version 1.0.0 — not the public production site — Development API: dev-api.theprioryshop.co.uk

Get a catalog product

GET
/v1/catalog/products/{id}

Fetch a single product by ID. Returns 404 if the product does not exist, or exists outside the authenticated tenant/allowed stores. Required scope: catalog.products.read.

id
required
string
Example
clx1product000001

Product ID.

X-Request-Id
string

Optional client-supplied request ID (^[A-Za-z0-9_.:-]{1,80}$). Echoed back on the X-Request-Id response header and inside any error body’s requestId field. If omitted or invalid, the server generates one (req_...).

object
id
required
string
Example
clx1product000001
storeId
required
string
Example
clx1store0000001
categoryId
required
object
Example
clx1category000001
name
required
string
Example
Alpha Bread 800g
sku
required
string
Example
SKU-ALPHA-BREAD
barcode
required
object
Example
5000000000001
brand
required
object
Example
Priory
size
required
object
Example
800g
unitType
required

Unit the product is sold/measured in.

string
Allowed values: item kg g litre ml
Example
item
sellingPriceGross
required

Selling price including VAT, as a decimal string.

string
Example
1.25
sellingPriceNet
required

Selling price excluding VAT, as a decimal string.

string
Example
1.04
taxCategory
required
string
Allowed values: STANDARD ZERO_RATED REDUCED EXEMPT OUT_OF_SCOPE UNCLASSIFIED
Example
STANDARD
vatRate
required
object
id
required
string
Example
clx1vatrate000001
code
required

Short VAT rate code.

string
Example
STD
name
required
string
Example
Standard Rate
percentage
required

VAT percentage, serialized as a decimal string.

string
Example
20.00
isActive
required
boolean
variablePrice
required

Whether this product is sold at a variable/scale-entered price (e.g. deli, bakery by weight).

boolean
ageRestricted
required
boolean
alcoholRestricted
required
boolean
tobaccoRestricted
required
boolean
vapeRestricted
required
boolean
updatedAt
required
string format: date-time
Example
2026-08-27T17:51:41.976Z

Validation_failed - the request query/params failed validation.

object
error
required
object
code
required

Stable machine-readable error code. See the Error codes table in the API reference.

string
Allowed values: validation_failed unauthorized scope_denied not_found payload_too_large rate_limited internal_error
Example
validation_failed
message
required

Human-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.

string
Example
Request validation failed.
details
required

Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.

object
key
additional properties
any
Example
{}
requestId
required

Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.

string
Example
req_AbCdEfGh12345678

Unauthorized - missing, malformed, expired or revoked API key, or the owning IntegrationClient is disabled/revoked.

object
error
required
object
code
required

Stable machine-readable error code. See the Error codes table in the API reference.

string
Allowed values: validation_failed unauthorized scope_denied not_found payload_too_large rate_limited internal_error
Example
validation_failed
message
required

Human-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.

string
Example
Request validation failed.
details
required

Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.

object
key
additional properties
any
Example
{}
requestId
required

Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.

string
Example
req_AbCdEfGh12345678

Scope_denied - the API key is valid but the IntegrationClient does not hold the scope this route requires.

object
error
required
object
code
required

Stable machine-readable error code. See the Error codes table in the API reference.

string
Allowed values: validation_failed unauthorized scope_denied not_found payload_too_large rate_limited internal_error
Example
validation_failed
message
required

Human-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.

string
Example
Request validation failed.
details
required

Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.

object
key
additional properties
any
Example
{}
requestId
required

Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.

string
Example
req_AbCdEfGh12345678

Not_found - the resource does not exist, or exists but is outside the IntegrationClient’s tenant/allowed stores. Both cases return the same generic 404 deliberately, to avoid confirming a resource exists to a caller not allowed to see it.

object
error
required
object
code
required

Stable machine-readable error code. See the Error codes table in the API reference.

string
Allowed values: validation_failed unauthorized scope_denied not_found payload_too_large rate_limited internal_error
Example
validation_failed
message
required

Human-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.

string
Example
Request validation failed.
details
required

Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.

object
key
additional properties
any
Example
{}
requestId
required

Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.

string
Example
req_AbCdEfGh12345678

Payload_too_large - request exceeded the configured body size limit.

object
error
required
object
code
required

Stable machine-readable error code. See the Error codes table in the API reference.

string
Allowed values: validation_failed unauthorized scope_denied not_found payload_too_large rate_limited internal_error
Example
validation_failed
message
required

Human-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.

string
Example
Request validation failed.
details
required

Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.

object
key
additional properties
any
Example
{}
requestId
required

Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.

string
Example
req_AbCdEfGh12345678

Rate_limited - too many requests. See the Retry-After response header. Current numeric limits are an operational policy, not a contractual guarantee, and may change - implement retry/backoff rather than hardcoding a specific limit.

object
error
required
object
code
required

Stable machine-readable error code. See the Error codes table in the API reference.

string
Allowed values: validation_failed unauthorized scope_denied not_found payload_too_large rate_limited internal_error
Example
validation_failed
message
required

Human-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.

string
Example
Request validation failed.
details
required

Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.

object
key
additional properties
any
Example
{}
requestId
required

Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.

string
Example
req_AbCdEfGh12345678
Retry-After
integer
Example
42

Seconds to wait before retrying.

Internal_error - unexpected server error. The response body is deliberately generic; use requestId when reporting the problem.

object
error
required
object
code
required

Stable machine-readable error code. See the Error codes table in the API reference.

string
Allowed values: validation_failed unauthorized scope_denied not_found payload_too_large rate_limited internal_error
Example
validation_failed
message
required

Human-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.

string
Example
Request validation failed.
details
required

Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.

object
key
additional properties
any
Example
{}
requestId
required

Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.

string
Example
req_AbCdEfGh12345678