Skip to content

Products

3 operations

GET/products#

List or search products and variants

products:read

With q the page is ranked by similarity and carries no cursor (at most limit results); without it the cursor pages newest first. available_quantity is null unless the install also holds inventory:read.

Parameters

NameTypeDescription
cursorquerystring
limitqueryinteger
Default:50
updated_at_minquerystring

Incremental sync filter (the cursor itself keys on immutable created_at)

qquerystring

Case-insensitive substring match on product name, variant name, SKU, DSIN and barcode

statusquerystring
Values:activeout_of_stockhiddendiscontinuedno_variants
idsquerystring

Comma-separated product ids (at most 100)

Responses

200

Product page

NameTypeDescription
dataRequiredProduct[]
next_cursorRequirednullablestring

Pass back as cursor to fetch the next page; null on the last page.

  • 401

    Missing, invalid, expired, or revoked token

  • 403

    Required live scope is missing

  • 429

    Token budget exhausted (180 requests/minute, 60 writes/minute per install)

Request
curl -X GET "https://dukkan.one/platform-api/v1/products?limit=50" \
  -H "Authorization: Bearer $DUKKAN_ACCESS_TOKEN"
Response
{
  "data": [
    {
      "id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
      "dsin": "D7Q2K9",
      "name": "Olive oil 1 L",
      "status": "placed",
      "updated_at": "2026-08-18T16:00:00Z",
      "image_url": "string",
      "image_color": "string",
      "brand": "string",
      "category": {
        "id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
        "name": "Olive oil 1 L"
      },
      "description": "string",
      "images": [
        "string"
      ],
      "variants": [
        {
          "id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
          "product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
          "sku": "OIL-1L",
          "price": {
            "amount_minor": 275000,
            "currency": "SYP",
            "decimals": 0
          },
          "status": "placed",
          "name": "Olive oil 1 L",
          "attributes": {},
          "barcode": "string",
          "compare_at_price": {
            "amount_minor": 275000,
            "currency": "SYP",
            "decimals": 0
          },
          "image_url": "string",
          "weight_gram": 1,
          "available_quantity": 1
        }
      ]
    }
  ],
  "next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOC0xOFQxNjowMDowMFoifQ"
}

GET/products/{id}#

Get one product with its variants

products:read

Parameters

NameTypeDescription
idpathRequiredstring

Responses

200

Product detail

NameTypeDescription
dataRequiredProduct
  • 401

    Missing, invalid, expired, or revoked token

  • 403

    Required live scope is missing

  • 404

    Resource not found in the token-bound store

  • 429

    Token budget exhausted (180 requests/minute, 60 writes/minute per install)

Request
curl -X GET "https://dukkan.one/platform-api/v1/products/PRODUCT_ID" \
  -H "Authorization: Bearer $DUKKAN_ACCESS_TOKEN"
Response
{
  "data": {
    "id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
    "dsin": "D7Q2K9",
    "name": "Olive oil 1 L",
    "status": "placed",
    "updated_at": "2026-08-18T16:00:00Z",
    "image_url": "string",
    "image_color": "string",
    "brand": "string",
    "category": {
      "id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
      "name": "Olive oil 1 L"
    },
    "description": "string",
    "images": [
      "string"
    ],
    "variants": [
      {
        "id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
        "product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
        "sku": "OIL-1L",
        "price": {
          "amount_minor": 275000,
          "currency": "SYP",
          "decimals": 0
        },
        "status": "placed",
        "name": "Olive oil 1 L",
        "attributes": {},
        "barcode": "string",
        "compare_at_price": {
          "amount_minor": 275000,
          "currency": "SYP",
          "decimals": 0
        },
        "image_url": "string",
        "weight_gram": 1,
        "available_quantity": 1
      }
    ]
  }
}

GET/products/variants#

Batch variant lookup by id

products:read

Re-validate quoted lines before sending an offer or creating an order. Unknown ids are omitted, never errors. available_quantity needs inventory:read.

Parameters

NameTypeDescription
idsqueryRequiredstring

Comma-separated variant ids (at most 100)

Responses

200

The variants that exist in the store

NameTypeDescription
dataRequiredVariantDetail[]
  • 400

    Invalid request

  • 401

    Missing, invalid, expired, or revoked token

  • 403

    Required live scope is missing

  • 429

    Token budget exhausted (180 requests/minute, 60 writes/minute per install)

Request
curl -X GET "https://dukkan.one/platform-api/v1/products/variants?ids=string" \
  -H "Authorization: Bearer $DUKKAN_ACCESS_TOKEN"
Response
{
  "data": [
    {
      "id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
      "product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
      "sku": "OIL-1L",
      "price": {
        "amount_minor": 275000,
        "currency": "SYP",
        "decimals": 0
      },
      "status": "placed",
      "name": "Olive oil 1 L",
      "attributes": {},
      "barcode": "string",
      "compare_at_price": {
        "amount_minor": 275000,
        "currency": "SYP",
        "decimals": 0
      },
      "image_url": "string",
      "weight_gram": 1,
      "available_quantity": 1,
      "product_name": "string",
      "product_status": "string"
    }
  ]
}