DYJ Marketplace API
Server-to-server access to the jewellery products your feeds select.
You do not pick products. In your DYJ dashboard you define rules — a set of categories, a cost band, and a margin schedule — and your feed is whatever currently satisfies them. A designer listing a new ring inside your band appears in your store without either of you doing anything. A delisted one disappears the same way.
There is no synchronisation step and no membership to keep in step, because there is no stored membership: every request recomputes it. That has two consequences worth designing for from the start.
Products can vanish between two calls. That is normal operation, not an error. Treat a product missing from search as out of stock rather than as a failure, and you will never need a reconciliation job.
Prices are recomputed too. price.totalPrice comes from the designer’s current cost and your current margin schedule. Cache it for minutes, not days.
Every amount is a decimal
Every amount in this API — in requests and responses alike — is a decimal number in the response’s currency, with at most two decimal places. 1500 is €1,500.00 and 1815.5 is €1,815.50. Nothing here speaks cents, deliberately — a single unit everywhere is what keeps an integration from ending up wrong by a factor of a hundred.
The two credentials
DYJ issues your account two keys, and they are not interchangeable. Sending the wrong one here fails closed with a 401.
| Key | Lives | Used for |
|---|---|---|
dyj_sk_… secret | Your server, only | This API |
dyj_live_… public | Browser, in your page | The 3D viewer embed |
See API keys for rotation and for what to do if your storefront is fully static.
Where to start
- Quickstart — your first request, in four steps.
- Syncing a catalogue — paging, cadence, and what to do about products that disappear.
- 3D embeds — showing the piece, not just its data.
- Errors — what each status actually means here.
- API reference — every field, generated from the spec.