Products
3 operations
GET/products#
List or search products and variants
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
| Name | Type | Description |
|---|---|---|
cursorquery | string | |
limitquery | integer | Default: 50 |
updated_at_minquery | string | Incremental sync filter (the cursor itself keys on immutable created_at) |
qquery | string | Case-insensitive substring match on product name, variant name, SKU, DSIN and barcode |
statusquery | string | Values: activeout_of_stockhiddendiscontinuedno_variants |
idsquery | string | Comma-separated product ids (at most 100) |
Responses
200Product page
| Name | Type | Description |
|---|---|---|
dataRequired | Product[] | |
next_cursorRequirednullable | string | Pass back as |
401Missing, invalid, expired, or revoked token
403Required live scope is missing
429Token budget exhausted (180 requests/minute, 60 writes/minute per install)
curl -X GET "https://dukkan.one/platform-api/v1/products?limit=50" \
-H "Authorization: Bearer $DUKKAN_ACCESS_TOKEN"{
"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
Parameters
| Name | Type | Description |
|---|---|---|
idpathRequired | string |
Responses
200Product detail
| Name | Type | Description |
|---|---|---|
dataRequired | Product |
401Missing, invalid, expired, or revoked token
403Required live scope is missing
404Resource not found in the token-bound store
429Token budget exhausted (180 requests/minute, 60 writes/minute per install)
curl -X GET "https://dukkan.one/platform-api/v1/products/PRODUCT_ID" \
-H "Authorization: Bearer $DUKKAN_ACCESS_TOKEN"{
"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
Re-validate quoted lines before sending an offer or creating an order. Unknown ids are omitted, never errors. available_quantity needs inventory:read.
Parameters
| Name | Type | Description |
|---|---|---|
idsqueryRequired | string | Comma-separated variant ids (at most 100) |
Responses
200The variants that exist in the store
| Name | Type | Description |
|---|---|---|
dataRequired | VariantDetail[] |
400Invalid request
401Missing, invalid, expired, or revoked token
403Required live scope is missing
429Token budget exhausted (180 requests/minute, 60 writes/minute per install)
curl -X GET "https://dukkan.one/platform-api/v1/products/variants?ids=string" \
-H "Authorization: Bearer $DUKKAN_ACCESS_TOKEN"{
"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"
}
]
}