Purpose
Returns a single product from the Clopos catalog, along with related data specific to its type (variants, modifiers, recipe, timer settings, etc.). Use thewith parameters to fetch only the sub-resources you need.
HTTP Request
Copy
GET https://integrations.clopos.com/open-api/v2/products/{id}
Authorization
The same headers are mandatory for this endpoint:x-token
Path Parameters
The product ID (integer or UUID).
Query Parameters
Related data selector. Example:
taxes, unit, modifications, modificator_groups, recipe, packages, media, tags, setting. You can include multiple with parameters.
Supported with values may vary based on your backend version.
Request Example
Copy
curl -X GET "https://integrations.clopos.com/open-api/v2/products/419?with[]=modifications&with[]=taxes" \
-H "x-token: oauth_example_token" \
Response Examples
200 OK — GOODS Product with Variants
Copy
{
"success": true,
"data": {
"id": 419,
"cid": null,
"parent_id": null,
"station_id": null,
"category_id": null,
"unit_id": 1,
"net_output": 1,
"type": "GOODS",
"name": "Fanta",
"parent_name": "",
"image": null,
"position": null,
"barcode": null,
"gov_code": "654564",
"status": 1,
"hidden": 0,
"sold_by_weight": false,
"max_age": null,
"discountable": true,
"giftable": false,
"has_modifications": true,
"meta": {
"langs": {
"en": [],
"az": []
},
"availability": {
"schedules": {
"itemAvailability": [],
"itemVisibility": []
}
},
"gov_package_code": "234234324"
},
"setting": null,
"emenu_category_id": null,
"emenu_position": null,
"emenu_hidden": false,
"accounting_category_id": null,
"description": null,
"price": 0,
"cost_price": 0,
"markup_rate": 0,
"cooking_time": 0,
"ignore_service_charge": false,
"inventory_behavior": 0,
"low_stock": 0,
"unit_weight": 1,
"created_at": "2024-07-01 07:51:25",
"updated_at": "2024-07-01 08:01:04",
"deleted_at": null,
"name_slug": "fanta",
"full_name": "Fanta",
"gross_margin": 0,
"slug": "fanta",
"color": "00bcd4",
"is_inventory_behavior_changeable": true,
"venues": [],
"properties": [],
"modifications": [
{
"id": 420,
"cid": null,
"parent_id": 419,
"station_id": null,
"category_id": null,
"unit_id": 1,
"net_output": 1,
"type": "MODIFICATION",
"name": "0.5 L",
"parent_name": "Fanta",
"image": null,
"position": null,
"barcode": null,
"gov_code": null,
"status": 1,
"hidden": 0,
"sold_by_weight": false,
"max_age": null,
"discountable": true,
"giftable": false,
"has_modifications": false,
"meta": {
"langs": {
"en": [],
"az": []
},
"gov_package_code": "234234324"
},
"setting": null,
"emenu_category_id": null,
"emenu_position": null,
"emenu_hidden": false,
"accounting_category_id": null,
"description": null,
"price": 5,
"cost_price": 1,
"markup_rate": 400,
"cooking_time": 0,
"ignore_service_charge": false,
"inventory_behavior": 0,
"low_stock": 0,
"unit_weight": 1,
"created_at": "2024-07-01 07:51:25",
"updated_at": "2025-08-22 12:19:43",
"deleted_at": null,
"name_slug": "05 l",
"full_name": "Fanta 0.5 L",
"gross_margin": 80,
"slug": "05-l",
"venues": [],
"properties": []
},
{
"id": 421,
"cid": null,
"parent_id": 419,
"station_id": null,
"category_id": null,
"unit_id": 1,
"net_output": 1,
"type": "MODIFICATION",
"name": "1 L",
"parent_name": "Fanta",
"image": null,
"position": null,
"barcode": null,
"gov_code": null,
"status": 1,
"hidden": 0,
"sold_by_weight": false,
"max_age": null,
"discountable": true,
"giftable": false,
"has_modifications": false,
"meta": {
"langs": {
"en": [],
"az": []
},
"gov_package_code": "234234324"
},
"setting": null,
"emenu_category_id": null,
"emenu_position": null,
"emenu_hidden": false,
"accounting_category_id": null,
"description": null,
"price": 10,
"cost_price": 7,
"markup_rate": 42.8571,
"cooking_time": 0,
"ignore_service_charge": false,
"inventory_behavior": 0,
"low_stock": 0,
"unit_weight": 1,
"created_at": "2024-07-01 07:51:26",
"updated_at": "2025-09-05 10:32:59",
"deleted_at": null,
"name_slug": "1 l",
"full_name": "Fanta 1 L",
"gross_margin": 30,
"slug": "1-l",
"venues": [],
"properties": []
}
],
"taxes": [],
"tags": [],
"media": []
}
}
200 OK — DISH Product with Modifiers
Copy
{
"success": true,
"data": {
"price": 200,
"cost_price": 21.25,
"id": 1,
"cid": null,
"parent_id": null,
"station_id": 1,
"category_id": 1,
"unit_id": 1,
"net_output": 1,
"type": "DISH",
"name": "Mega Wrap Combo with Free Raw Meatball Wrap.",
"parent_name": "",
"image": {
"original": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/original.jpg",
"extra_large": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/extra_large.jpg",
"original_large": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/original_large.jpg",
"thumb": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/thumb.jpg",
"blur_hash": "LMSPb2j@~Xt7xvfQM{fQxuj[M{ay"
},
"position": 1,
"barcode": "9780750310512",
"gov_code": null,
"status": 1,
"hidden": 0,
"sold_by_weight": false,
"max_age": null,
"discountable": true,
"giftable": true,
"has_modifications": false,
"meta": {
"allergies": [],
"diets": [],
"langs": {
"en": {
"name": "Mega Wrap Combo with Free Raw Meatball Wrap.",
"description": "description test"
},
"az": {
"name": "Mega Wrap Combo with Free Raw Meatball Wrap (AZ)",
"description": "Sample description text (AZ)"
},
"ar": [],
"tr": [],
"ru": [],
"uz": [],
"kz": [],
"es": []
},
"modifier_pos": {
"5": 0,
"8": 1,
"9": 2,
"32": 3
},
"availability": {
"itemAvailability": false,
"itemVisibility": false,
"schedules": {
"itemAvailability": [],
"itemVisibility": []
}
},
"gov_package_code": "564564645"
},
"setting": null,
"emenu_category_id": 1,
"emenu_position": null,
"emenu_hidden": false,
"accounting_category_id": null,
"description": null,
"markup_rate": 561.157,
"cooking_time": 20,
"ignore_service_charge": false,
"inventory_behavior": 0,
"low_stock": 0,
"unit_weight": 1,
"created_at": "2024-05-15 12:36:10",
"updated_at": "2025-09-25 06:26:22",
"deleted_at": null,
"name_slug": "mega wrap combo with free raw meatball wrap",
"full_name": "Mega Wrap Combo with Free Raw Meatball Wrap.",
"gross_margin": 89.375,
"slug": "mega-wrap-combo-with-free-raw-meatball-wrap",
"color": "34495e",
"venues": [],
"properties": {
"measure": 250,
"measure_unit_id": 5,
"stop_list_setting": []
},
"taxes": [
{
"id": 1,
"type_id": 2,
"rounding_option": "ROUND_HALF_UP",
"priority": 1,
"calculation_type": 1,
"name": "edv`",
"rate": 18,
"meta": null,
"is_default": false,
"status": 1,
"created_at": "2023-04-12T11:14:45.000000Z",
"deleted_at": null,
"type": {
"id": 2,
"name": "Daxil"
},
"has_sale_types": true,
"sale_types": [
{
"id": 1004,
"name": "test",
"media": [],
"pivot": {
"tax_id": 1,
"sale_type_id": 1004
},
"status": []
},
{
"id": 2,
"name": "Delivery",
"media": [
{
"urls": {
"original": "https://cdn.clopos.com/_clopos/delivery.png",
"large": "https://cdn.clopos.com/_clopos/delivery.png"
}
}
],
"pivot": {
"tax_id": 1,
"sale_type_id": 2
},
"status": []
}
]
}
],
"unit": {
"id": 1,
"_lft": 1,
"_rgt": 4,
"parent_id": null,
"name": "piece",
"type": "PIECE",
"symbol": "pcs",
"equal": null,
"deleted_at": null
},
"modificator_groups": [
{
"id": 5,
"name": "Spice Selection",
"type": 1,
"min_select": 0,
"max_select": 1,
"meta": null,
"status": true,
"adjust_to_portion": false,
"created_at": "2024-05-15T12:36:10.000000Z",
"updated_at": "2024-05-18T11:47:10.000000Z",
"deleted_at": null,
"pivot": {
"product_id": 1,
"modificator_group_id": 5
},
"modificators": [
{
"id": 22,
"dish_id": 0,
"ingredient_id": null,
"group_id": 5,
"name": "Medium Spice",
"image": null,
"price": 0,
"cost_price": 0,
"brutto": 0,
"default_count": 0,
"min_count": 0,
"max_count": 1,
"meta": null,
"status": true,
"position": 0,
"created_at": "2024-05-15T12:36:10.000000Z",
"updated_at": "2024-09-06T18:32:18.000000Z",
"deleted_at": null,
"media": [],
"ingredient": null
},
{
"id": 23,
"dish_id": 0,
"ingredient_id": null,
"group_id": 5,
"name": "Extra Spice",
"image": null,
"price": 0,
"cost_price": 0,
"brutto": 0,
"default_count": 0,
"min_count": 0,
"max_count": 1,
"meta": null,
"status": true,
"position": 1,
"created_at": "2024-05-15T12:36:10.000000Z",
"updated_at": "2024-09-06T18:32:18.000000Z",
"deleted_at": null,
"media": [],
"ingredient": null
},
{
"id": 187,
"dish_id": 0,
"ingredient_id": 0,
"group_id": 5,
"name": "yyy",
"image": null,
"price": 0,
"cost_price": 0,
"brutto": 0,
"default_count": 0,
"min_count": 0,
"max_count": 0,
"meta": null,
"status": true,
"position": 2,
"created_at": "2024-09-06T18:34:01.000000Z",
"updated_at": "2024-09-06T18:35:09.000000Z",
"deleted_at": null,
"media": [],
"ingredient": null
}
]
}
],
"recipe": [
{
"id": 233,
"cid": null,
"parent_id": null,
"station_id": null,
"category_id": null,
"unit_id": 1,
"net_output": 1,
"type": "PREPARATION",
"name": "Quzu Y/F",
"parent_name": "",
"image": null,
"position": null,
"barcode": null,
"gov_code": null,
"status": 1,
"hidden": 0,
"sold_by_weight": false,
"max_age": null,
"discountable": true,
"giftable": false,
"has_modifications": false,
"meta": null,
"setting": null,
"emenu_category_id": null,
"emenu_position": null,
"emenu_hidden": false,
"accounting_category_id": null,
"description": null,
"price": 0,
"cost_price": 5,
"markup_rate": 0,
"cooking_time": 0,
"ignore_service_charge": false,
"inventory_behavior": 0,
"low_stock": 0,
"unit_weight": 0,
"created_at": "2024-05-20 14:08:30",
"updated_at": "2024-08-30 12:15:27",
"deleted_at": null,
"name_slug": "quzu yf",
"full_name": "Quzu Y/F",
"gross_margin": 0,
"slug": "quzu-yf",
"pivot": {
"dish_id": 1,
"ingredient_id": 233,
"net": "0.000",
"gross": "1.000",
"net_put": null
},
"properties": [],
"unit": {
"id": 1,
"_lft": 1,
"_rgt": 4,
"parent_id": null,
"name": "piece",
"type": "PIECE",
"symbol": "pcs",
"equal": null,
"deleted_at": null
}
}
],
"tags": [],
"media": [
{
"uuid": "f78e74e9-75da-468f-b7cf-96bed863832f",
"mime_type": "image/jpeg",
"size": 152789,
"urls": {
"original": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/original.jpg",
"extra_large": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/extra_large.jpg",
"original_large": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/original_large.jpg",
"thumb": "https://cdn.clopos.com/omega/f78e74e9-75da-468f-b7cf-96bed863832f/thumb.jpg"
},
"blur_hash": "LMSPb2j@~Xt7xvfQM{fQxuj[M{ay",
"dimensions": {
"width": 1373,
"height": 776
}
}
]
}
}
200 OK — TIMER Product
Copy
{
"success": true,
"data": {
"id": 407,
"cid": null,
"parent_id": null,
"station_id": null,
"category_id": 41,
"unit_id": 1,
"net_output": 1,
"type": "TIMER",
"name": "PS5",
"parent_name": "",
"image": null,
"position": 0,
"barcode": null,
"gov_code": null,
"status": 1,
"hidden": 0,
"sold_by_weight": false,
"max_age": null,
"discountable": true,
"giftable": false,
"has_modifications": false,
"meta": null,
"setting": {
"calculation_methods": 0,
"interval": 60,
"prices": [
{
"price": 3,
"from": 120
}
]
},
"emenu_category_id": 0,
"emenu_position": 0,
"emenu_hidden": false,
"accounting_category_id": null,
"description": null,
"price": 10,
"cost_price": 0,
"markup_rate": 0,
"cooking_time": 0,
"ignore_service_charge": false,
"inventory_behavior": 3,
"low_stock": 0,
"unit_weight": 1,
"created_at": "2024-06-06 06:43:42",
"updated_at": "2024-07-22 08:16:40",
"deleted_at": null,
"name_slug": "ps5",
"full_name": "PS5",
"gross_margin": 100,
"slug": "ps5",
"color": "00bcd4",
"venues": [],
"properties": [],
"taxes": [
{
"id": 5,
"type_id": 3,
"rounding_option": "ROUND_HALF_UP",
"priority": 1,
"calculation_type": 1,
"name": "Simplified Tax 2%",
"rate": 6.95,
"meta": null,
"is_default": false,
"status": 1,
"created_at": "2023-07-24T23:49:53.000000Z",
"deleted_at": null,
"type": {
"id": 3,
"name": "Sabit vergi"
},
"has_sale_types": false,
"sale_types": []
}
],
"tags": [],
"media": []
}
}
404 Not Found — Product does not exist
Copy
{
"success": false,
"error": "resource_not_found",
"message": "Product not found"
}
Field Reference
See the full breakdown of theProduct object and nested structures such as modifications and modificator_groups on the List Products page.
Notes
- If the
idparameter is in the wrong format, the backend returns a400error; validate it on the client side. - Since
withparameters are evaluated sequentially, avoid using the same key more than once. - Type-specific heavy relationships (for example, large
recipeormodificator_groups) can produce large responses; request only what you need. - Some fields may be empty or null depending on the product type; use the
typefield to drive conditional rendering on the client. - For TIMER products, the
setting.pricesarray represents additional fees applied after a certain duration. - For INGREDIENT products, the
packagesfield shows the package sizes used in stock entries; if not applicable, it is an empty array.