Skip to content

Create Product

POST
/api/Products
curl --request POST \
--url https://example.com/api/Products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "merchantId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "status": "Active", "iconBg": "example", "iconHoverBorder": "example", "subscriberIcon": "Users" }'

Creates a new product. Plans are added separately via the plans endpoints.

POST /api/products
{
    "merchantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "Sourdough Subscription",
    "description": "Weekly loaf of fresh sourdough.",
    "status": "Active",
    "iconBg": "bg-amber-100",
    "subscriberIcon": "Users"
}

Product creation payload.

object
merchantId
required
string format: uuid
name
required
string
>= 1 characters <= 200 characters
description
string
nullable <= 1000 characters
status
string
Allowed values: Active Seasonal Archived
iconBg
string
nullable <= 100 characters
iconHoverBorder
string
nullable <= 100 characters
subscriberIcon
string
Allowed values: Users ShoppingCart

Product created successfully.

Media type application/json
object
id
string format: uuid
merchantId
string format: uuid
name
string
nullable
description
string
nullable
status
string
Allowed values: Active Seasonal Archived
iconBg
string
nullable
iconHoverBorder
string
nullable
subscriberIcon
string
Allowed values: Users ShoppingCart
subscriberCount
integer format: int32
plans
Array<object>
nullable
object
id
string format: uuid
name
string
nullable
description
string
nullable
price
number format: double
frequency
string
Allowed values: OneOff Daily Weekly Fortnightly Monthly Quarterly Yearly
isActive
boolean
isPublic
boolean
createdAt
string format: date-time
updatedAt
string format: date-time
Example
{
"status": "Active",
"subscriberIcon": "Users",
"plans": [
{
"frequency": "OneOff"
}
]
}

Validation failed — check the errors object.

Media type application/json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
key
additional properties
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}