Download OpenAPI specification:
{- "property1": {
- "code": "color",
- "code_new": "Color2",
- "title": "Color",
- "description": "The color of the product"
}, - "property2": {
- "code": "color",
- "code_new": "Color2",
- "title": "Color",
- "description": "The color of the product"
}
}Get a single category by its code/id.
| category required | string Example: WasteBins The category code/id to retrieve |
{- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}[- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]Alias of GET /categories/b2b — identical response.
[- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
][- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]Alias of GET /categories/b2b/flat — identical response.
[- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]Alias of GET /categories/b2b/flat — identical response.
[- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]Retrieve a paginated list of all companies (customers). Requires appropriate permissions to access.
{- "data": [
- {
- "code": "EA00001",
- "name": "Acme Corporation",
- "address": {
- "street": "Main Street",
- "number": "123",
- "number_suffix": "A",
- "default": true,
- "postal_code": "1234AB",
- "city": "Amsterdam",
- "cc": "NL",
- "country": "NL",
- "email_shipping": "[email protected]"
}
}
], - "links": { },
- "meta": { }
}Retrieve detailed information about a specific company (customer) by its ID. Requires appropriate permissions to access.
| company required | string Example: EA00001 The ID of the company to retrieve |
{- "code": "EA00001",
- "name": "Acme Corporation",
- "address": {
- "street": "Main Street",
- "number": "123",
- "number_suffix": "A",
- "default": true,
- "postal_code": "1234AB",
- "city": "Amsterdam",
- "cc": "NL",
- "country": "NL",
- "email_shipping": "[email protected]"
}
}Get list of orders
| customer_id | string Filter orders by customer ID (only for users with permission) |
| status | Array of strings Items Enum: "error" "processing" "in-m3" "m3-error" "shipping-error" "shipped" "canceled" "complete" Filter orders by status (array of statuses) |
{- "data": [
- {
- "id": 12345,
- "updated_at": {
- "date": "2024-01-01 12:00:00.000000",
- "timezone_type": 3,
- "timezone": "Europe/Amsterdam"
}, - "status": "pending",
- "creator_name": "John Doe",
- "customer": {
- "code": "EA00001",
- "name": "Acme Corporation",
- "address": {
- "street": "Main Street",
- "number": "123",
- "number_suffix": "A",
- "default": true,
- "postal_code": "1234AB",
- "city": "Amsterdam",
- "cc": "NL",
- "country": "NL",
- "email_shipping": "[email protected]"
}
}, - "dropship": true,
- "vat": "NL123456789B01",
- "company": "Acme Corporation",
- "reference": "PO123456",
- "notes": "string",
- "BillingAddress": null,
- "shippingAddress": {
- "first_name": "Jane",
- "last_name": "Doe",
- "address_one_street": "Elm Street",
- "address_one_number": "456",
- "address_one_additional": "B",
- "address_two_street": null,
- "address_two_number": null,
- "address_two_additional": null,
- "city": "Rotterdam",
- "zipcode": "5678CD",
- "country": "NL",
- "phone_number": "+31 20 123 4567",
- "delivery_note": "Leave at the front door if no one is home"
}, - "products": [
- {
- "title": "Dometic Kookplaat 2-Pits HBG 2335",
- "barcode": "4015704284195",
- "product_sku": "A0009953",
- "sales_unit": "STUKS",
- "price_unit": "STUKS",
- "sales_unit_amount": 1,
- "quantity": 2,
- "price": 49.99,
- "discount": null,
- "reference": "HBG 2335",
- "customer_price": 39.99,
- "sold_price": 44.99,
- "tax": 21
}
], - "shipments": [
- {
- "created_at": {
- "date": "2024-01-01 12:00:00.000000",
- "timezone_type": 3,
- "timezone": "Europe/Amsterdam"
}, - "shipment_id": 54321,
- "courier": "DHL",
- "piece_number": 1,
- "tracker_code": "JD0146000030000000000"
}
]
}
], - "links": { },
- "meta": { }
}Create a new order
| reference | string <= 50 characters Reference for the order (max 50 characters) |
| notes | string Additional notes for the order |
| test | boolean Indicates if this is a test order |
| m3_test | boolean or null Marks the order as a test order in M3 (separate from the general "test" flag) |
| m3_operation | string or null Enum: "read" "write" M3 operation mode for the order |
| dropshipment | boolean Default: true Whether the order should be dropshipped. Defaults to true when omitted. |
| customercode | string Customer code to place the order for (if different from the authenticated user) |
required | object Shipping details for the order |
required | Array of objects List of products to include in the order |
{- "reference": "Order from trade show",
- "notes": "Please deliver between 9 AM and 5 PM.",
- "test": false,
- "m3_test": false,
- "m3_operation": "read",
- "dropshipment": true,
- "customercode": "EA00001",
- "shipping": {
- "first_name": "Jane",
- "last_name": "Doe",
- "company": "Acme Corp",
- "vatNumber": "NL123456789B01",
- "phone": "+31 20 123 4567",
- "address": {
- "street": "Main Street",
- "houseNumber": "123",
- "houseNumberExtension": "A",
- "city": "Amsterdam",
- "postcode": "1234AB",
- "country": "NL",
- "note": "Leave at the front door if no one is home"
}
}, - "products": [
- {
- "sku": "PROD-001",
- "amount": 10,
- "price": 99.99,
- "vatrate": 21
}
]
}{- "data": {
- "id": "ORD123456",
- "status": "pending",
- "created_at": {
- "date": "2023-10-05 14:48:00.000000",
- "timezone_type": 3,
- "timezone": "UTC"
}
},
}Get details of a specific order by ID
| order required | integer Example: 12345 The ID of the order to retrieve |
{- "id": 12345,
- "updated_at": {
- "date": "2024-01-01 12:00:00.000000",
- "timezone_type": 3,
- "timezone": "Europe/Amsterdam"
}, - "status": "pending",
- "creator_name": "John Doe",
- "customer": {
- "code": "EA00001",
- "name": "Acme Corporation",
- "address": {
- "street": "Main Street",
- "number": "123",
- "number_suffix": "A",
- "default": true,
- "postal_code": "1234AB",
- "city": "Amsterdam",
- "cc": "NL",
- "country": "NL",
- "email_shipping": "[email protected]"
}
}, - "dropship": true,
- "vat": "NL123456789B01",
- "company": "Acme Corporation",
- "reference": "PO123456",
- "notes": "string",
- "BillingAddress": null,
- "shippingAddress": {
- "first_name": "Jane",
- "last_name": "Doe",
- "address_one_street": "Elm Street",
- "address_one_number": "456",
- "address_one_additional": "B",
- "address_two_street": null,
- "address_two_number": null,
- "address_two_additional": null,
- "city": "Rotterdam",
- "zipcode": "5678CD",
- "country": "NL",
- "phone_number": "+31 20 123 4567",
- "delivery_note": "Leave at the front door if no one is home"
}, - "products": [
- {
- "title": "Dometic Kookplaat 2-Pits HBG 2335",
- "barcode": "4015704284195",
- "product_sku": "A0009953",
- "sales_unit": "STUKS",
- "price_unit": "STUKS",
- "sales_unit_amount": 1,
- "quantity": 2,
- "price": 49.99,
- "discount": null,
- "reference": "HBG 2335",
- "customer_price": 39.99,
- "sold_price": 44.99,
- "tax": 21
}
], - "shipments": [
- {
- "created_at": {
- "date": "2024-01-01 12:00:00.000000",
- "timezone_type": 3,
- "timezone": "Europe/Amsterdam"
}, - "shipment_id": 54321,
- "courier": "DHL",
- "piece_number": 1,
- "tracker_code": "JD0146000030000000000"
}
]
}Get current status of a specific order by ID
| order required | integer Example: 12345 The ID of the order to retrieve status for |
| output | string Enum: "text" "json" Example: output=json Output format, either "text" (default for compatibility reasons) or "json" |
"processing"{- "processing": "Processing",
- "error": "Error occurred during processing",
- "in-m3": "Order successfully sent to M3",
- "m3-error": "Received error from M3 during processing",
- "shipping-error": "Creation of shipment label in Transsmart failed",
- "shipped": "Order sent to shipping provider",
- "canceled": "Order canceled",
- "complete": "Order complete (used for test orders only)"
}Get list of product skus
Requires PRODUCT_LIST feature to access
Note that GET /product/{product}, GET /product/basic/{product}, and GET /product/barcode/{barcode} do NOT exclude these products — they instead surface via the blocked field.
| category | string Filter based on category |
| update_count | integer The minimum changeset count a product needs to be on to be listed. Products that do not meet this requirement are excluded from the result. |
| modified_since | string <date-time> Example: modified_since=2025-01-01 00:00 Only return products that have been changed since this date |
| barcode | string Example: barcode=2000120302310,8003507220133 Return products that have the specified barcodes, comma separated |
[- {
- "sku": "0108001",
- "m3id": "0108001",
- "last_modified": {
- "date": "2025-12-31 00:00:00.000000",
- "timezone_type": 3,
- "timezone": "UTC"
}, - "update_count": 1,
- "blocked": false
}
]Get detailed product information
| product required | string Example: 0108001 The SKU of the product to retrieve |
{- "sku": "AO234324",
- "ocsid": "AO234324",
- "vendor_item_no": "12345",
- "expiring": false,
- "last_modified": {
- "date": "2023-10-05 14:48:00.000000",
- "timezone_type": 3,
- "timezone": "UTC"
}, - "update_count": 1,
- "blister": false,
- "consumer": false,
- "blocked": false,
- "barcode": {
- "value": "1234567890123",
- "type": "EAN13",
- "image": {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
}, - "stock": 2,
- "stock-colour": "green",
- "stock-expected": "lte_30",
- "stock-absolute": 12,
- "dropshipment": {
- "dropshipable": true,
- "is_big_parcel": false
}, - "customs": {
- "code": "123456789",
- "label": "Electronics",
- "origin": "NL"
}, - "categories-b2b": {
- "Toilet": [
- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]
}, - "categories-b2c": {
- "Toilet": [
- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]
}, - "prices": [
- {
- "seller": 0,
- "exvat": 100,
- "incvat": 121,
- "vatamount": 21,
- "minqty": 1,
- "priceOnDemand": false
}
], - "price_unit": "piece",
- "sales_unit": "box",
- "sales_unit_amount": 10,
- "files": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "attributes": [
- {
- "code": "color",
- "code_new": "Color2",
- "title": "Color",
- "description": "The color of the product"
}
], - "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
]
}Get product by barcode
| barcode required | string Example: 2000120302310 The EAN13 barcode of the product to retrieve. |
{- "sku": "AO234324",
- "ocsid": "AO234324",
- "vendor_item_no": "12345",
- "expiring": false,
- "last_modified": {
- "date": "2023-10-05 14:48:00.000000",
- "timezone_type": 3,
- "timezone": "UTC"
}, - "update_count": 1,
- "blister": false,
- "consumer": false,
- "blocked": false,
- "barcode": {
- "value": "1234567890123",
- "type": "EAN13",
- "image": {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
}, - "stock": 2,
- "stock-colour": "green",
- "stock-expected": "lte_30",
- "stock-absolute": 12,
- "dropshipment": {
- "dropshipable": true,
- "is_big_parcel": false
}, - "customs": {
- "code": "123456789",
- "label": "Electronics",
- "origin": "NL"
}, - "categories-b2b": {
- "Toilet": [
- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]
}, - "categories-b2c": {
- "Toilet": [
- {
- "id": "Electricity",
- "code": "Electricity",
- "title": "Electricity",
- "level": 1,
- "path": "20001,20002",
- "path_new": "Electricity,SpareParts",
- "is_group": false,
- "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "children": [
- { }
]
}
]
}, - "prices": [
- {
- "seller": 0,
- "exvat": 100,
- "incvat": 121,
- "vatamount": 21,
- "minqty": 1,
- "priceOnDemand": false
}
], - "price_unit": "piece",
- "sales_unit": "box",
- "sales_unit_amount": 10,
- "files": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
], - "attributes": [
- {
- "code": "color",
- "code_new": "Color2",
- "title": "Color",
- "description": "The color of the product"
}
], - "media": [
- {
- "sequence": 1,
- "type": "image",
- "primary": true,
- "hash": "a1b2c3d4e5f67890123456789abcdef0",
- "mimetype": "image/jpeg",
- "ext": "jpg",
- "size": 204800
}
]
}Retrieve stock availability for products in color format, where "red" = out of stock and "green" = in stock. You can choose between a flat or nested list format. Optionally, filter results by modifications since a specific date.
| listtype | string Default: "nested" Enum: "flat" "nested" Choose between "flat" and "nested" list types. Default is "nested". |
| modified_since | string <date-time> If set, only stock modifications since the given date (in ISO 8601 format) are returned. |
[- {
- "0125245": "green"
}, - {
- "A0042866L": "red"
}, - {
- "0125227": "green"
}
]Retrieve stock availability for products in numeric format, where 0 = out of stock and 2 = in stock. You can choose between a flat or nested list format. Optionally, filter results by modifications since a specific date.
| listtype | string Default: "nested" Enum: "flat" "nested" Choose between "flat" and "nested" list types. Default is "nested". |
| modified_since | string <date-time> If set, only stock modifications since the given date (in ISO 8601 format) are returned. |
[- {
- "0125245": 1
}, - {
- "A0042866L": 0
}, - {
- "0125227": 1
}
]Endpoint was previously used to retrieve absolute stock availability for products, where the value represents the exact number of items in stock.
| listtype | string Default: "nested" Enum: "flat" "nested" Choose between "flat" and "nested" list types. Default is "nested". |
| modified_since | string <date-time> If set, only stock modifications since the given date (in ISO 8601 format) are returned. |
[- {
- "0125245": 12
}, - {
- "A0042866L": 0
}, - {
- "0125227": 23
}
]Get a product file (e.g. datasheet, manual) by its sequence index
| product required | string Example: 0108001 The SKU of the product to retrieve the file for |
| index required | integer Example: 1 The sequence index of the file, as returned by the product media list |
Get a media file by its canonical hash. Falls back to legacy media storage if not found in the current media library.
| sha1 required | string Example: a1b2c3d4e5f67890123456789abcdef0.jpg The SHA1 hash of the media file, optionally with a file extension (e.g. "abc123.jpg") |