> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.shipbob.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.shipbob.com/_mcp/server.

# Merge Variants

POST https://api.shipbob.com/2026-01/variant/{variantId}:merge
Content-Type: application/json

Merges multiple product variants into a target variant. Provide an array of variant IDs to merge into the target variant specified in the path. Inventory from the merged variants will be consolidated into the target variant.

Reference: https://developer.shipbob.com/2026-01/api/products/merge-variants

## Authentication

- `Authorization` header (bearer token, required) — Authentication using Personal Access Token (PAT) token
- `Authorization` header (bearer token, required) — OAuth2 authentication using JWT tokens

## Servers

- `https://api.shipbob.com` (https://api.shipbob.com, default)
- `https://sandbox-api.shipbob.com` (https://sandbox-api.shipbob.com)

## Request

### Path parameters

- `variantId` (long, required) — The ID of the variant to use as the merge target

### Body (application/json)

This endpoint expects a list of object.

- `list of object`
  - `id` (long, optional)

## Response

### 201

Created

- `created_on` (datetime, optional) — Timestamp when the product was created
- `id` (long, optional) — Unique identifier for the product
- `name` (string, optional, nullable) — Product name
- `taxonomy` (object, optional) — Product categorization information including category hierarchy
  - `id` (integer, optional, nullable) — Unique identifier for the taxonomy
  - `name` (string, optional, nullable) — Name of this taxonomy category
  - `parent_id` (integer, optional, nullable) — ID of the parent category in the taxonomy hierarchy
  - `parent_name` (string, optional, nullable) — Name of the parent category in the taxonomy hierarchy
  - `path` (string, optional, nullable) — Full hierarchical path of the taxonomy category (e.g., 'Electronics > Computers > Laptops')
- `type` (string, optional, nullable) — Product type (e.g., 'Regular' or 'Bundle')
- `updated_on` (datetime, optional, nullable) — Timestamp when the product was last updated
- `user_id` (long, optional) — ID of the user who owns this product
- `variants` (list of object or object, optional, nullable) — List of variants belonging to this product. Each variant represents a specific SKU.
  - Products.VariantViewModelV5
    - `additional_hazmat_attributes` (object, optional) — Additional hazardous materials attributes for lithium batteries and dangerous goods
      - `charge_state_percentage` (double, optional, nullable)
      - `container_type` (string, optional, nullable)
      - `lithium_battery_packaging` (string, optional, nullable)
      - `lithium_battery_type` (string, optional, nullable)
      - `magnet` (boolean, optional, nullable)
      - `net_volume` (double, optional, nullable)
      - `net_weight` (double, optional, nullable)
      - `container_metal` (boolean, optional, nullable, deprecated)
    - `associated_bundles` (list of object, optional, nullable) — List of bundle products that include this variant as a component
      - `product_id` (long, optional)
      - `product_name` (string, optional, nullable)
      - `quantity` (integer, optional)
      - `variant_id` (long, optional)
      - `variant_sku` (string, optional, nullable)
    - `barcodes` (list of object, optional, nullable) — List of barcodes associated with this variant (UPC, EAN, etc.)
      - `sticker_url` (string, optional, nullable) — URL to download or view a printable barcode sticker
      - `value` (string, optional, nullable) — The barcode value (e.g., UPC, EAN, GTIN, or other barcode format)
    - `bundle_definition` (list of object, optional, nullable) — If this variant is a bundle, defines which variants and quantities make up the bundle
      - `product_id` (long, optional)
      - `quantity` (integer, optional)
      - `variant_id` (long, optional)
      - `variant_name` (string, optional, nullable)
      - `variant_sku` (string, optional, nullable)
    - `channel_metadata` (list of object or object or object or object, optional, nullable) — Platform-specific metadata for sales channels (e.g., Amazon ASIN, Shopify product IDs)
      - Products.ChannelMetadataViewModel
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
      - Products.AmazonChannelMetadataViewModel
        - `asin` (string, optional, nullable)
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `fnsku` (string, optional, nullable)
        - `fulfillment_channel` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
      - Products.BigCommerceChannelMetadataViewModel
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `platform_product_id` (long, optional, nullable)
        - `platform_variant_id` (long, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
      - Products.ShopifyChannelMetadataViewModel
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
    - `created_on` (datetime, optional) — Timestamp when the variant was created
    - `customs` (object, optional) — Customs and international shipping information (tariff codes, country of origin, declared value)
      - `country_code_of_origin` (string, optional, nullable) — ISO 3166-1 alpha-2 country code where the product was manufactured (e.g., 'US', 'CN', 'MX')
      - `currency` (string, optional, nullable) — ISO 4217 currency code for the declared value (e.g., 'USD', 'EUR', 'GBP')
      - `description` (string, optional, nullable) — Product description for customs documentation
      - `hs_tariff_code` (string, optional, nullable) — Harmonized System tariff code used for international customs classification (6-10 digits)
      - `is321_eligible` (boolean, optional) — Flag indicating eligibility for Section 321 de minimis exemption (imports under $800 to US)
      - `value` (integer, optional, nullable) — Declared customs value of the product for international shipping
    - `dimension` (object, optional) — Physical dimensions of the variant (length, width, height)
      - `height` (double, optional) — Height of the product
      - `is_locked` (boolean, optional) — Flag indicating whether dimensions are locked and cannot be automatically recalculated by the system
      - `length` (double, optional) — Length of the product
      - `source` (string, optional, nullable) — Source of the dimension data (e.g., 'User', 'System', 'Warehouse')
      - `unit` (string, optional, nullable) — Unit of measurement for dimensions (e.g., 'in', 'cm')
      - `width` (double, optional) — Width of the product
    - `fulfillment_settings` (object, optional) — Fulfillment-specific settings (Prop 65, dangerous goods, serial scanning, case pick)
      - `dangerous_goods` (boolean, optional) — Flag indicating whether the product is classified as dangerous goods (hazmat) requiring special handling
      - `is_bpm_parcel` (boolean, optional) — Flag indicating whether this product qualifies for Business Parcel Manager (BPM) parcel shipping
      - `is_case_pick` (boolean, optional) — Flag indicating whether this product should be picked by the case rather than individual units
      - `msds_url` (string, optional, nullable) — URL to the Material Safety Data Sheet (MSDS) for hazardous materials
      - `requires_prop65` (boolean, optional) — Flag indicating California Proposition 65 warning label requirement for products containing chemicals known to cause cancer or reproductive harm
      - `serial_scan` (object, optional) — Serial number scanning configuration for tracking individual units
        - `exact_character_length` (integer, optional, nullable)
        - `is_enabled` (boolean, optional)
        - `prefix` (string, optional, nullable)
        - `suffix` (string, optional, nullable)
    - `gtin` (string, optional, nullable) — Global Trade Item Number - standardized product identifier
    - `id` (long, optional) — Unique identifier for the variant
    - `inventory` (object, optional) — Current inventory information including on-hand quantity
      - `inventory_id` (integer, optional, nullable)
      - `on_hand_qty` (integer, optional)
    - `is_digital` (boolean, optional) — Flag indicating whether this is a digital product (no physical fulfillment)
    - `is_image_uploaded` (boolean, optional) — Flag indicating whether a product image has been uploaded for this variant
    - `lot_information` (object, optional) — Lot tracking settings including whether lot tracking is enabled and minimum shelf life requirements
      - `is_lot` (boolean, optional)
      - `minimum_shelf_life_days` (integer, optional, nullable)
    - `merge_children` (list of object, optional, nullable) — List of variants that have been merged into this variant
      - `channel_ids` (list of long, optional, nullable)
      - `completed_at` (datetime, optional)
      - `inventory_id` (long, optional, nullable)
      - `variant_id` (long, optional)
      - `variant_name` (string, optional, nullable)
    - `name` (string, optional, nullable) — Variant name or descriptor
    - `packaging_material_type` (object, optional) — Type of packaging material used for this variant (ID and name)
      - `id` (long, optional)
      - `name` (string, optional, nullable)
    - `packaging_requirement` (object, optional) — Special packaging requirements for this variant (ID and name)
      - `id` (long, optional)
      - `name` (string, optional, nullable)
    - `return_preferences` (object, optional) — Customer return handling preferences including primary and backup actions
      - `backup_action` (object, optional) — Backup action to take if primary action cannot be completed
        - `id` (long, optional)
        - `name` (string, optional, nullable)
      - `instructions` (string, optional, nullable) — Special instructions for handling returned items
      - `primary_action` (object, optional) — Primary action to take when product is returned by customer (e.g., 'Restock', 'Dispose', 'Return to Sender')
        - `id` (long, optional)
        - `name` (string, optional, nullable)
      - `return_to_sender_backup_action` (object, optional) — Backup action for undeliverable packages if primary action cannot be completed
        - `id` (long, optional)
        - `name` (string, optional, nullable)
      - `return_to_sender_primary_action` (object, optional) — Primary action for undeliverable packages that are returned to sender
        - `id` (long, optional)
        - `name` (string, optional, nullable)
    - `reviews_pending` (list of string, optional, nullable) — List of pending review types for this variant (e.g., compliance checks, quality reviews)
    - `sku` (string, optional, nullable) — Stock Keeping Unit - unique identifier for the variant used in inventory management
    - `status` (string, optional, nullable) — Current status of the variant (e.g., 'Active', 'Inactive')
    - `upc` (string, optional, nullable) — Universal Product Code - 12-digit barcode identifier
    - `updated_on` (datetime, optional, nullable) — Timestamp when the variant was last updated
    - `weight` (object, optional) — Weight of the variant including unit of measure
      - `unit` (string, optional, nullable) — Unit of measurement for weight (e.g., 'lb', 'oz', 'kg', 'g')
      - `weight` (double, optional) — Weight value of the product
  - Products.VariantInternalViewModelV5
    - `additional_hazmat_attributes` (object, optional) — Additional hazardous materials attributes for lithium batteries and dangerous goods
      - `charge_state_percentage` (double, optional, nullable)
      - `container_type` (string, optional, nullable)
      - `lithium_battery_packaging` (string, optional, nullable)
      - `lithium_battery_type` (string, optional, nullable)
      - `magnet` (boolean, optional, nullable)
      - `net_volume` (double, optional, nullable)
      - `net_weight` (double, optional, nullable)
      - `container_metal` (boolean, optional, nullable, deprecated)
    - `associated_bundles` (list of object, optional, nullable) — List of bundle products that include this variant as a component
      - `product_id` (long, optional)
      - `product_name` (string, optional, nullable)
      - `quantity` (integer, optional)
      - `variant_id` (long, optional)
      - `variant_sku` (string, optional, nullable)
    - `barcodes` (list of object, optional, nullable) — List of barcodes associated with this variant (UPC, EAN, etc.)
      - `sticker_url` (string, optional, nullable) — URL to download or view a printable barcode sticker
      - `value` (string, optional, nullable) — The barcode value (e.g., UPC, EAN, GTIN, or other barcode format)
    - `bundle_definition` (list of object, optional, nullable) — If this variant is a bundle, defines which variants and quantities make up the bundle
      - `product_id` (long, optional)
      - `quantity` (integer, optional)
      - `variant_id` (long, optional)
      - `variant_name` (string, optional, nullable)
      - `variant_sku` (string, optional, nullable)
    - `channel_metadata` (list of object or object or object or object, optional, nullable) — Platform-specific metadata for sales channels (e.g., Amazon ASIN, Shopify product IDs)
      - Products.ChannelMetadataViewModel
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
      - Products.AmazonChannelMetadataViewModel
        - `asin` (string, optional, nullable)
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `fnsku` (string, optional, nullable)
        - `fulfillment_channel` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
      - Products.BigCommerceChannelMetadataViewModel
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `platform_product_id` (long, optional, nullable)
        - `platform_variant_id` (long, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
      - Products.ShopifyChannelMetadataViewModel
        - `channel_id` (long, optional)
        - `channel_name` (string, optional, nullable)
        - `currency` (string, optional, nullable)
        - `id` (long, optional)
        - `is_inventory_sync_enabled` (boolean, optional)
        - `legacy_product_id` (long, optional, nullable)
        - `platform` (string, optional, nullable)
        - `platform_identifier` (string, optional, nullable)
        - `platform_inventory_item_id` (string, optional, nullable)
        - `price` (double, optional)
        - `seller_sku` (string, optional, nullable)
    - `compliance` (object, optional)
      - `category` (list of string, optional, nullable)
      - `reasons` (list of string, optional, nullable)
      - `status` (string, optional, nullable)
    - `created_on` (datetime, optional) — Timestamp when the variant was created
    - `customs` (object, optional) — Customs and international shipping information (tariff codes, country of origin, declared value)
      - `country_code_of_origin` (string, optional, nullable) — ISO 3166-1 alpha-2 country code where the product was manufactured (e.g., 'US', 'CN', 'MX')
      - `currency` (string, optional, nullable) — ISO 4217 currency code for the declared value (e.g., 'USD', 'EUR', 'GBP')
      - `description` (string, optional, nullable) — Product description for customs documentation
      - `hs_tariff_code` (string, optional, nullable) — Harmonized System tariff code used for international customs classification (6-10 digits)
      - `is321_eligible` (boolean, optional) — Flag indicating eligibility for Section 321 de minimis exemption (imports under $800 to US)
      - `value` (integer, optional, nullable) — Declared customs value of the product for international shipping
    - `dimension` (object, optional) — Physical dimensions of the variant (length, width, height)
      - `height` (double, optional) — Height of the product
      - `is_locked` (boolean, optional) — Flag indicating whether dimensions are locked and cannot be automatically recalculated by the system
      - `length` (double, optional) — Length of the product
      - `source` (string, optional, nullable) — Source of the dimension data (e.g., 'User', 'System', 'Warehouse')
      - `unit` (string, optional, nullable) — Unit of measurement for dimensions (e.g., 'in', 'cm')
      - `width` (double, optional) — Width of the product
    - `fulfillment_settings` (object, optional) — Fulfillment-specific settings (Prop 65, dangerous goods, serial scanning, case pick)
      - `dangerous_goods` (boolean, optional) — Flag indicating whether the product is classified as dangerous goods (hazmat) requiring special handling
      - `is_bpm_parcel` (boolean, optional) — Flag indicating whether this product qualifies for Business Parcel Manager (BPM) parcel shipping
      - `is_case_pick` (boolean, optional) — Flag indicating whether this product should be picked by the case rather than individual units
      - `msds_url` (string, optional, nullable) — URL to the Material Safety Data Sheet (MSDS) for hazardous materials
      - `requires_prop65` (boolean, optional) — Flag indicating California Proposition 65 warning label requirement for products containing chemicals known to cause cancer or reproductive harm
      - `serial_scan` (object, optional) — Serial number scanning configuration for tracking individual units
        - `exact_character_length` (integer, optional, nullable)
        - `is_enabled` (boolean, optional)
        - `prefix` (string, optional, nullable)
        - `suffix` (string, optional, nullable)
    - `gtin` (string, optional, nullable) — Global Trade Item Number - standardized product identifier
    - `id` (long, optional) — Unique identifier for the variant
    - `inventory` (object, optional) — Current inventory information including on-hand quantity
      - `inventory_id` (integer, optional, nullable)
      - `on_hand_qty` (integer, optional)
    - `is_digital` (boolean, optional) — Flag indicating whether this is a digital product (no physical fulfillment)
    - `is_image_uploaded` (boolean, optional) — Flag indicating whether a product image has been uploaded for this variant
    - `lot_information` (object, optional) — Lot tracking settings including whether lot tracking is enabled and minimum shelf life requirements
      - `is_lot` (boolean, optional)
      - `minimum_shelf_life_days` (integer, optional, nullable)
    - `merge_children` (list of object, optional, nullable) — List of variants that have been merged into this variant
      - `channel_ids` (list of long, optional, nullable)
      - `completed_at` (datetime, optional)
      - `inventory_id` (long, optional, nullable)
      - `variant_id` (long, optional)
      - `variant_name` (string, optional, nullable)
    - `name` (string, optional, nullable) — Variant name or descriptor
    - `packaging_material_type` (object, optional) — Type of packaging material used for this variant (ID and name)
      - `id` (long, optional)
      - `name` (string, optional, nullable)
    - `packaging_requirement` (object, optional) — Special packaging requirements for this variant (ID and name)
      - `id` (long, optional)
      - `name` (string, optional, nullable)
    - `return_preferences` (object, optional) — Customer return handling preferences including primary and backup actions
      - `backup_action` (object, optional) — Backup action to take if primary action cannot be completed
        - `id` (long, optional)
        - `name` (string, optional, nullable)
      - `instructions` (string, optional, nullable) — Special instructions for handling returned items
      - `primary_action` (object, optional) — Primary action to take when product is returned by customer (e.g., 'Restock', 'Dispose', 'Return to Sender')
        - `id` (long, optional)
        - `name` (string, optional, nullable)
      - `return_to_sender_backup_action` (object, optional) — Backup action for undeliverable packages if primary action cannot be completed
        - `id` (long, optional)
        - `name` (string, optional, nullable)
      - `return_to_sender_primary_action` (object, optional) — Primary action for undeliverable packages that are returned to sender
        - `id` (long, optional)
        - `name` (string, optional, nullable)
    - `reviews_pending` (list of string, optional, nullable) — List of pending review types for this variant (e.g., compliance checks, quality reviews)
    - `sku` (string, optional, nullable) — Stock Keeping Unit - unique identifier for the variant used in inventory management
    - `status` (string, optional, nullable) — Current status of the variant (e.g., 'Active', 'Inactive')
    - `upc` (string, optional, nullable) — Universal Product Code - 12-digit barcode identifier
    - `updated_on` (datetime, optional, nullable) — Timestamp when the variant was last updated
    - `weight` (object, optional) — Weight of the variant including unit of measure
      - `unit` (string, optional, nullable) — Unit of measurement for weight (e.g., 'lb', 'oz', 'kg', 'g')
      - `weight` (double, optional) — Weight value of the product

## Examples

**Request**

```json
[
  {
    "id": 0
  }
]
```

**Response**

```json
{
  "created_on": "2019-08-24T14:15:22+00:00",
  "id": 0,
  "name": "string",
  "taxonomy": {
    "id": 0,
    "name": "string",
    "parent_id": 0,
    "parent_name": "string",
    "path": "string"
  },
  "type": "string",
  "updated_on": "2019-08-24T14:15:22+00:00",
  "user_id": 0,
  "variants": [
    {
      "barcodes": [
        {
          "sticker_url": "string",
          "value": "string"
        }
      ],
      "channel_metadata": [
        {
          "channel_id": 0,
          "channel_name": "string",
          "currency": "string",
          "id": 0,
          "is_inventory_sync_enabled": true,
          "legacy_product_id": 0,
          "platform": "string",
          "platform_identifier": "string",
          "platform_inventory_item_id": "string",
          "price": 0.1,
          "seller_sku": "string"
        }
      ],
      "additional_hazmat_attributes": {
        "charge_state_percentage": 0.1,
        "container_metal": true,
        "container_type": "string",
        "lithium_battery_packaging": "string",
        "lithium_battery_type": "string",
        "magnet": true,
        "net_volume": 0.1,
        "net_weight": 0.1
      },
      "associated_bundles": [
        {
          "product_id": 0,
          "product_name": "string",
          "quantity": 0,
          "variant_id": 0,
          "variant_sku": "string"
        }
      ],
      "bundle_definition": [
        {
          "product_id": 0,
          "quantity": 0,
          "variant_id": 0,
          "variant_name": "string",
          "variant_sku": "string"
        }
      ],
      "created_on": "2019-08-24T14:15:22+00:00",
      "customs": {
        "country_code_of_origin": "string",
        "currency": "string",
        "description": "string",
        "hs_tariff_code": "string",
        "is321_eligible": true,
        "value": 0
      },
      "dimension": {
        "height": 0.1,
        "is_locked": true,
        "length": 0.1,
        "source": "string",
        "unit": "string",
        "width": 0.1
      },
      "fulfillment_settings": {
        "dangerous_goods": true,
        "is_bpm_parcel": true,
        "is_case_pick": true,
        "msds_url": "string",
        "requires_prop65": true,
        "serial_scan": {
          "exact_character_length": 0,
          "is_enabled": true,
          "prefix": "string",
          "suffix": "string"
        }
      },
      "gtin": "string",
      "id": 0,
      "inventory": {
        "inventory_id": 0,
        "on_hand_qty": 0
      },
      "is_digital": true,
      "is_image_uploaded": true,
      "lot_information": {
        "is_lot": true,
        "minimum_shelf_life_days": 0
      },
      "merge_children": [
        {
          "channel_ids": [
            0
          ],
          "completed_at": "2019-08-24T14:15:22+00:00",
          "inventory_id": 0,
          "variant_id": 0,
          "variant_name": "string"
        }
      ],
      "name": "string",
      "packaging_material_type": {
        "id": 0,
        "name": "string"
      },
      "packaging_requirement": {
        "id": 0,
        "name": "string"
      },
      "return_preferences": {
        "backup_action": {
          "id": 0,
          "name": "string"
        },
        "instructions": "string",
        "primary_action": {
          "id": 0,
          "name": "string"
        },
        "return_to_sender_backup_action": {
          "id": 0,
          "name": "string"
        },
        "return_to_sender_primary_action": {
          "id": 0,
          "name": "string"
        }
      },
      "reviews_pending": [
        "string"
      ],
      "sku": "string",
      "status": "string",
      "upc": "string",
      "updated_on": "2019-08-24T14:15:22+00:00",
      "weight": {
        "unit": "string",
        "weight": 0.1
      }
    }
  ]
}
```

**SDK Code**

```python default
import requests

url = "https://api.shipbob.com/2026-01/variant/1:merge"

payload = [{ "id": 0 }]
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript default
const url = 'https://api.shipbob.com/2026-01/variant/1:merge';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '[{"id":0}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go default
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.shipbob.com/2026-01/variant/1:merge"

	payload := strings.NewReader("[\n  {\n    \"id\": 0\n  }\n]")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby default
require 'uri'
require 'net/http'

url = URI("https://api.shipbob.com/2026-01/variant/1:merge")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"id\": 0\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java default
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.shipbob.com/2026-01/variant/1:merge")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"id\": 0\n  }\n]")
  .asString();
```

```php default
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.shipbob.com/2026-01/variant/1:merge', [
  'body' => '[
  {
    "id": 0
  }
]',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp default
using RestSharp;

var client = new RestClient("https://api.shipbob.com/2026-01/variant/1:merge");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"id\": 0\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [["id": 0]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.shipbob.com/2026-01/variant/1:merge")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```