One active item of any kind
- Credentials
- Store key
- Scopes
catalog:read
Old path, deprecated, sunset 1 Feb 2027: GET /v1/products/{slug}.
storeKey catalog:readAuthorizationBearer <sez_pub_... (publishable) or sez_sk_... (secret)>A per-store key from the console. Publishable keys are browser-safe; secret keys are server-only.
Scope: catalog:read
slug*stringThe item's store-unique slug.
The item.
application/json- response
data*|||An item. details depends on kind.
curl -X GET 'https://api.shopeazy.co/v1/store/products/<slug>' \ -H 'Authorization: Bearer sez_pub_...'{ "data": { "id": "65myAK8IFZKwZBG84Gmw", "kind": "physical", "kitId": "cbzXdyoC08TecFtCKeTn", "title": "Monstera deliciosa, 20 cm pot", "slug": "monstera-deliciosa-20-cm-pot", "description": "A healthy, glossy monstera in a 20 cm nursery pot. Bright, indirect light and a drink every week or so.", "media": [ { "id": "m0-mvnovvgd", "url": "https://images.example.com/plants/monstera.jpg", "alt": "A monstera in a terracotta pot", "isPrimary": true, "position": 0, "source": "upload" } ], "price": { "currency": "ZAR", "amount": 32900 }, "compareAtPrice": { "amount": 39900, "currency": "ZAR" }, "taxable": true, "status": "active", "tags": [ "indoor", "low light", "bestseller" ], "productType": null, "vendor": null, "seo": { "description": "A healthy, glossy monstera delivered in Johannesburg.", "title": "Monstera deliciosa, 20 cm pot" }, "details": { "sku": "MON-20", "requiresShipping": true, "trackInventory": true, "stock": 30, "allowBackorder": false, "options": [], "variants": [] }, "customisations": [ { "id": "QdChQIpRuzJvj6uu3Huc", "name": "Gift wrapping", "description": "Choose how it arrives. Cards are written by hand.", "select": "one", "required": false, "max": null, "choices": [ { "id": "f0e14318", "name": "Plain brown paper", "description": null, "imageUrl": null, "available": true, "price": { "amount": 0, "currency": "ZAR" } }, { "id": "a26f9c74", "name": "Ribbon and card", "description": "A handwritten card in the box.", "imageUrl": null, "available": true, "price": { "amount": 4500, "currency": "ZAR" } } ] } ] }}List active items GET
Active **physical** products by default. `?kind=service`, `?kind=ticketing` or `?kind=tour` returns that kind instead; `?kind=all` returns every active item across kits. `?category=<slug>` narrows to one category and its children (coming soon). A tour's own `details` (schedule, price bands, meeting points) are coming soon. Cost and margin fields are never returned. Any other `kind` is `400 invalid_parameter`. Paged: `{ items, nextCursor }`, `limit` (default 100, at most 200) and an opaque `cursor`. Old path, deprecated, sunset 1 Feb 2027: `GET /v1/products`.
Open booking slots for a service GET
Open slots, already netted off what is reserved (capacity-aware), from now (plus the service's lead time) to its booking horizon (default 30 days, at most 120). Mirrors the hosted storefront's slot picker. Returns `{ enabled: false }` for an item that is not a service, or a service that takes no online bookings: show an enquiry form instead. `from` and `to` narrow the window (inclusive). They never widen it past the service's own: a `from` before now plus lead time, or a `to` past the horizon, is clamped. A non-numeric value, or `from` after `to`, is `400 invalid_parameter`. Old path, deprecated, sunset 1 Feb 2027: `GET /v1/products/{slug}/availability`.