For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see https://developer-stage.shipbob.dev/2025-07/api/products/llms.txt. For full documentation content, see https://developer-stage.shipbob.dev/2025-07/api/products/llms-full.txt.

# Merge Variants

POST https://sandbox-api.shipbob.com/2025-07/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-stage.shipbob.dev/api/products/merge-variants

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: api-2025-07
  version: 1.0.0
paths:
  /2025-07/variant/{variantId}:merge:
    post:
      operationId: merge-variants
      summary: Merge Variants
      description: >-
        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.
      tags:
        - subpackage_products
      parameters:
        - name: variantId
          in: path
          description: |
            The ID of the variant to use as the merge target
          required: true
          schema:
            type: string
            format: int64
        - name: Authorization
          in: header
          description: Authentication using Personal Access Token (PAT) token
          required: true
          schema:
            type: string
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Products.ProductViewModelV5'
      requestBody:
        description: The variants that should be merged to the target variant
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Products.MergeVariantRequestModelArray'
servers:
  - url: https://sandbox-api.shipbob.com
components:
  schemas:
    Products.MergeVariantRequestModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
      title: Products.MergeVariantRequestModel
    Products.MergeVariantRequestModelArray:
      type: array
      items:
        $ref: '#/components/schemas/Products.MergeVariantRequestModel'
      title: Products.MergeVariantRequestModelArray
    Products.TaxonomyInformationViewModel:
      type: object
      properties:
        id:
          type:
            - integer
            - 'null'
          description: Unique identifier for the taxonomy
        name:
          type:
            - string
            - 'null'
          description: Name of this taxonomy category
        parent_id:
          type:
            - integer
            - 'null'
          description: ID of the parent category in the taxonomy hierarchy
        parent_name:
          type:
            - string
            - 'null'
          description: Name of the parent category in the taxonomy hierarchy
        path:
          type:
            - string
            - 'null'
          description: >-
            Full hierarchical path of the taxonomy category (e.g., 'Electronics
            > Computers > Laptops')
      title: Products.TaxonomyInformationViewModel
    Products.AdditionalHazmatAttributesViewModel:
      type: object
      properties:
        charge_state_percentage:
          type:
            - number
            - 'null'
          format: double
        container_metal:
          type:
            - boolean
            - 'null'
        container_type:
          type:
            - string
            - 'null'
        lithium_battery_packaging:
          type:
            - string
            - 'null'
        lithium_battery_type:
          type:
            - string
            - 'null'
        magnet:
          type:
            - boolean
            - 'null'
        net_volume:
          type:
            - number
            - 'null'
          format: double
        net_weight:
          type:
            - number
            - 'null'
          format: double
      title: Products.AdditionalHazmatAttributesViewModel
    Products.AssociatedBundlesViewModel:
      type: object
      properties:
        product_id:
          type: integer
          format: int64
        product_name:
          type:
            - string
            - 'null'
        quantity:
          type: integer
        variant_id:
          type: integer
          format: int64
        variant_sku:
          type:
            - string
            - 'null'
      title: Products.AssociatedBundlesViewModel
    Products.BundleDefinitionViewModel:
      type: object
      properties:
        product_id:
          type: integer
          format: int64
        quantity:
          type: integer
        variant_id:
          type: integer
          format: int64
        variant_name:
          type:
            - string
            - 'null'
        variant_sku:
          type:
            - string
            - 'null'
      title: Products.BundleDefinitionViewModel
    Products.CustomsViewModel:
      type: object
      properties:
        country_code_of_origin:
          type:
            - string
            - 'null'
          description: >-
            ISO 3166-1 alpha-2 country code where the product was manufactured
            (e.g., 'US', 'CN', 'MX')
        currency:
          type:
            - string
            - 'null'
          description: >-
            ISO 4217 currency code for the declared value (e.g., 'USD', 'EUR',
            'GBP')
        description:
          type:
            - string
            - 'null'
          description: Product description for customs documentation
        hs_tariff_code:
          type:
            - string
            - 'null'
          description: >-
            Harmonized System tariff code used for international customs
            classification (6-10 digits)
        is321_eligible:
          type: boolean
          description: >-
            Flag indicating eligibility for Section 321 de minimis exemption
            (imports under $800 to US)
        value:
          type:
            - integer
            - 'null'
          description: Declared customs value of the product for international shipping
      title: Products.CustomsViewModel
    Products.DimensionViewModel:
      type: object
      properties:
        height:
          type: number
          format: double
          description: Height of the product
        is_locked:
          type: boolean
          description: >-
            Flag indicating whether dimensions are locked and cannot be
            automatically recalculated by the system
        length:
          type: number
          format: double
          description: Length of the product
        source:
          type:
            - string
            - 'null'
          description: Source of the dimension data (e.g., 'User', 'System', 'Warehouse')
        unit:
          type:
            - string
            - 'null'
          description: Unit of measurement for dimensions (e.g., 'in', 'cm')
        width:
          type: number
          format: double
          description: Width of the product
      title: Products.DimensionViewModel
    Products.SerialScanViewModel:
      type: object
      properties:
        exact_character_length:
          type:
            - integer
            - 'null'
        is_enabled:
          type: boolean
        prefix:
          type:
            - string
            - 'null'
        suffix:
          type:
            - string
            - 'null'
      title: Products.SerialScanViewModel
    Products.FulfillmentSettingsViewModel:
      type: object
      properties:
        dangerous_goods:
          type: boolean
          description: >-
            Flag indicating whether the product is classified as dangerous goods
            (hazmat) requiring special handling
        is_bpm_parcel:
          type: boolean
          description: >-
            Flag indicating whether this product qualifies for Business Parcel
            Manager (BPM) parcel shipping
        is_case_pick:
          type: boolean
          description: >-
            Flag indicating whether this product should be picked by the case
            rather than individual units
        msds_url:
          type:
            - string
            - 'null'
          description: URL to the Material Safety Data Sheet (MSDS) for hazardous materials
        requires_prop65:
          type: boolean
          description: >-
            Flag indicating California Proposition 65 warning label requirement
            for products containing chemicals known to cause cancer or
            reproductive harm
        serial_scan:
          $ref: '#/components/schemas/Products.SerialScanViewModel'
          description: Serial number scanning configuration for tracking individual units
      title: Products.FulfillmentSettingsViewModel
    Products.InventoryViewModel:
      type: object
      properties:
        inventory_id:
          type:
            - integer
            - 'null'
        on_hand_qty:
          type: integer
      title: Products.InventoryViewModel
    Products.LotInformationViewModel:
      type: object
      properties:
        is_lot:
          type: boolean
        minimum_shelf_life_days:
          type:
            - integer
            - 'null'
      title: Products.LotInformationViewModel
    Products.MergedChildrenViewModel:
      type: object
      properties:
        channel_ids:
          type:
            - array
            - 'null'
          items:
            type: integer
            format: int64
        completed_at:
          type: string
          format: date-time
        inventory_id:
          type:
            - integer
            - 'null'
          format: int64
        variant_id:
          type: integer
          format: int64
        variant_name:
          type:
            - string
            - 'null'
      title: Products.MergedChildrenViewModel
    Products.EnumViewModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type:
            - string
            - 'null'
      title: Products.EnumViewModel
    Products.ReturnPreferencesViewModel:
      type: object
      properties:
        backup_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Backup action to take if primary action cannot be completed
        instructions:
          type:
            - string
            - 'null'
          description: Special instructions for handling returned items
        primary_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: >-
            Primary action to take when product is returned by customer (e.g.,
            'Restock', 'Dispose', 'Return to Sender')
        return_to_sender_backup_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: >-
            Backup action for undeliverable packages if primary action cannot be
            completed
        return_to_sender_primary_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: >-
            Primary action for undeliverable packages that are returned to
            sender
      title: Products.ReturnPreferencesViewModel
    Products.WeightViewModel:
      type: object
      properties:
        unit:
          type:
            - string
            - 'null'
          description: Unit of measurement for weight (e.g., 'lb', 'oz', 'kg', 'g')
        weight:
          type: number
          format: double
          description: Weight value of the product
      title: Products.WeightViewModel
    Products.BarcodeViewModel:
      type: object
      properties:
        sticker_url:
          type:
            - string
            - 'null'
          description: URL to download or view a printable barcode sticker
        value:
          type:
            - string
            - 'null'
          description: The barcode value (e.g., UPC, EAN, GTIN, or other barcode format)
      title: Products.BarcodeViewModel
    Products.ChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type:
            - string
            - 'null'
        currency:
          type:
            - string
            - 'null'
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type:
            - integer
            - 'null'
          format: int64
        platform:
          type:
            - string
            - 'null'
        platform_identifier:
          type:
            - string
            - 'null'
        platform_inventory_item_id:
          type:
            - string
            - 'null'
        price:
          type: number
          format: double
        seller_sku:
          type:
            - string
            - 'null'
      title: Products.ChannelMetadataViewModel
    Products.AmazonChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type:
            - string
            - 'null'
        currency:
          type:
            - string
            - 'null'
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type:
            - integer
            - 'null'
          format: int64
        platform:
          type:
            - string
            - 'null'
        platform_identifier:
          type:
            - string
            - 'null'
        platform_inventory_item_id:
          type:
            - string
            - 'null'
        price:
          type: number
          format: double
        seller_sku:
          type:
            - string
            - 'null'
        asin:
          type:
            - string
            - 'null'
        fnsku:
          type:
            - string
            - 'null'
        fulfillment_channel:
          type:
            - string
            - 'null'
      title: Products.AmazonChannelMetadataViewModel
    Products.BigCommerceChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type:
            - string
            - 'null'
        currency:
          type:
            - string
            - 'null'
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type:
            - integer
            - 'null'
          format: int64
        platform:
          type:
            - string
            - 'null'
        platform_identifier:
          type:
            - string
            - 'null'
        platform_inventory_item_id:
          type:
            - string
            - 'null'
        price:
          type: number
          format: double
        seller_sku:
          type:
            - string
            - 'null'
        platform_product_id:
          type:
            - integer
            - 'null'
          format: int64
        platform_variant_id:
          type:
            - integer
            - 'null'
          format: int64
      title: Products.BigCommerceChannelMetadataViewModel
    Products.ShopifyChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type:
            - string
            - 'null'
        currency:
          type:
            - string
            - 'null'
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type:
            - integer
            - 'null'
          format: int64
        platform:
          type:
            - string
            - 'null'
        platform_identifier:
          type:
            - string
            - 'null'
        platform_inventory_item_id:
          type:
            - string
            - 'null'
        price:
          type: number
          format: double
        seller_sku:
          type:
            - string
            - 'null'
      title: Products.ShopifyChannelMetadataViewModel
    ProductsVariantViewModelV5ChannelMetadataItems:
      oneOf:
        - $ref: '#/components/schemas/Products.ChannelMetadataViewModel'
        - $ref: '#/components/schemas/Products.AmazonChannelMetadataViewModel'
        - $ref: '#/components/schemas/Products.BigCommerceChannelMetadataViewModel'
        - $ref: '#/components/schemas/Products.ShopifyChannelMetadataViewModel'
      title: ProductsVariantViewModelV5ChannelMetadataItems
    Products.VariantViewModelV5:
      type: object
      properties:
        additional_hazmat_attributes:
          $ref: '#/components/schemas/Products.AdditionalHazmatAttributesViewModel'
          description: >-
            Additional hazardous materials attributes for lithium batteries and
            dangerous goods
        associated_bundles:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.AssociatedBundlesViewModel'
          description: List of bundle products that include this variant as a component
        bundle_definition:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.BundleDefinitionViewModel'
          description: >-
            If this variant is a bundle, defines which variants and quantities
            make up the bundle
        created_on:
          type: string
          format: date-time
          description: Timestamp when the variant was created
        customs:
          $ref: '#/components/schemas/Products.CustomsViewModel'
          description: >-
            Customs and international shipping information (tariff codes,
            country of origin, declared value)
        dimension:
          $ref: '#/components/schemas/Products.DimensionViewModel'
          description: Physical dimensions of the variant (length, width, height)
        fulfillment_settings:
          $ref: '#/components/schemas/Products.FulfillmentSettingsViewModel'
          description: >-
            Fulfillment-specific settings (Prop 65, dangerous goods, serial
            scanning, case pick)
        gtin:
          type:
            - string
            - 'null'
          description: Global Trade Item Number - standardized product identifier
        id:
          type: integer
          format: int64
          description: Unique identifier for the variant
        inventory:
          $ref: '#/components/schemas/Products.InventoryViewModel'
          description: Current inventory information including on-hand quantity
        is_digital:
          type: boolean
          description: >-
            Flag indicating whether this is a digital product (no physical
            fulfillment)
        is_image_uploaded:
          type: boolean
          description: >-
            Flag indicating whether a product image has been uploaded for this
            variant
        lot_information:
          $ref: '#/components/schemas/Products.LotInformationViewModel'
          description: >-
            Lot tracking settings including whether lot tracking is enabled and
            minimum shelf life requirements
        merge_children:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.MergedChildrenViewModel'
          description: List of variants that have been merged into this variant
        name:
          type:
            - string
            - 'null'
          description: Variant name or descriptor
        packaging_material_type:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Type of packaging material used for this variant (ID and name)
        packaging_requirement:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Special packaging requirements for this variant (ID and name)
        return_preferences:
          $ref: '#/components/schemas/Products.ReturnPreferencesViewModel'
          description: >-
            Customer return handling preferences including primary and backup
            actions
        reviews_pending:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            List of pending review types for this variant (e.g., compliance
            checks, quality reviews)
        sku:
          type:
            - string
            - 'null'
          description: >-
            Stock Keeping Unit - unique identifier for the variant used in
            inventory management
        status:
          type:
            - string
            - 'null'
          description: Current status of the variant (e.g., 'Active', 'Inactive')
        upc:
          type:
            - string
            - 'null'
          description: Universal Product Code - 12-digit barcode identifier
        updated_on:
          type:
            - string
            - 'null'
          format: date-time
          description: Timestamp when the variant was last updated
        weight:
          $ref: '#/components/schemas/Products.WeightViewModel'
          description: Weight of the variant including unit of measure
        barcodes:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.BarcodeViewModel'
          description: List of barcodes associated with this variant (UPC, EAN, etc.)
        channel_metadata:
          type:
            - array
            - 'null'
          items:
            $ref: >-
              #/components/schemas/ProductsVariantViewModelV5ChannelMetadataItems
          description: >-
            Platform-specific metadata for sales channels (e.g., Amazon ASIN,
            Shopify product IDs)
      title: Products.VariantViewModelV5
    Products.ComplianceViewModel:
      type: object
      properties:
        category:
          type:
            - array
            - 'null'
          items:
            type: string
        reasons:
          type:
            - array
            - 'null'
          items:
            type: string
        status:
          type:
            - string
            - 'null'
      title: Products.ComplianceViewModel
    Products.VariantInternalViewModelV5:
      type: object
      properties:
        additional_hazmat_attributes:
          $ref: '#/components/schemas/Products.AdditionalHazmatAttributesViewModel'
          description: >-
            Additional hazardous materials attributes for lithium batteries and
            dangerous goods
        associated_bundles:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.AssociatedBundlesViewModel'
          description: List of bundle products that include this variant as a component
        bundle_definition:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.BundleDefinitionViewModel'
          description: >-
            If this variant is a bundle, defines which variants and quantities
            make up the bundle
        created_on:
          type: string
          format: date-time
          description: Timestamp when the variant was created
        customs:
          $ref: '#/components/schemas/Products.CustomsViewModel'
          description: >-
            Customs and international shipping information (tariff codes,
            country of origin, declared value)
        dimension:
          $ref: '#/components/schemas/Products.DimensionViewModel'
          description: Physical dimensions of the variant (length, width, height)
        fulfillment_settings:
          $ref: '#/components/schemas/Products.FulfillmentSettingsViewModel'
          description: >-
            Fulfillment-specific settings (Prop 65, dangerous goods, serial
            scanning, case pick)
        gtin:
          type:
            - string
            - 'null'
          description: Global Trade Item Number - standardized product identifier
        id:
          type: integer
          format: int64
          description: Unique identifier for the variant
        inventory:
          $ref: '#/components/schemas/Products.InventoryViewModel'
          description: Current inventory information including on-hand quantity
        is_digital:
          type: boolean
          description: >-
            Flag indicating whether this is a digital product (no physical
            fulfillment)
        is_image_uploaded:
          type: boolean
          description: >-
            Flag indicating whether a product image has been uploaded for this
            variant
        lot_information:
          $ref: '#/components/schemas/Products.LotInformationViewModel'
          description: >-
            Lot tracking settings including whether lot tracking is enabled and
            minimum shelf life requirements
        merge_children:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.MergedChildrenViewModel'
          description: List of variants that have been merged into this variant
        name:
          type:
            - string
            - 'null'
          description: Variant name or descriptor
        packaging_material_type:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Type of packaging material used for this variant (ID and name)
        packaging_requirement:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Special packaging requirements for this variant (ID and name)
        return_preferences:
          $ref: '#/components/schemas/Products.ReturnPreferencesViewModel'
          description: >-
            Customer return handling preferences including primary and backup
            actions
        reviews_pending:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            List of pending review types for this variant (e.g., compliance
            checks, quality reviews)
        sku:
          type:
            - string
            - 'null'
          description: >-
            Stock Keeping Unit - unique identifier for the variant used in
            inventory management
        status:
          type:
            - string
            - 'null'
          description: Current status of the variant (e.g., 'Active', 'Inactive')
        upc:
          type:
            - string
            - 'null'
          description: Universal Product Code - 12-digit barcode identifier
        updated_on:
          type:
            - string
            - 'null'
          format: date-time
          description: Timestamp when the variant was last updated
        weight:
          $ref: '#/components/schemas/Products.WeightViewModel'
          description: Weight of the variant including unit of measure
        barcodes:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Products.BarcodeViewModel'
          description: List of barcodes associated with this variant (UPC, EAN, etc.)
        channel_metadata:
          type:
            - array
            - 'null'
          items:
            $ref: >-
              #/components/schemas/ProductsVariantViewModelV5ChannelMetadataItems
          description: >-
            Platform-specific metadata for sales channels (e.g., Amazon ASIN,
            Shopify product IDs)
        compliance:
          $ref: '#/components/schemas/Products.ComplianceViewModel'
      title: Products.VariantInternalViewModelV5
    ProductsProductViewModelV5VariantsItems:
      oneOf:
        - $ref: '#/components/schemas/Products.VariantViewModelV5'
        - $ref: '#/components/schemas/Products.VariantInternalViewModelV5'
      title: ProductsProductViewModelV5VariantsItems
    Products.ProductViewModelV5:
      type: object
      properties:
        created_on:
          type: string
          format: date-time
          description: Timestamp when the product was created
        id:
          type: integer
          format: int64
          description: Unique identifier for the product
        name:
          type:
            - string
            - 'null'
          description: Product name
        taxonomy:
          $ref: '#/components/schemas/Products.TaxonomyInformationViewModel'
          description: Product categorization information including category hierarchy
        type:
          type:
            - string
            - 'null'
          description: Product type (e.g., 'Regular' or 'Bundle')
        updated_on:
          type:
            - string
            - 'null'
          format: date-time
          description: Timestamp when the product was last updated
        user_id:
          type: integer
          format: int64
          description: ID of the user who owns this product
        variants:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/ProductsProductViewModelV5VariantsItems'
          description: >-
            List of variants belonging to this product. Each variant represents
            a specific SKU.
      title: Products.ProductViewModelV5
  securitySchemes:
    PAT:
      type: http
      scheme: bearer
      description: Authentication using Personal Access Token (PAT) token
    OAuth2:
      type: http
      scheme: bearer
      description: OAuth2 authentication using JWT tokens

```

## SDK Code Examples

```python Products_mergeVariants_example
import requests

url = "https://sandbox-api.shipbob.com/2025-07/variant/variantId:merge"

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

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

print(response.json())
```

```javascript Products_mergeVariants_example
const url = 'https://sandbox-api.shipbob.com/2025-07/variant/variantId: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 Products_mergeVariants_example
package main

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

func main() {

	url := "https://sandbox-api.shipbob.com/2025-07/variant/variantId: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 Products_mergeVariants_example
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.shipbob.com/2025-07/variant/variantId: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 Products_mergeVariants_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

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

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

$client = new \GuzzleHttp\Client();

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

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

```csharp Products_mergeVariants_example
using RestSharp;

var client = new RestClient("https://sandbox-api.shipbob.com/2025-07/variant/variantId: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 Products_mergeVariants_example
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://sandbox-api.shipbob.com/2025-07/variant/variantId: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()
```