---
title: "PUT /api/products/{id}"
method: PUT
path: "/api/products/{id}"
tags: ["api", "products"]
---

# PUT /api/products/{id}

`PUT /api/products/{id}`

Update a Product

## Path parameters

- `id` string, required — The ID of the product to update

## Request body

- PUTProductsUpdateAProduct
  - `name` string, required — The name of the product
  - `description` string, nullable — The description of the product
  - `image` string, nullable — The image of the product
  - `type` 'voucher' | 'product' | 'donation' | 'membership' | 'addOn', required — The type of the product
  - `variants` object[]
    - `_id` string, required — The ID of the product variant of the product
    - `name` string, nullable — The Name of the product variant, defaults to product name if not specified
    - `description` string, nullable — A description of the variant
    - `price` number, float, nullable — The price of the product
    - `priceType` 'fixed' | 'range'
    - `priceRange` object
      - `min` number, float, nullable — The minimum price of the product
      - `max` number, float, nullable — The maximum price of the product
    - `taxable` boolean, required — Whether the product is taxable or not
    - `taxRate` number, float — The tax rate of the product
    - `compareAtPrice` number, float, nullable — The recommended retail price to compare with the actual price.
    - `taxServiceTypeId` string, nullable — The ID of the tax service of the product
    - `gtin` string
    - `localization` object — Localization of the product for multiple languages
  - `categoryIds` string[] — An array of categories to which the product belongs
  - `voucherSettings` object, nullable — If the product is of type voucher
    - `limitedValidityPeriod` boolean — Whether the voucher should expire
    - `validityConfig` object
      - `amount` number, float
      - `type` number, float
      - `untilEndOfPeriod` boolean
    - `pdfImage` string — A marketing image printed onto voucher pdf
    - `disclaimer` string, nullable — A disclaimer text printed onto voucher pdf
    - `documentTemplateSettings` object
      - `templates` object[]
        - `templateId` string, required — The ID of the document template
        - `format` 'A4' | 'LETTER' | 'LEGAL' | 'BOARDING-PASS' | 'PLASTIC-CARD' | 'CARD' | 'LABEL' | 'CUSTOM' | 'APPLE' | 'GOOGLE', required — The format of document template for the dimensions.
        - `target` 'thermal' | 'digital' | 'wallet', required — The target of document template for which targets it should be used.
        - `type` 'ticket' | 'invoice' | 'voucher' | 'member-card' | 'header-card', required — The type of document template for which document it should be used. ticket = The document template will be used on tickets. invoice = The document template will be used on invoices.
  - `addOnSettings` object, nullable
    - `optOutDescription` string, nullable — The description that is shown to the user if he decides to not buy the addOn
    - `localization` object — Localization of the addOnSettings for multiple languages
  - `donationSettings` object, nullable — Settings for donation products
    - `campaignId` string, required — The ID of the fundraise campaign
    - `fundId` string, required — The ID of the donation fund
  - `active` boolean — Whether the product is active and can be distributed
  - `meta` object — Custom key-value data. Metadata is useful for storing additional, structured information on an object.
  - `isFulfillable` boolean — Whether the product can be delivered
  - `localization` object — Localization of the product for multiple languages

## Response `200`

OK

- PUTProductsUpdateAProduct200Response
  - `_id` string, required — The ID of the product
  - `name` string, required — The name of the product
  - `active` boolean — Whether the product is active and can be distributed
  - `isFulfillable` boolean — Whether the product can be delivered
  - `type` 'voucher' | 'product' | 'donation' | 'membership' | 'addOn', required — The type of the product
  - `image` string, nullable — The image of the product
  - `description` string, nullable — The description of the product
  - `variants` object[] — An array of variants of the product
    - `_id` string, required — The ID of the product variant of the product
    - `name` string, nullable — The Name of the product variant, defaults to product name if not specified
    - `description` string, nullable — A description of the variant
    - `priceType` 'fixed' | 'range'
    - `price` number, float, nullable — The price of the product
    - `priceRange` object
      - `min` number, float, nullable — The minimum price of the product
      - `max` number, float, nullable — The maximum price of the product
    - `taxable` boolean, required — Whether the product is taxable or not
    - `taxRate` number, float — The tax rate of the product
    - `compareAtPrice` number, float, nullable — The recommended retail price to compare with the actual price.
    - `taxServiceTypeId` string, nullable — The ID of the tax service of the product
    - `gtin` string
    - `localization` object — Localization of the product for multiple languages
  - `categoryIds` string[] — An array of categories to which the product belongs
  - `voucherSettings` object, nullable — If the product is of type voucher
    - `limitedValidityPeriod` boolean — Whether the voucher should expire
    - `validityConfig` object
      - `amount` number, float
      - `type` number, float
      - `untilEndOfPeriod` boolean
    - `pdfImage` string — A marketing image printed onto voucher pdf
    - `disclaimer` string, nullable — A disclaimer text printed onto voucher pdf
    - `documentTemplateSettings` object
      - `templates` object[]
        - `templateId` string, required — The ID of the document template
        - `format` 'A4' | 'LETTER' | 'LEGAL' | 'BOARDING-PASS' | 'PLASTIC-CARD' | 'CARD' | 'LABEL' | 'CUSTOM' | 'APPLE' | 'GOOGLE', required — The format of document template for the dimensions.
        - `target` 'thermal' | 'digital' | 'wallet', required — The target of document template for which targets it should be used.
        - `type` 'ticket' | 'invoice' | 'voucher' | 'member-card' | 'header-card', required — The type of document template for which document it should be used. ticket = The document template will be used on tickets. invoice = The document template will be used on invoices.
  - `addOnSettings` object, nullable
    - `optOutDescription` string, nullable — The description that is shown to the user if he decides to not buy the addOn
    - `localization` object — Localization of the addOnSettings for multiple languages
  - `donationSettings` object, nullable — Settings for donation products
    - `campaignId` string, required — The ID of the fundraise campaign
    - `fundId` string, required — The ID of the donation fund
  - `sellerId` string, required — The ID of the seller of the product
  - `meta` object — Custom key-value data. Metadata is useful for storing additional, structured information on an object.
  - `localization` object — Localization of the product for multiple languages
  - `createdAt` string, date-time — An ISO timestamp indicating when the product was created
  - `updatedAt` string, date-time — An ISO timestamp indicating when the product was updated

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found

---

[API](https://skmtc.net/vivenu/apis/vivenu-api.md) · [All operations](https://skmtc.net/vivenu/apis/vivenu-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vivenu/vivenu-api/revisions/36be0dca14e7/schema)
