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

Quickstart

An EPOS owner/administrator creates an IntegrationClient for you in Back Office Developer Tools, grants it exactly the scopes your integration needs, and issues a credential. The full API key secret is shown once, at creation time. There is no way to retrieve it again later - see API Keys.

Treat the key like a password: environment variable or secret manager, never committed to source control, never sent to a browser/frontend. See Security.

Every request to /v1/* requires the key in the Authorization header:

Authorization: Bearer epos_dev_sk_example_not_real

(That value is a fake example - see API Keys for the real format.)

Terminal window
curl "https://dev-api.theprioryshop.co.uk/v1/catalog/products?pageSize=5" \
-H "Authorization: Bearer epos_dev_sk_example_not_real"

A successful response looks like:

{
"rows": [
{
"id": "clx1product000001",
"storeId": "clx1store0000001",
"categoryId": "clx1category000001",
"name": "Alpha Bread 800g",
"sku": "SKU-ALPHA-BREAD",
"barcode": "5000000000001",
"brand": "Priory",
"size": "800g",
"unitType": "item",
"sellingPriceGross": "1.25",
"sellingPriceNet": "1.04",
"taxCategory": "STANDARD",
"vatRate": { "id": "clx1vatrate000001", "code": "STD", "name": "Standard Rate", "percentage": "20.00" },
"isActive": true,
"variablePrice": false,
"ageRestricted": false,
"alcoholRestricted": false,
"tobaccoRestricted": false,
"vapeRestricted": false,
"updatedAt": "2026-08-27T17:51:41.976Z"
}
],
"page": 1,
"pageSize": 5,
"total": 479,
"totalPages": 96
}

See First API Request for a walkthrough of what each field means, and the API Reference for the exact, generated schema.

Statuserror.codeWhat it means
401unauthorizedMissing, malformed, expired or revoked key, or the client is disabled.
403scope_deniedValid key, but missing the scope this route needs.
404not_foundDoesn’t exist, or exists outside your tenant/allowed stores.
429rate_limitedToo many requests - check Retry-After and back off.

See Errors for the full contract and Rate Limits for retry guidance.

6. Use the request ID when reporting a problem

Section titled “6. Use the request ID when reporting a problem”

Every response - success or error - carries an X-Request-Id header, and every error body includes the same value as error.requestId. Include it when asking for help. See Request IDs.

  • Environments - DEV vs Production, and what “not publicly launched” means for Production today.
  • Scopes - request exactly the access your integration needs.
  • Integrations - patterns for keeping your own data in sync.