List catalog promotions
GET /v1/catalog/promotions
Filterable list of customer-facing, external-safe promotions for the authenticated tenant and allowed stores. Not paginated. Coupon, staff-discount and manual-discount promotion types, POS-only system-generated presets, and DRAFT/ARCHIVED promotions are never returned by this endpoint, regardless of filters. Required scope: catalog.promotions.read.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Header Parameters
Section titled “Header Parameters ”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_...).
Query Parameters
Section titled “Query Parameters ”Example
clx1store0000001Restrict to one store. Must be a store this IntegrationClient is allowed to access; otherwise 404.
Example
2026-08-27T18:00:00.000ZReturn promotions active at this instant (status ACTIVE and inside [startsAt, endsAt]). Forces the same status+window restriction as activeOnly=true regardless of the activeOnly value passed alongside it.
Example
MEAL_DEALExact match on promotion type. A type outside the customer-facing allow-list simply returns an empty array.
When true (default), only ACTIVE promotions currently inside their active window are returned. When false, PAUSED promotions are also included (still never DRAFT/ARCHIVED).
Responses
Section titled “ Responses ”object
Example
clx1promo00000001Example
clx1store0000001Example
Meal Deal: Main + Snack + Drink = £3.50object
Customer-facing promotion type. Coupon, staff-discount and manual-discount promotion types are never returned by this API - see the API reference’s Promotions section.
Example
MEAL_DEALobject
object
True when status is ACTIVE and the current time is inside [startsAt, endsAt]. Computed independently of the activeOnly/activeAt query filters.
Plain-language description of who/what qualifies. Never the raw internal conditions JSON.
Example
Buy one qualifying item from each of the Main, Snack and Drink groupsPlain-language description of the discount. Never the raw internal actions JSON.
Example
Fixed price £3.50Example
2026-08-27T17:51:41.976ZValidation_failed - the request query/params failed validation.
object
object
Stable machine-readable error code. See the Error codes table in the API reference.
Example
validation_failedHuman-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.
Example
Request validation failed.Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.
object
Example
{}Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.
Example
req_AbCdEfGh12345678Unauthorized - missing, malformed, expired or revoked API key, or the owning IntegrationClient is disabled/revoked.
object
object
Stable machine-readable error code. See the Error codes table in the API reference.
Example
validation_failedHuman-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.
Example
Request validation failed.Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.
object
Example
{}Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.
Example
req_AbCdEfGh12345678Scope_denied - the API key is valid but the IntegrationClient does not hold the scope this route requires.
object
object
Stable machine-readable error code. See the Error codes table in the API reference.
Example
validation_failedHuman-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.
Example
Request validation failed.Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.
object
Example
{}Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.
Example
req_AbCdEfGh12345678Not_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
object
Stable machine-readable error code. See the Error codes table in the API reference.
Example
validation_failedHuman-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.
Example
Request validation failed.Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.
object
Example
{}Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.
Example
req_AbCdEfGh12345678Payload_too_large - request exceeded the configured body size limit.
object
object
Stable machine-readable error code. See the Error codes table in the API reference.
Example
validation_failedHuman-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.
Example
Request validation failed.Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.
object
Example
{}Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.
Example
req_AbCdEfGh12345678Rate_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
object
Stable machine-readable error code. See the Error codes table in the API reference.
Example
validation_failedHuman-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.
Example
Request validation failed.Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.
object
Example
{}Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.
Example
req_AbCdEfGh12345678Headers
Section titled “Headers ”Example
42Seconds to wait before retrying.
Internal_error - unexpected server error. The response body is deliberately generic; use requestId when reporting the problem.
object
object
Stable machine-readable error code. See the Error codes table in the API reference.
Example
validation_failedHuman-readable message. Safe to show to a developer, not localized, not guaranteed to be stable text - match on code, not this string.
Example
Request validation failed.Additional machine-readable detail, shape depends on code (e.g. validation errors, required scopes). Empty object when there is nothing more to add.
object
Example
{}Request ID for this response - same value as the X-Request-Id response header. Include this when reporting a problem.
Example
req_AbCdEfGh12345678