Skip to main content
POST
/
admin
/
products
/
{id}
/
variants
/
batch
JS SDK
import Medusa from "@medusajs/js-sdk"

export const sdk = new Medusa({
  baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
  debug: import.meta.env.DEV,
  auth: {
    type: "session",
  },
})

sdk.admin.product.batchVariants("prod_123", {
  create: [
    {
      title: "Blue Shirt",
      options: {
        Color: "Blue"
      },
      prices: []
    }
  ],
  update: [
    {
      id: "variant_123",
      title: "Pants"
    }
  ],
  delete: ["variant_123"]
})
.then(({ created, updated, deleted }) => {
  console.log(created, updated, deleted)
})
{
  "created": [
    {
      "prices": [
        {
          "id": "<string>",
          "title": "<string>",
          "currency_code": "usd",
          "amount": 123,
          "raw_amount": {},
          "min_quantity": 123,
          "max_quantity": 123,
          "price_set_id": "<string>",
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z"
        }
      ],
      "id": "<string>",
      "title": "<string>",
      "sku": "<string>",
      "barcode": "<string>",
      "ean": "<string>",
      "upc": "<string>",
      "allow_backorder": true,
      "manage_inventory": true,
      "hs_code": "<string>",
      "origin_country": "<string>",
      "mid_code": "<string>",
      "material": "<string>",
      "weight": 123,
      "length": 123,
      "height": 123,
      "width": 123,
      "options": [
        {
          "id": "<string>",
          "value": "<string>",
          "option": {
            "id": "<string>",
            "title": "<string>",
            "product": {},
            "product_id": "<string>",
            "values": [
              {}
            ],
            "metadata": {},
            "created_at": "2023-11-07T05:31:56Z",
            "updated_at": "2023-11-07T05:31:56Z",
            "deleted_at": "2023-11-07T05:31:56Z"
          },
          "option_id": "<string>",
          "metadata": {},
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z"
        }
      ],
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "deleted_at": "2023-11-07T05:31:56Z",
      "images": [
        {
          "id": "<string>",
          "url": "<string>",
          "rank": 123,
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z",
          "metadata": {}
        }
      ],
      "thumbnail": "<string>",
      "inventory_quantity": 123,
      "variant_rank": 123,
      "product": {},
      "product_id": "<string>",
      "calculated_price": {
        "id": "<string>",
        "calculated_amount": 123,
        "original_amount": 123,
        "currency_code": "usd",
        "original_amount_with_tax": 123,
        "original_amount_without_tax": 123,
        "is_calculated_price_price_list": true,
        "is_calculated_price_tax_inclusive": true,
        "calculated_amount_with_tax": 123,
        "calculated_amount_without_tax": 123,
        "is_original_price_price_list": true,
        "is_original_price_tax_inclusive": true,
        "calculated_price": {},
        "original_price": {}
      },
      "metadata": {},
      "inventory_items": [
        {
          "id": "<string>",
          "variant_id": "<string>",
          "inventory_item_id": "<string>",
          "variant": {},
          "inventory": {
            "id": "<string>",
            "requires_shipping": true,
            "sku": "<string>",
            "origin_country": "<string>",
            "hs_code": "<string>",
            "mid_code": "<string>",
            "material": "<string>",
            "weight": 123,
            "length": 123,
            "height": 123,
            "width": 123,
            "title": "<string>",
            "description": "<string>",
            "thumbnail": "<string>",
            "metadata": {},
            "location_levels": [
              {
                "id": "<string>",
                "created_at": "2023-11-07T05:31:56Z",
                "updated_at": "2023-11-07T05:31:56Z",
                "deleted_at": "2023-11-07T05:31:56Z",
                "inventory_item_id": "<string>",
                "location_id": "<string>",
                "stocked_quantity": 123,
                "reserved_quantity": 123,
                "incoming_quantity": 123,
                "metadata": {},
                "available_quantity": 123,
                "inventory_item": {}
              }
            ]
          },
          "required_quantity": 123
        }
      ],
      "translations": [
        {
          "id": "<string>",
          "reference_id": "prod_123",
          "reference": "product",
          "locale_code": "fr-FR",
          "translations": {
            "title": "Chaussures",
            "description": "Des chaussures élégantes."
          },
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z"
        }
      ]
    }
  ],
  "updated": [
    {
      "prices": [
        {
          "id": "<string>",
          "title": "<string>",
          "currency_code": "usd",
          "amount": 123,
          "raw_amount": {},
          "min_quantity": 123,
          "max_quantity": 123,
          "price_set_id": "<string>",
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z"
        }
      ],
      "id": "<string>",
      "title": "<string>",
      "sku": "<string>",
      "barcode": "<string>",
      "ean": "<string>",
      "upc": "<string>",
      "allow_backorder": true,
      "manage_inventory": true,
      "hs_code": "<string>",
      "origin_country": "<string>",
      "mid_code": "<string>",
      "material": "<string>",
      "weight": 123,
      "length": 123,
      "height": 123,
      "width": 123,
      "options": [
        {
          "id": "<string>",
          "value": "<string>",
          "option": {
            "id": "<string>",
            "title": "<string>",
            "product": {},
            "product_id": "<string>",
            "values": [
              {}
            ],
            "metadata": {},
            "created_at": "2023-11-07T05:31:56Z",
            "updated_at": "2023-11-07T05:31:56Z",
            "deleted_at": "2023-11-07T05:31:56Z"
          },
          "option_id": "<string>",
          "metadata": {},
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z"
        }
      ],
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "deleted_at": "2023-11-07T05:31:56Z",
      "images": [
        {
          "id": "<string>",
          "url": "<string>",
          "rank": 123,
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z",
          "metadata": {}
        }
      ],
      "thumbnail": "<string>",
      "inventory_quantity": 123,
      "variant_rank": 123,
      "product": {},
      "product_id": "<string>",
      "calculated_price": {
        "id": "<string>",
        "calculated_amount": 123,
        "original_amount": 123,
        "currency_code": "usd",
        "original_amount_with_tax": 123,
        "original_amount_without_tax": 123,
        "is_calculated_price_price_list": true,
        "is_calculated_price_tax_inclusive": true,
        "calculated_amount_with_tax": 123,
        "calculated_amount_without_tax": 123,
        "is_original_price_price_list": true,
        "is_original_price_tax_inclusive": true,
        "calculated_price": {},
        "original_price": {}
      },
      "metadata": {},
      "inventory_items": [
        {
          "id": "<string>",
          "variant_id": "<string>",
          "inventory_item_id": "<string>",
          "variant": {},
          "inventory": {
            "id": "<string>",
            "requires_shipping": true,
            "sku": "<string>",
            "origin_country": "<string>",
            "hs_code": "<string>",
            "mid_code": "<string>",
            "material": "<string>",
            "weight": 123,
            "length": 123,
            "height": 123,
            "width": 123,
            "title": "<string>",
            "description": "<string>",
            "thumbnail": "<string>",
            "metadata": {},
            "location_levels": [
              {
                "id": "<string>",
                "created_at": "2023-11-07T05:31:56Z",
                "updated_at": "2023-11-07T05:31:56Z",
                "deleted_at": "2023-11-07T05:31:56Z",
                "inventory_item_id": "<string>",
                "location_id": "<string>",
                "stocked_quantity": 123,
                "reserved_quantity": 123,
                "incoming_quantity": 123,
                "metadata": {},
                "available_quantity": 123,
                "inventory_item": {}
              }
            ]
          },
          "required_quantity": 123
        }
      ],
      "translations": [
        {
          "id": "<string>",
          "reference_id": "prod_123",
          "reference": "product",
          "locale_code": "fr-FR",
          "translations": {
            "title": "Chaussures",
            "description": "Des chaussures élégantes."
          },
          "created_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "deleted_at": "2023-11-07T05:31:56Z"
        }
      ]
    }
  ],
  "deleted": {
    "ids": [
      "<string>"
    ],
    "object": "variant",
    "deleted": true
  }
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string
required

The product's ID.

Query Parameters

fields
string

Comma-separated fields that should be included in the returned data. if a field is prefixed with + it will be added to the default fields, using - will remove it from the default fields. without prefix it will replace the entire default fields.

Body

application/json

The product variants to create, update, or delete.

create
object[]

The product variants to create.

update
object[]

The product variants to update.

delete
string[]

The product variants to delete.

A product variant's ID.

Response

OK

The details of the product variants created, updated, or deleted.

created
object[]
required

The created product variants.

updated
object[]
required

The updated product variants.

deleted
object
required

The details of the deleted product variants.