---
title: "Add one product option with an initial value"
method: POST
path: "/v3/products/{product_id}/add-option"
tags: ["Business Products"]
---

# Add one product option with an initial value

`POST /v3/products/{product_id}/add-option`

## Request

- Base URL: `https://api.scalev.com`
- URL: `https://api.scalev.com/v3/products/{product_id}/add-option`
- Auth: one of:
  - HTTP bearer
  - API key in header `authorization`

Requires the `product:update` scope. Sets the next empty product option name and applies one initial option value to every active variant in one transaction. This does not create, delete, or clone variants.

## Request body

- AddProductOptionRequest
  - `name` string, required: Product option name to place in the next empty option slot.
  - `value` string, required: Initial option value applied to every active variant.

## Response `200`

Product updated successfully

- Product
  - `variants_count` integer: Variants Count
  - `display` string: Product name for display
  - `option1_name` string: Option 1 Name
  - `variants` object[]
    - `cogs` number: Cost of Goods Sold
    - `price_bt` number: Price Before Tax
    - `validity_period_unit` 'day' | 'week' | 'month' | 'year': Unit of the period
    - `option1_value` string: Option 1 Value
    - `reseller_price_bt` number: Reseller Price Before Tax
    - `option2_value` string: Option 2 Value
    - `reseller_price` number: Reseller Price
    - `fullname` string: Variant Fullname
    - `validity_period` integer: Validity period for one time variants
    - `uuid` string: Variant UUID
    - `rich_description` string: Variant Rich Description
    - `sku` string: SKU
    - `digital_product_files` object[]
      - `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: Product Name
    - `item_type` 'physical' | 'digital' | 'course' | 'license' | 'subscription': Type of the product item
    - `pricing_type` 'one_time' | 'recurring': Type of the product pricing
    - `upsell_form_displays` object[]
      - `id` integer: Form Display ID
      - `page_display` object
        - `id` integer: Page Display ID
    - `description` string: Variant Description
    - `self_file_urls` string[]
    - `name` string: Variant Name
    - `id` integer: Variant ID
    - `unique_id` string: Variant Unique ID
    - `cogs_bt` number: Cost of Goods Sold Before Tax
    - `currency` 'IDR': The currency code for the subscription item price.
    - `price` number: Price
    - `images` string[]
    - `weight` integer: Weight
    - `form_displays` object[]
      - `id` integer: Form Display ID
      - `page_display` object
        - `id` integer: Page Display ID
    - `is_checked` boolean: Mark variant as sellable
    - `is_discussion_active` boolean: Variant discussion capability flag
    - `is_email_notification_active` boolean: Variant email notification capability flag
    - `is_file_enabled` boolean: Variant file delivery capability flag
    - `is_license_enabled` boolean: Variant license capability flag
    - `is_lms_enabled` boolean: Variant LMS capability flag
    - `interval_count` integer: Interval count for recurring variants
    - `last_updated_at` string, date-time
    - `product_id` integer: Product ID
    - `option3_value` string: Option 3 Value
    - `interval` 'day' | 'week' | 'month' | 'year': Unit of the period
    - `metadata` object
    - `created_at` string, date-time
    - `is_editable` boolean: 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
  - `is_inventory` boolean: Is Inventory
  - `uuid` string: Product UUID
  - `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
  - `rich_description` string: Rich Description
  - `affiliate_pro_commission_rate` string: Affiliate Pro Commission Rate (%)
  - `taxonomy` object
    - `full_path` string: Full Path
    - `id` integer: Taxonomy ID
    - `level_1` string: Level 1
    - `level_2` string: Level 2
    - `level_3` string: Level 3
    - `level_4` string: Level 4
    - `level_5` string: Level 5
    - `level_6` string: Level 6
    - `level_7` string: Level 7
  - `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
  - `item_type` 'physical' | 'digital' | 'course' | 'license' | 'subscription': Type of the product item
  - `is_affiliate_pro_enabled` boolean: Is Affiliate Pro Enabled
  - `item_type_name` string: Item Type Name
  - `description` string: Description
  - `name` string: Product Name
  - `id` integer: Product ID
  - `option2_name` string: Option 2 Name
  - `is_product_sharing` boolean: Is Product Sharing
  - `warehouses` object[]
    - `id` integer: Warehouse ID
    - `name` string: Name of the warehouse
  - `is_affiliate_auto_accept` boolean: Is Affiliate Auto Accept
  - `meta_thumbnail` string, uri: Meta Thumbnail
  - `product_mailketing_lists` object[]
    - `mailketing_list` object
      - `id` integer: Mailketing List ID
      - `list` string: Mailketing List Name
      - `list_name` string: Mailketing List Name
    - `order_status` 'draft' | 'pending' | 'confirmed' | 'in_process' | 'ready' | 'shipped' | 'completed' | 'canceled' | 'rts' | 'closed': Order status
  - `is_affiliate_enabled` boolean: Is Affiliate Enabled
  - `images` string[]
  - `is_multiple` boolean: Is Multiple
  - `labels` object[]
    - `name` string: Label name
  - `option3_name` string: Option 3 Name
  - `last_updated_at` string, date-time
  - `stores` object[]
    - `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
  - `partnership_sales_letter` string: Partnership sales letter for affiliate/reseller promotion
  - `slug` string: Product Slug
  - `affiliate_commission_rate` string: Affiliate Commission Rate (%)
  - `product_birdsend_sequences` object[]
    - `birdsend_sequence` object
      - `active` boolean: Indicates if the Birdsend sequence is active
      - `form_id` integer: Identifier of the associated form
      - `id` integer: Birdsend sequence primary key
      - `name` string: Name of the Birdsend sequence
      - `sequence_id` integer: Identifier of the associated sequence
      - `type` 'sequence' | 'form': Type of the Birdsend sequence (either 'sequence' or 'form')
    - `order_status` 'draft' | 'pending' | 'confirmed' | 'in_process' | 'ready' | 'shipped' | 'completed' | 'canceled' | 'rts' | 'closed': Order status
  - `public_name` string: Product Public Name
  - `created_at` string, date-time

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found

---

[API](https://skmtc.dev/scalev/apis/nexus-commerce-api.md) - [All operations](https://skmtc.dev/scalev/apis/nexus-commerce-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scalev/apis/nexus-commerce-api/revisions/6b9152f04622?raw)
