POST
/v1/product-variantsCreates a new product variant for a product. Use this endpoint when adding variant options (e.g., sizes, colors) to products. Requires ProductVariantWrite permission on the parent product's organization. The variant will be created with the provided details including name, price, SKU, options, and inventory quantity.
Request Body
Fields in the request body
Required
| Name | Type | Description |
|---|---|---|
description | string | Description of the variant |
name | string | Name of the variant |
options | Variant options (size, color, etc.) | |
price | Price of this variant | |
productId | ProductPubId | Product this variant belongs to |
productImages | array<string> | URLs to product images for this variant |
sku | string | Stock keeping unit (SKU) identifier |
Optional
| Name | Type | Description |
|---|---|---|
discountPercentage | - | |
externalId | string | External ID from integrated systems (Shopify, etc.) |
inventoryQuantity | integer | Initial inventory quantity (None means inventory tracking is disabled) |
productYear | integer | Product model year (e.g., 2024, 2025) |
Response Data
Fields returned in the response
Always Present
| Name | Type | Description |
|---|---|---|
createdAt | string (date-time) | Timestamp when the variant was created |
description | string | Description of the variant |
id | ProductVariantPubId | Public-facing unique identifier for the product variant |
isWaitlisted | boolean | Whether this variant is currently waitlisted |
name | string | Name of the variant |
options | Variant options (size, color, etc.) | |
price | Price of this variant | |
productImages | array<string> | URLs to product images for this variant |
sku | string | Stock keeping unit (SKU) identifier |
status | Status of the variant (active, inactive, or archived) | |
stripeId | string | Stripe product variant ID for payment processing |
updatedAt | string (date-time) | Timestamp when the variant was last updated |
organizationId | OrganizationPubId | Public ID of the organization (resolved from internal organization_id) |
productId | ProductPubId | Public ID of the parent product (resolved from internal product_id) |
Optional
| Name | Type | Description |
|---|---|---|
discountPercentage | - | |
externalId | string | External ID from integrated systems (Shopify, etc.) |
inventoryQuantity | integer | Current inventory quantity (None means inventory tracking is disabled) |
productYear | integer | Product model year (e.g., 2024, 2025) |
POST
/v1/product-variantsRequest
curl https://api.thesweetspot.com/v1/product-variants \
-X POST \
-H "Content-Type: application/json" \
-d '{
"description": "string",
"discountPercentage": null,
"externalId": null,
"inventoryQuantity": null,
"name": "string",
"options": [
null
],
"price": "string",
"productId": "string",
"productImages": [
"string"
],
"productYear": null,
"sku": "string"
}'Response
{
"createdAt": "2026-02-04T02:25:13.277Z",
"description": "string",
"id": null,
"isWaitlisted": false,
"name": "string",
"options": null,
"price": null,
"productImages": [
null
],
"sku": "string",
"status": null,
"stripeId": "string",
"updatedAt": "2026-02-04T02:25:13.277Z",
"organizationId": "string",
"productId": "string"
}