---
title: "Create a bundle"
method: POST
path: "/v3/bundles"
tags: ["Business Bundles"]
---

# Create a bundle

`POST /v3/bundles`

Requires the `bundle:create` scope. Creates a new bundle with the provided data.

## Request body

- BundleCreateRequest
  - `bundle_price_options` object[] — List of Bundle Price Options
    - `name` string, required — Name
    - `price` number, float, required — Price (including tax)
    - `slug` string — Slug
  - `bundlelines` object[] — List of Bundle Lines
    - `quantity` integer, required — Quantity of the variant in the bundle line
    - `variant_id` integer, required — Variant ID
  - `custom_id` string — Custom Identifier
  - `description` string — Description
  - `images` string[] — List of Image URLs
  - `meta_thumbnail` string, uri — Meta Thumbnail URL
  - `name` string, required — Name
  - `public_name` string, required — Public Name
  - `rich_description` string — Rich Description
  - `weight_bump` integer — Weight Bump

## Response `200`

Bundle created successfully

- Bundle
  - `bundle_price_options` object[] — List of Bundle Price Options
    - `form_displays` object[] — List of form displays associated with the bundle price option
      - `id` integer — Form Display ID
      - `page_display` object
        - `id` integer — Page Display ID
    - `id` integer — Bundle Price Option ID
    - `name` string — Name
    - `price` number, float — Price (including tax)
    - `price_bt` number, float — Price before tax
    - `slug` string — Slug
    - `stores` object[] — List of stores where the bundle price option is available
      - `custom_domain` object
        - `full_url` string, uri — Full URL
        - `id` integer — Custom Domain ID
        - `is_verified` boolean — Is Verified
      - `id` integer — Store ID
      - `name` string — Store name
    - `unique_id` string — Bundle Price Option Unique ID
    - `upsell_form_displays` object[] — sell form displays associated with the bundle price option
      - `id` integer — Form Display ID
      - `page_display` object
        - `id` integer — Page Display ID
  - `bundlelines` object[] — List of Bundle Lines with Product details
    - `id` integer — Bundle Line ID
    - `quantity` integer — Quantity of the variant in the bundle line
    - `subtotal` string, decimal — Subtotal price for the bundle line (variant price * quantity)
    - `variant` object
      - `cogs` number — Cost of Goods Sold
      - `price_bt` number — Price before tax
      - `validity_period_unit` 'day' | 'week' | 'month' | 'year' — Unit of the period
      - `display` string — Display name for the variant
      - `option1_value` string — Value of the first product option
      - `image_configs` object — Objects of config for each image in the same variant
      - `reseller_price_bt` number — Reseller price before tax
      - `option2_value` string — Value of the second product option
      - `reseller_price` number — Reseller price of the variant
      - `fullname` string — Full name of the variant
      - `validity_period` integer — Validity period for one time variants
      - `uuid` string — Variant UUID
      - `sku` string — Stock Keeping Unit
      - `digital_product_files` object[] — List of digital product files associated with the variant
        - `content_type` string — MIME type of the digital product file
        - `id` integer — Digital product file primary key
        - `name` string — File name of the digital product file
        - `size_in_bytes` integer — Size of the digital product file in bytes
        - `url` string, uri — URL to access the digital product file
      - `product_name` string — Name of the associated product
      - `item_type` 'physical' | 'digital' | 'course' | 'license' | 'subscription' — Type of the product item
      - `pricing_type` 'one_time' | 'recurring' — Type of the product pricing
      - `self_file_urls` string[] — List of self file URLs associated with the variant
      - `name` string — Full name of the variant
      - `id` integer — Variant primary key
      - `unique_id` string — Variant unique identifier
      - `cogs_bt` number — Cost of Goods Sold before tax
      - `currency` 'IDR' — The currency code for the subscription item price.
      - `price` number — Price of the variant
      - `images` string[] — List of image URLs associated with the variant
      - `weight` integer — Weight of the variant in grams
      - `is_checked` boolean — Mark variant as sellable
      - `interval_count` integer — Interval count for recurring variants
      - `last_updated_at` string, date-time — Timestamp when the variant was last updated
      - `option3_value` string — Value of the third product option
      - `interval` 'day' | 'week' | 'month' | 'year' — Unit of the period
      - `metadata` object — Additional metadata associated with the variant
      - `product` object
        - `business` object
          - `account_holder` string — Name of the account holder
          - `email` string, email — Email address of the business
          - `id` integer — Business ID
          - `is_banned` boolean — Is the business banned?
          - `logo` string, uri — URL to the business logo
          - `unique_id` string — Unique identifier for the business
          - `username` string — Username of the business
        - `description` string — Description
        - `display` string — Product name for display
        - `id` integer — Product ID
        - `is_inventory` boolean — Is Inventory
        - `is_multiple` boolean — Is Multiple
        - `is_product_sharing` boolean — Is Product Sharing
        - `item_type` 'physical' | 'digital' | 'course' | 'license' | 'subscription' — Type of the product item
        - `item_type_name` string — Item Type Name
        - `name` string — Product Name
        - `option1_name` string — Option 1 Name
        - `option2_name` string — Option 2 Name
        - `option3_name` string — Option 3 Name
        - `uuid` string — Product UUID
      - `created_at` string, date-time — Timestamp when the variant was created
      - `is_editable` boolean — Indicates if the variant is editable
  - `business` object
    - `account_holder` string — Name of the account holder
    - `email` string, email — Email address of the business
    - `id` integer — Business ID
    - `is_banned` boolean — Is the business banned?
    - `logo` string, uri — URL to the business logo
    - `unique_id` string — Unique identifier for the business
    - `username` string — Username of the business
  - `created_at` string, date-time — Creation timestamp
  - `created_by` object
    - `aff_code` string — Affiliate code of the user
    - `avatar` string, uri — URL to user avatar
    - `email` string, email — User email
    - `fullname` string — User full name
    - `id` integer — User ID
    - `phone` string — User phone number
  - `custom_id` string — Custom Identifier
  - `description` string — Description
  - `id` integer — Bundle ID
  - `images` string[] — List of Image URLs
  - `is_bundle_sharing` boolean — Is Bundle Sharing Enabled
  - `labels` object[] — List of labels associated with the product
    - `name` string — Label name
  - `last_updated_at` string, date-time — Last update timestamp
  - `last_updated_by` object
    - `aff_code` string — Affiliate code of the user
    - `avatar` string, uri — URL to user avatar
    - `email` string, email — User email
    - `fullname` string — User full name
    - `id` integer — User ID
    - `phone` string — User phone number
  - `meta_thumbnail` string, uri — Meta Thumbnail URL
  - `name` string — Name
  - `public_name` string — Public Name
  - `rich_description` string — Rich Description
  - `weight_bump` integer — Weight Bump

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/scalev/apis/nexus-commerce-api.md) · [All operations](https://skmtc.net/scalev/apis/nexus-commerce-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/scalev/nexus-commerce-api/versions/730030bd6477/schema)
