Skip to main content
PUT
Update a digital product
Updates a digital product: send only the fields to change (at least one). PATCH /digital-products/{id} accepts the same body and behaves identically. Requires the WRITE_INVENTORY scope. The pricing rules are re-checked on the merged product, so changing access to both also needs both prices. A price for a way of buying the product no longer offers is discarded.
Sending a fileId replaces the attached file and deletes the previous one from storage. An app cannot obtain a fileId (see Create a digital product), so apps normally leave it out.
These endpoints only work on a store whose type is digital. On any other store they return 403 with This is only available on digital stores. See Digital stores.

Authorizations

Authorization
string
header
required

Installed-app access token (prefix app_), issued by the OAuth install flow. The store is bound to the token server-side , never send a shop id.

Path Parameters

id
string
required

The digital product's ObjectId.

Body

application/json

Any subset of the create fields. At least one is required. The pricing rules are re-checked on the merged product.

name
string

Product name (required, max 120 characters).

description
string

Description (max 10,000 characters).

author
string

Author or publisher (max 120 characters).

images
string<uri>[]

Cover image links (http or https, max 10).

category
string | null

Category ObjectId, which must belong to this store. null or an empty string clears it.

access
enum<string>

How buyers get the product. Default purchase.

Available options:
purchase,
subscription,
both
pricing
object

Prices in the store currency. A price for a way of buying that access does not offer is discarded.

inPass
boolean

Include the product in the store's all-access pass.

preview
object

The free preview of a PDF book: the first pages pages, cut on demand. A product with no stored preview setting reads as { enabled: true, pages: 3 }.

fileId
string

Id of a private file already uploaded to the store's file storage. See the note on this page: an app cannot upload that file itself.

listed
boolean

Show the product in the storefront. A product with no file is saved unlisted, and asking to list it returns 400.

Response

Update a digital product: success.

status
integer
required
Example:

200

success
boolean
required
Example:

true

message
string
required
Example:

"Digital product updated successfully"

data
object
required
Example: