Skip to main content
POST
Create a product

Overview

Create a new product with one or more variants. Products are the foundation of your subscription catalog—they define what customers can subscribe to, at what prices, and with what configurations.
This endpoint uses upsert behavior: if a product with the same productSku already exists, it will be updated instead of creating a duplicate.

Common Use Cases

New Product Launch

Add new products to your catalog when expanding your offering

Integration Sync

Sync products from your e-commerce platform or inventory system

Catalog Migration

Migrate products from another subscription platform

Partner Catalog

Onboard products from new suppliers or partners

Minimal Request Example

Create a simple product with one variant:

Complete Request Example

Product with multiple variants for different configurations:

Product Fields

Variant Fields

Pricing Array Format

Each pricing tier in the pricing array:

Pricing Strategy

Set monthly prices based on your cost recovery goals:
Use shorter contract lengths for higher monthly prices (faster cost recovery) and longer contracts for lower monthly prices (better customer value).

Variant SKU Best Practices

Create predictable, searchable SKUs:

Upsert Behavior

When you create a product with an existing productSku:
  1. Product fields are updated with new values
  2. Existing variants (matching SKU) are updated
  3. New variants (new SKU) are added
  4. Missing variants (not in request) remain unchanged
To remove a variant, use the variant status update endpoint to set it to inactive. Variants are never automatically deleted.

Error Handling

Authorizations

Authorization
string
header
required

API key obtained from FlexPortal dashboard

Headers

Tenant-ID
string
required

Your tenant identifier

Body

application/json
productSku
string
required
Minimum string length: 1
name
string
required
Minimum string length: 1
specification
string
required
Minimum string length: 1
category
string
required
Minimum string length: 1
brand
string
required
Minimum string length: 1
variants
object[]
required
Minimum array length: 1
description
string
images
string<uri>[]

Response

Product created

success
enum<boolean>
required
Available options:
true
message
string
required
productId
string
required
productSku
string
required
operation
enum<string>
required
Available options:
created,
updated
variantResults
object[]
required