## Create Products
`ProductCreateProductsResponse Products.CreateProducts(ProductCreateProductsParams?parameters, CancellationTokencancellationToken = default)`
**post** `/api/v2/public/products`
Creates or updates products in bulk.
### Parameters
- `ProductCreateProductsParams parameters`
- `Boolean flush`
Query param: When true, removes existing products before inserting.
- `IReadOnlyList
body`
Body param
- `required Boolean IsCounted`
- `required string ProductName`
Display name of the product.
- `required string ProductNumber`
Unique product number.
- `Boolean? AllowDecimal`
- `IReadOnlyList? AttentionCode`
- `Double? AverageWeight`
- `string? Barcode`
- `IReadOnlyList? BarcodesArray`
- `string? Barcode`
- `string? BaseUnitName`
- `string? BrandCode`
- `string? BrandDescription`
- `Double CarrierItemQuantity`
- `string? CategoryCode`
- `string? Color`
- `string? ColorCode`
- `IReadOnlyList? CountriesAllowed`
- `IReadOnlyList? CountriesNotAllowed`
- `string? CountryCode`
- `string? DefaultLocationTag`
- `DateTimeOffset? DeprecationDate`
- `Int? ExpirationMinRange`
- `IReadOnlyList? FreeFields`
- `string? Key`
- `Int SortOrder`
- `string? Value`
- `string? ImageUrl`
- `Int? Ioq`
- `Boolean? IsActive`
- `Boolean? IsAdr`
- `Boolean? IsDeleted`
- `Boolean? IsEditMinMax`
- `Boolean? IsEditReplenishment`
- `Boolean? IsExpiration`
- `Boolean? IsMarkdownAllowed`
- `Boolean? IsOrderManually`
- `Boolean? IsOrdering`
- `Boolean? IsPromotion`
- `Boolean? IsResetStoreStock`
- `Boolean? IsSet`
- `Boolean? IsStock`
- `Boolean? IsStoreProduct`
- `Boolean? IsTemplate`
- `Boolean? IsTheft`
- `string? MarginCategory`
- `Double? Moq`
- `Double? Price`
- `Double PriceCompareMultiplier`
- `string? PriceCompareUnit`
- `string? PriceLines`
- `string? ProductDetails`
- `string? ProductReferenceNumber`
- `string? ProductStatus`
- `string? ProductType`
- `string? ProductUrl`
- `IReadOnlyList? PromoStoresAllowed`
- `IReadOnlyList? PromoStoresNotAllowed`
- `Double? PromotionPrice`
- `string? PromotionText`
- `string? PromotionWeek`
- `Double? PurchasePrice`
- `string? PurchaseUnitBarcode`
- `string? PurchaseUnitName`
- `string? PurchaseUnitProductNumber`
- `Double? PurchaseUnitQuantity`
- `string? ReferralProductNumber`
- `IReadOnlyList? SetProducts`
- `string? SetItemQuantity`
- `string? SetProductNumber`
- `IReadOnlyList? ShelfLabels`
- `string? Shelflabel1`
- `string? Shelflabel2`
- `string? Shelflabel3`
- `string? Shelflabel4`
- `string? Shelflabel5`
- `string? Shelflabel6`
- `string? Size`
- `string? SizeCode`
- `string? SmallestProductNumber`
- `Double? SmallestQuantity`
- `string? StoreNumber`
- `IReadOnlyList? StoresAllowed`
- `IReadOnlyList? StoresNotAllowed`
- `string? SupplierName`
- `string? SupplierNumber`
- `string? SupplierProductNumber`
- `IReadOnlyList? Units`
- `required string UnitBarcode`
- `required string UnitName`
- `required Double UnitQuantity`
- `string? VariantCode`
- `string? Volume`
### Returns
- `class ProductCreateProductsResponse:`
Standard success response returned by mutation endpoints.
- `string? Data`
Optional data payload returned by the operation.
- `string? Message`
Human-readable message describing the result.
- `Boolean Success`
Indicates whether the operation completed successfully.
### Example
```csharp
ProductCreateProductsParams parameters = new();
var response = await client.Products.CreateProducts(parameters);
Console.WriteLine(response);
```