Skip to main content
PUT
Bulk update products

Authorizations

Authorization
string
header
required

Your API key goes here

Path Parameters

storeId
string<uuid>
required

The ID of the store.

Body

application/json

The BulkUpdateProductForm with updates.

Form for updating multiple products in a store at once. All fields are nullable - only non-null values will be applied to the selected products.

productIds
string<uuid>[]
required

The list of product IDs to update

Minimum array length: 1
visibility
enum<integer>

List of product visibility (or privacy) levels

Available options:
0,
1,
2,
3
shouldBlockVirtualPrivateNetworks
boolean | null

Whether VPNs and proxies should be blocked from purchasing the products

blacklistedPaymentGateways
string[] | null

The array of blacklisted payment methods for the products

isBestSeller
boolean | null

Whether to mark the products as bestsellers

description
string | null

The description of the products (supports markdown)

Maximum string length: 50000
deliveryMessage
string | null

The message to include in the delivery email when the product is delivered. This will be applied to ALL variants of the selected products.

Maximum string length: 2048
affiliateDiscountMode
enum<integer>

Defines how affiliate discounts should be applied to a product.

Available options:
0,
1,
2
customAffiliateDiscountPercentage
integer<int32> | null

Custom affiliate discount percentage (0-100) when AffiliateDiscountMode is Custom

Required range: 0 <= x <= 100
customFields
object[] | null

Custom fields to apply to all variants of the selected products. When set, existing custom fields on each variant are removed and replaced with these.

discordMode
enum<integer>

Determines when a customer is added to the Discord server and when they receive their role.

Available options:
0,
1
discordRequirement
enum<integer>

Determines whether Discord linking is required, optional, or disabled during checkout.

Available options:
0,
1,
2
discordRoleId
string | null

Discord role ID to assign to all variants of the selected products. When set, all variants will be mapped to this Discord role.

Maximum string length: 32
randomizeKeyDelivery
boolean | null

When set, updates whether license keys are selected randomly instead of FIFO for all variants.

dynamicDeliveryUrl
string | null

Dynamic delivery webhook URL to apply to ALL variants of the selected products. Setting it also enables the "dynamic" delivery type on each variant. Pass an empty string to clear the URL (and drop the dynamic delivery type); leave null to make no change.

Maximum string length: 2048
primaryImageKey
string | null

The storage key of an already-uploaded image to apply as the primary (first) image of every selected product. The key is copied to a fresh object per product, so each product owns its own copy and deleting one product never affects the others. The key must belong to a product in this store. Leave null to make no change.

Maximum string length: 256

Response

The object was successfully updated.

Represents a default generic response for API endpoints.

success
boolean
required

Indicates whether the operation or response was successful.

message
string | null

A descriptive message providing additional context or information about the response.

code
string | null

The error code (if there was an error) to use when referencing the error

data
any | null

Represents the data associated with a response.

Last modified on August 29, 2025