---
title: "Update Products in Bulk"
method: POST
path: "/v1/products/bulk/async"
tags: ["Products"]
---

# Update Products in Bulk

`POST /v1/products/bulk/async`

Update products in one asynchronous operation.

The request can include up to **10 MB** of data.

The response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:

- The status of your request (in queue, in progress, done, or failed)

- Resources that failed to be updated

- The report file with details about the update



If a product object is not found, it is **upserted**. This is shown in the report file in the **GET** Async Action endpoint. The upserted resources have value `false` in the `found` column and `true` in the `updated` column.

This API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.

## Request body

- ProductsUpdateInBulkRequestBody[]
  - `source_id` string, required — Unique product source ID from your inventory system.
  - `name` string — Unique user-defined product name.
  - `price` integer — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
  - `attributes` string[] — A list of product attributes whose values you can customize for given SKUs: `["color","size","ranking"]`. Each child SKU can have a unique value for a given attribute.
  - `image_url` string — The HTTPS URL pointing to the .png or .jpg file that will be used to render the product image.
  - `metadata` object — The metadata object stores all custom attributes assigned to the product. A set of key/value pairs that you can attach to a product object. It can be useful for storing additional information about the product in a structured format.

## Response `202`

Returns the ID of the scheduled asynchronous action. The response informs you that the request has been accepted and the resources will be updated in the repository asynchronously. To check the status and result, copy the `async_action_id` from the response and use it as a query parameter in the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.

- ProductsUpdateInBulkResponseBody — Response to requests that are processed asynchronously.
  - `async_action_id` string, required — The ID of the scheduled asynchronous action.

## Other responses

- `413` — Returns an error if the payload exceeds 10 MB.

---

[API](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions.md) · [All operations](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-api-async-actions/revisions/4982266e0494/schema)
