Quickstart

From nothing to a priced product list, in four steps.

1. Create a feed

In the DYJ dashboard, open Marketplace → Feeds and create one. A feed is a store connection: if you run several storefronts, or want different margins for a bridal line and an outlet, create several.

2. Add at least one rule

A rule says which products you want and what you charge for them. The two-step editor asks for the selection first — categories, a whole-euro cost band, whether a real photograph is required, and optionally metal, stone, stone origin, occasion and audience — and the margin schedule second. The same five facets are search filters on the API and fields on every product.

Rules are ordered, and the first one that matches a product is the one that prices it. A broad rule sitting above a narrow one will quietly swallow it, so put your specific rules first.

3. Generate a secret key

Under My Account → Developer, generate a partner key. It is shown once. Store it wherever your server keeps secrets — never in your storefront’s JavaScript, and never in a repository.

4. Call the API

Your feed’s id is on its Integration tab. An empty body returns the whole first page.

curl -X POST   https://api.dyj.one/v1/market/feeds/FEED_ID/items/search   -H "Authorization: Bearer dyj_sk_..."   -H "Content-Type: application/json"   -d '{}'
{
  "data": [
    {
      "id": "2b0478f5-8ef3-41e0-9f1c-a0dcc9a2d993",
      "sku": "DYJ-M-1042",
      "specificationVersion": null,
      "metalDetails": null,
      "stones": null,
      "saleUnit": null,
      "includedComponents": null,
      "sizing": null,
      "production": null,
      "dimensions": null,
      "title": "Colette solitaire",
      "description": null,
      "tags": [],
      "materialsNote": null,
      "category": "ring",
      "metals": ["white_gold"],
      "stone": "diamond",
      "stoneOrigin": "lab_grown",
      "occasions": ["engagement"],
      "audience": "women",
      "price": { "listingPrice": 1500, "totalPrice": 1815, "discount": 0, "totalPriceInEur": 1815, "costTerms": null },
      "updatedAt": "2026-08-31T18:10:43.594543+00:00",
      "photos": [],
      "embed": null
    }
  ],
  "pagination": { "pageNumber": 1, "pageSize": 50, "totalRecordsFound": 1 },
  "currency": { "title": "Euro", "shortTitle": "EUR", "rate": 1, "updatedAt": "2026-09-03T09:00:00.000Z" }
}

price.listingPrice is what DYJ charges you to produce the piece. price.totalPrice is your selling price, computed by the first of your rules that matches it. Both are confidential to your account — no designer and no other business can see either. Amounts are decimal, in the response’s currency, stated once for the whole page.

This example is a legacy product: its structured details are unknown. Reviewed products populate the same fields. Read Product specifications before displaying purity, supplied stones, size options, or production estimates.

Getting nothing back?

An empty data array with a 200 means your rules currently select nothing — not that anything failed. The usual causes are a cost band that no listed piece falls into, a category with no live products, or photoPolicy: required on a rule whose matches only have a 3D poster. Open the feed preview in your dashboard: it runs this exact query.